diff --git a/DEPS b/DEPS
index be4fa968..c573caef 100644
--- a/DEPS
+++ b/DEPS
@@ -209,11 +209,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '94d3dd82f350a334d9b2e75a83ce7f61d4a7b12e',
+  'skia_revision': '7b8f14991dae5348298f08680b3282846f86656f',
   # 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': '5de840dcd94b951872ba080c84d683d6037eca2f',
+  'v8_revision': '8331bcbc3fbf96446869222c1440e878c0645688',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -221,7 +221,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': '1800d1d92bca343164f1fc46dfe04363334e28f7',
+  'angle_revision': 'd4c9e01cf7c3abbc38a0344f413390929099e884',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -288,7 +288,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling devtools-frontend
   # and whatever else without interference from each other.
-  'devtools_frontend_revision': 'ca8de4b537e1738fecdc8f76bdf80dd9012da8fe',
+  'devtools_frontend_revision': 'b303b6fb2eab20988f8e3ac995bb30ea1c65b67e',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libprotobuf-mutator
   # and whatever else without interference from each other.
@@ -328,7 +328,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'dawn_revision': '02336e6f9993f02b8c4bff868b1b9827a59accfa',
+  'dawn_revision': 'd47c27ba107de659c7661453a42dbfbf37f78d35',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -573,7 +573,7 @@
   },
 
   'src/ios/third_party/material_components_ios/src': {
-      'url': Var('chromium_git') + '/external/github.com/material-components/material-components-ios.git' + '@' + 'c9904413f7b4bfcc8b8a2949b8b4809cd2a1c3b5',
+      'url': Var('chromium_git') + '/external/github.com/material-components/material-components-ios.git' + '@' + 'dfe9dcb58ef177a13cb6b1f28f47c88eeba401cd',
       'condition': 'checkout_ios',
   },
 
@@ -1174,7 +1174,7 @@
     Var('chromium_git') + '/chromium/llvm-project/compiler-rt/lib/fuzzer.git' + '@' +  Var('libfuzzer_revision'),
 
   'src/third_party/libaddressinput/src':
-    Var('chromium_git') + '/external/libaddressinput.git' + '@' + 'a09973635582a05cea3c83b167700129544565d1',
+    Var('chromium_git') + '/external/libaddressinput.git' + '@' + '3b8ee157a8f3536bbf5ad2448e9e3370463c1e40',
 
   'src/third_party/libaom/source/libaom':
     Var('aomedia_git') + '/aom.git' + '@' +  '6c93db7ff63430d2e5dcdfc42e84e3a0514da608',
@@ -1338,7 +1338,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + 'e122069ff360b18b0d2a34e8286cc610892eaa71',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + '7653b6f2efb670f740b45178aac4f58258776b6e',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1552,7 +1552,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '9dd7f1e157c609c8056f7f8b9c04e627611ef937',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '9bd245785791aa9f22296d7c7e23c93a5a9e8e49',
+    Var('webrtc_git') + '/src.git' + '@' + '6674b9879a94163c2922d5a8a85509edf64dfd04',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1599,7 +1599,7 @@
       'packages': [
         {
           'package': 'skia/tools/goldctl/mac-amd64',
-          'version': 'Ipkmq4bl5d7VmPVlEonzZMPLnHxMr-LaDFi8Dz_r8-8C',
+          'version': 'oMHIiIQ0wBDzq1EgmQYV6nFbvCXgLdD0Qyxv_zFy1OsC',
         },
       ],
       'dep_type': 'cipd',
diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn
index ffc0e75..6b49e5e 100644
--- a/android_webview/BUILD.gn
+++ b/android_webview/BUILD.gn
@@ -664,6 +664,7 @@
     "//components/metrics:metrics_java",
     "//components/viz:viz_java",
     "//gpu/config:config_java",
+    "//services/network/public:features_java",
     "//third_party/androidx:androidx_annotation_annotation_java",
     "//third_party/blink/public/common:common_java",
     "//ui/android:ui_features_java",
diff --git a/android_webview/browser/gfx/browser_view_renderer.cc b/android_webview/browser/gfx/browser_view_renderer.cc
index c4f8ab8..f078c6e 100644
--- a/android_webview/browser/gfx/browser_view_renderer.cc
+++ b/android_webview/browser/gfx/browser_view_renderer.cc
@@ -414,7 +414,7 @@
 
 bool BrowserViewRenderer::OnDrawSoftware(SkCanvas* canvas) {
   did_invalidate_since_last_draw_ = false;
-  return CanOnDraw() && CompositeSW(canvas);
+  return CanOnDraw() && CompositeSW(canvas, /*software_canvas=*/true);
 }
 
 bool BrowserViewRenderer::NeedToDrawBackgroundColor() {
@@ -442,7 +442,7 @@
                                                    gfx::Vector2dF());
       compositor_->DidChangeRootLayerScrollOffset(
           gfx::ScrollOffset(scroll_offset_unscaled_));
-      CompositeSW(rec_canvas);
+      CompositeSW(rec_canvas, /*software_canvas=*/false);
     }
     compositor_->DidChangeRootLayerScrollOffset(
         gfx::ScrollOffset(scroll_offset_unscaled_));
@@ -914,9 +914,9 @@
   client_->PostInvalidate();
 }
 
-bool BrowserViewRenderer::CompositeSW(SkCanvas* canvas) {
+bool BrowserViewRenderer::CompositeSW(SkCanvas* canvas, bool software_canvas) {
   DCHECK(compositor_);
-  return compositor_->DemandDrawSw(canvas);
+  return compositor_->DemandDrawSw(canvas, software_canvas);
 }
 
 std::string BrowserViewRenderer::ToString() const {
diff --git a/android_webview/browser/gfx/browser_view_renderer.h b/android_webview/browser/gfx/browser_view_renderer.h
index 0ace7d7..3ae03399 100644
--- a/android_webview/browser/gfx/browser_view_renderer.h
+++ b/android_webview/browser/gfx/browser_view_renderer.h
@@ -188,7 +188,7 @@
   void SetActiveCompositor(content::SynchronousCompositor* compositor);
   void SetTotalRootLayerScrollOffset(const gfx::Vector2dF& new_value_dip);
   bool CanOnDraw();
-  bool CompositeSW(SkCanvas* canvas);
+  bool CompositeSW(SkCanvas* canvas, bool software_canvas);
   std::unique_ptr<base::trace_event::ConvertableToTraceFormat>
   RootLayerStateAsValue(const gfx::Vector2dF& total_scroll_offset_dip,
                         const gfx::SizeF& scrollable_size_dip);
diff --git a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java
index 870c866..a1e6712 100644
--- a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java
+++ b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java
@@ -11,6 +11,7 @@
 import org.chromium.components.viz.common.VizFeatures;
 import org.chromium.gpu.config.GpuFeatures;
 import org.chromium.gpu.config.GpuSwitches;
+import org.chromium.services.network.NetworkServiceFeatures;
 import org.chromium.ui.base.UiFeatures;
 
 /**
@@ -126,5 +127,7 @@
                     "Enables the Form Controls visual improvements and dark mode."),
             Flag.baseFeature(
                     BlinkFeatures.LAYOUT_NG_TABLE, "Enables Blink's next generation table layout."),
+            Flag.baseFeature(
+                    NetworkServiceFeatures.TRUST_TOKENS, "Enables the prototype Trust Tokens API."),
     };
 }
diff --git a/ash/strings/ash_strings_af.xtb b/ash/strings/ash_strings_af.xtb
index 1669a3c..2af6d49 100644
--- a/ash/strings/ash_strings_af.xtb
+++ b/ash/strings/ash_strings_af.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistent (laai tans …)</translation>
 <translation id="1838895407229022812">Aandbeligting is af.</translation>
-<translation id="1850504506766569011">Wi-Fi is afgeskakel.</translation>
 <translation id="1864454756846565995">USB C-toestel (poort aan agterkant)</translation>
 <translation id="1882814835921407042">Geen selnetwerk nie</translation>
 <translation id="1882897271359938046">Weerspieëling na <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Gebruikerinstellings</translation>
 <translation id="3217205077783620295">Volume is aan. Wissel om oudio te demp.</translation>
 <translation id="3226991577105957773">+nog <ph name="COUNT" /></translation>
-<translation id="3236488194889173876">Geen selnetwerk beskikbaar nie</translation>
 <translation id="3249513730522716925">Venster <ph name="WINDOW_TITLE" /> is geskuif van lessenaar <ph name="ACTIVE_DESK" /> af na lessenaar <ph name="TARGET_DESK" /> toe</translation>
 <translation id="3255483164551725916">Wat kan jy doen?</translation>
 <translation id="3269597722229482060">Regsklik</translation>
@@ -585,7 +583,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> is aan.</translation>
 <translation id="5947494881799873997">Stel terug</translation>
 <translation id="595202126637698455">Prestasie-nasporing geaktiveer</translation>
-<translation id="5957083217255311415">Mobiele data is afgeskakel.</translation>
 <translation id="5958529069007801266">Gebruiker onder toesig</translation>
 <translation id="5960825221082587934">Laat Assistent vir jou inligting vir jou keuse wys, soos definisie, vertaling of eenheidomskakeling.</translation>
 <translation id="5977415296283489383">Oorfone</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">Die kortpad om die invoeropsies se kieslysborrel op die rak te wys, het verander. Gebruik asseblief <ph name="NEW_SHORTCUT" /> in plaas van <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Lessenaar <ph name="DESK_TITILE" /> is geaktiveer</translation>
 <translation id="8452135315243592079">Verlore SIM-kaart</translation>
-<translation id="8454013096329229812">Wi-Fi is aangeskakel.</translation>
 <translation id="8462305545768648477">Maak Hardoplees toe</translation>
 <translation id="847056008324733326">Vertoonskaalinstellings</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> het <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_am.xtb b/ash/strings/ash_strings_am.xtb
index 5122e4d..ed180fe1 100644
--- a/ash/strings/ash_strings_am.xtb
+++ b/ash/strings/ash_strings_am.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">ኤተርኔት፦ <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">ረዳት (በመጫን ላይ...)</translation>
 <translation id="1838895407229022812">የምሽት ብርሃን ጠፍቷል።</translation>
-<translation id="1850504506766569011">Wi-Fi ጠፍቷል።</translation>
 <translation id="1864454756846565995">USB-C መሣሪያ (የኋላ ወደብ)</translation>
 <translation id="1882814835921407042">ምንም ተንቀሳቃሽ ስልክ አውታረ መረብ የለም</translation>
 <translation id="1882897271359938046">ወደ <ph name="DISPLAY_NAME" /> በማንጸባረቅ ላይ</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">የተጠቃሚ ቅንብሮች</translation>
 <translation id="3217205077783620295">ድምፅ መጠን በርቷል፣ መቀያየር ኦዲዮን ድምፀ ከል ያደርገዋል።</translation>
 <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="3255483164551725916">ምን ማድረግ ይችላሉ?</translation>
 <translation id="3269597722229482060">የቀኝ ጠቅታ</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> በርቷል።</translation>
 <translation id="5947494881799873997">አድህር</translation>
 <translation id="595202126637698455">አፈጻጸም መከታተያ ነቅቷል</translation>
-<translation id="5957083217255311415">የተንቀሳቃሽ ስልክ ውሂብ ጠፍቷል።</translation>
 <translation id="5958529069007801266">ክትትል የሚደረግበት ተጠቃሚ</translation>
 <translation id="5960825221082587934">ረዳት ለእርስዎ ምርጫ እንደ ፍቺ፣ ትርጉም ወይም አሃድ ልወጣ የመሳሰሉ መረጃዎችን እንዲያሳይ ይፍቀዱ።</translation>
 <translation id="5977415296283489383">ጆሮ ማዳጀጫ</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">በመደርደሪያው ውስጥ የግቤት አማራጮች ምናሌ አረፋን ለማሳየት የሚሆነው አቋራጭ ተለውጧል። እባክዎ በ<ph name="OLD_SHORTCUT" /> ምትክ <ph name="NEW_SHORTCUT" />ን ይጠቀሙ።</translation>
 <translation id="8444246603146515890">ዴስክ <ph name="DESK_TITILE" /> ገቢር ተደርጓል</translation>
 <translation id="8452135315243592079">ሲም ካርድ ይጎድላል</translation>
-<translation id="8454013096329229812">Wi-Fi በርቷል።</translation>
 <translation id="8462305545768648477">ለመናገር ምረጥን ይዝጉ</translation>
 <translation id="847056008324733326">የልኬት ቅንብሮችን አሳይ</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" /> አለው።</translation>
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb
index c598d22..4d972f63 100644
--- a/ash/strings/ash_strings_ar.xtb
+++ b/ash/strings/ash_strings_ar.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">الإيثرنت: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">المساعد (جارٍ التحميل...)</translation>
 <translation id="1838895407229022812">"الإضاءة الليلية" غير مفعّلة.</translation>
-<translation id="1850504506766569011">‏تم إيقاف Wi-Fi.</translation>
 <translation id="1864454756846565995">‏جهاز USB-C (المنفذ الخلفي)</translation>
 <translation id="1882814835921407042">شبكة الجوّال غير متاحة</translation>
 <translation id="1882897271359938046">نسخ إلى <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">إعدادات المستخدم</translation>
 <translation id="3217205077783620295">تم تفعيل الصوت، وسيؤدي التبديل إلى كتم الصوت</translation>
 <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="3255483164551725916">ما الإجراء المطلوب؟</translation>
 <translation id="3269597722229482060">النقر بزر الماوس الأيمن</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">ميزة <ph name="FEATURE_NAME" /> مُفعَّلة.</translation>
 <translation id="5947494881799873997">التراجع عن الإجراء</translation>
 <translation id="595202126637698455">تم تفعيل تتبع مستوى الأداء</translation>
-<translation id="5957083217255311415">تم إيقاف ميزة بيانات الجوّال.</translation>
 <translation id="5958529069007801266">مستخدم يخضع للإدارة</translation>
 <translation id="5960825221082587934">‏السماح لـ "مساعد Google" بعرض معلومات ذات صلة بالمحتوى الذي حدّدته مثل التعريف أو الترجمة أو تحويل الوحدات</translation>
 <translation id="5977415296283489383">السمّاعة</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">تم تغيير اختصار عرض الفقاعة التفسيرية لقائمة خيارات الإدخال في الرف. يُرجى استخدام <ph name="NEW_SHORTCUT" /> بدلاً من <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">تم تفعيل سطح المكتب <ph name="DESK_TITILE" />.</translation>
 <translation id="8452135315243592079">‏شريحة SIM مفقودة</translation>
-<translation id="8454013096329229812">‏تم تفعيل Wi-Fi.</translation>
 <translation id="8462305545768648477">إيقاف ميزة "سماع الاختيار"</translation>
 <translation id="847056008324733326">عرض إعدادات المقياس</translation>
 <translation id="8473301994082929012">الميزة <ph name="FEATURE_NAME" /> حالتها <ph name="FEATURE_STATE" /> في <ph name="ORGANIZATION_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb
index ede7058..aaf8952 100644
--- a/ash/strings/ash_strings_as.xtb
+++ b/ash/strings/ash_strings_as.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">ইথাৰনেট: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistant (ল’ড হৈ আছে...)</translation>
 <translation id="1838895407229022812">ৰাতিৰ লাইট অফ কৰা আছে।</translation>
-<translation id="1850504506766569011">ৱাই-ফাই অফ কৰা আছে।</translation>
 <translation id="1864454756846565995">USB-C ডিভাইচ (পিছফালে থকা পর্ট)</translation>
 <translation id="1882814835921407042">কোনো ম’বাইল নেটৱৰ্ক উপলব্ধ নহয়</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" />ৰ সৈতে মিৰ’ৰ কৰা হৈছে</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">ব্যৱহাৰকাৰীৰ ছেটিংসমূহ</translation>
 <translation id="3217205077783620295">ভলিউম অন কৰা আছে, ট’গল কৰিলে অডিঅ’ মিউট হ’ব।</translation>
 <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="3255483164551725916">আপুনি কি কৰিব পাৰে?</translation>
 <translation id="3269597722229482060">সোঁফালে ক্লিক কৰক</translation>
@@ -583,7 +581,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> অন কৰা আছে।</translation>
 <translation id="5947494881799873997">পূৰ্বাৱস্থালৈ নিয়ক</translation>
 <translation id="595202126637698455">কার্যদক্ষতা ট্ৰে’চ কৰাটো সক্ষম কৰা হৈছে</translation>
-<translation id="5957083217255311415">ম’বাইল ডেটা অফ কৰা হৈছে।</translation>
 <translation id="5958529069007801266">নিৰীক্ষণত থকা ব্যৱহাৰকাৰী</translation>
 <translation id="5960825221082587934">Assistantক আপুনি কৰা বাছনিটোৰ সংজ্ঞা, অনুবাদ অথবা একক ৰূপান্তৰণৰ দৰে তথ্য দেখুৱাবলৈ দিয়ক।</translation>
 <translation id="5977415296283489383">হেডফ’ন</translation>
@@ -880,7 +877,6 @@
 <translation id="8433977262951327081">শ্বেল্ফত ইনপুট বিকল্পৰ মেনু বাব্‌ল দেখুওৱা শ্বৰ্টকাটটো সলনি কৰা হৈছে। অনুগ্ৰহ কৰি <ph name="OLD_SHORTCUT" />ৰ পৰিৱৰ্তে <ph name="NEW_SHORTCUT" /> ব্যৱহাৰ কৰক।</translation>
 <translation id="8444246603146515890"><ph name="DESK_TITILE" /> ডেস্ক সক্রিয় কৰা হৈছে</translation>
 <translation id="8452135315243592079">কোনো ছিম কাৰ্ড নাই</translation>
-<translation id="8454013096329229812">ৱাই-ফাই অন কৰা হ’ল৷</translation>
 <translation id="8462305545768648477">কথা ক’বলৈ বাছনি কৰক সুবিধাটো বন্ধ কৰক</translation>
 <translation id="847056008324733326">ডিছপ্লে’ স্কে’লৰ ছেটিং</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" />ৰ <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />আছে।</translation>
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb
index 81d26aa2..08dfe9f0 100644
--- a/ash/strings/ash_strings_az.xtb
+++ b/ash/strings/ash_strings_az.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistent (yüklənir...)</translation>
 <translation id="1838895407229022812">Gecə işığı deaktivdir.</translation>
-<translation id="1850504506766569011">Wi-Fi deaktivdir.</translation>
 <translation id="1864454756846565995">USB-C cihazı (arxa port)</translation>
 <translation id="1882814835921407042">Mobil şəbəkə yoxdur</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> əks etdirilir</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">İstifadəçi ayarları</translation>
 <translation id="3217205077783620295">Səs səviyyəsi aktivdir, keçirdikdə audio səssiz ediləcək.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /></translation>
-<translation id="3236488194889173876">Heç bir mobil şəbəkə əlçatan deyil</translation>
 <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> pəncərəsi <ph name="ACTIVE_DESK" /> Masasından <ph name="TARGET_DESK" /> Masasına köçürüldü</translation>
 <translation id="3255483164551725916">Nə edə bilərsiniz?</translation>
 <translation id="3269597722229482060">Sağ düymə ilə toxunun</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> aktivdir.</translation>
 <translation id="5947494881799873997">Geri dönün</translation>
 <translation id="595202126637698455">Fəaliyyət izləməsi aktiv edildi</translation>
-<translation id="5957083217255311415">Mobil data deaktiv edildi.</translation>
 <translation id="5958529069007801266">Nəzarət olunan istifadəçi</translation>
 <translation id="5960825221082587934">Assistentin seçiminiz üçün izahat, tərcümə və ya vahidin çevrilməsi kimi məlumatları göstərməsinə imkan verin.</translation>
 <translation id="5977415296283489383">Qulaqlıq</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Daxiletmə seçimləri menyu qutusunu rəfdə göstərmək üçün qısayol dəyişilib. <ph name="OLD_SHORTCUT" /> əvəzinə <ph name="NEW_SHORTCUT" /> qısayolunu istifadə edin.</translation>
 <translation id="8444246603146515890">Masa <ph name="DESK_TITILE" /> aktiv edildi</translation>
 <translation id="8452135315243592079">SIM kart yoxdur</translation>
-<translation id="8454013096329229812">Wi-Fi aktivdir.</translation>
 <translation id="8462305545768648477">Seç və danış funksiyasını bağlayın</translation>
 <translation id="847056008324733326">Miqyaqs ayarlarını göstərin</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> <ph name="FEATURE_NAME" /> xüsusiyyətini <ph name="FEATURE_STATE" /> edib.</translation>
diff --git a/ash/strings/ash_strings_be.xtb b/ash/strings/ash_strings_be.xtb
index 8e2272a..278b187 100644
--- a/ash/strings/ash_strings_be.xtb
+++ b/ash/strings/ash_strings_be.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Памочнік (загружаецца...)</translation>
 <translation id="1838895407229022812">Начная падсветка выключана.</translation>
-<translation id="1850504506766569011">Wi-Fi выключаны.</translation>
 <translation id="1864454756846565995">Прылада USB-C (порт ззаду)</translation>
 <translation id="1882814835921407042">Мабільная сетка адсутнічае</translation>
 <translation id="1882897271359938046">Выконваецца адлюстраванне на дысплэй <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Налады карыстальніка</translation>
 <translation id="3217205077783620295">Гук уключаны, выключыць яго можна з дапамогай гэтага пераключальніка.</translation>
 <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="3255483164551725916">Што ты ўмееш?</translation>
 <translation id="3269597722229482060">Націснуць правай кнопкай мышы</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">Стан функцыі "<ph name="FEATURE_NAME" />": уключана.</translation>
 <translation id="5947494881799873997">Вярнуць</translation>
 <translation id="595202126637698455">Уключана трасіроўка прадукцыйнасці</translation>
-<translation id="5957083217255311415">Мабільная перадача даных выключана.</translation>
 <translation id="5958529069007801266">Падкантрольны карыстальнік</translation>
 <translation id="5960825221082587934">Дазволіць Памочніку паказваць інфармацыю пра вылучаны вамі тэкст: напрыклад, ён можа даць азначэнне, пераклад або перавесці адзінкі вымярэння.</translation>
 <translation id="5977415296283489383">Навушнікі</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Спалучэнне клавіш для паказу выплыўнога меню параметраў уводу на паліцы змянілася. Замест <ph name="OLD_SHORTCUT" /> выкарыстоўвайце <ph name="NEW_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Стол "<ph name="DESK_TITILE" />" актываваны</translation>
 <translation id="8452135315243592079">Адсутнічае SIM-карта</translation>
-<translation id="8454013096329229812">Wi-Fi уключаны.</translation>
 <translation id="8462305545768648477">Выйсці з функцыі "Чытаць уголас"</translation>
 <translation id="847056008324733326">Паказаць налады маштабу</translation>
 <translation id="8473301994082929012">Арганізацыя <ph name="ORGANIZATION_NAME" /> <ph name="FEATURE_STATE" /> функцыю "<ph name="FEATURE_NAME" />".</translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb
index 07158b98..ddb4376c 100644
--- a/ash/strings/ash_strings_bg.xtb
+++ b/ash/strings/ash_strings_bg.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Асистент (зарежда се...)</translation>
 <translation id="1838895407229022812">Функцията за нощно осветление е изключена.</translation>
-<translation id="1850504506766569011">Wi-Fi е изключен.</translation>
 <translation id="1864454756846565995">USB-C устройство (задният порт)</translation>
 <translation id="1882814835921407042">Няма мобилна мрежа</translation>
 <translation id="1882897271359938046">Дублира се на „<ph name="DISPLAY_NAME" />“</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Потребителски настройки</translation>
 <translation id="3217205077783620295">Звукът е включен. Превключването ще го спре.</translation>
 <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="3255483164551725916">„What can you do?“ („Какво можеш да правиш?“)</translation>
 <translation id="3269597722229482060">Кликване с десния бутон</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">„<ph name="FEATURE_NAME" />“ е включено.</translation>
 <translation id="5947494881799873997">Възстановяване</translation>
 <translation id="595202126637698455">Проследяването на ефективността е активирано</translation>
-<translation id="5957083217255311415">Мобилните данни са изключени.</translation>
 <translation id="5958529069007801266">Контролиран потребител</translation>
 <translation id="5960825221082587934">Позволяване на Асистент да показва информация за избраното от вас, като например определение, превод или преобразуване на мерни единици.</translation>
 <translation id="5977415296283489383">Слушалки</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Комбинацията за показване в лавицата на балончето с менюто за опциите за въвеждане е променена. Моля, използвайте <ph name="NEW_SHORTCUT" /> вместо <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Работен кът <ph name="DESK_TITILE" /> е активиран</translation>
 <translation id="8452135315243592079">SIM картата липсва</translation>
-<translation id="8454013096329229812">Wi-Fi е включен.</translation>
 <translation id="8462305545768648477">Затваряне на функцията „Прочитане на глас“</translation>
 <translation id="847056008324733326">Настройки за мащаба на показване</translation>
 <translation id="8473301994082929012">Функцията „<ph name="FEATURE_NAME" />“ е <ph name="FEATURE_STATE" /> от <ph name="ORGANIZATION_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb
index 15c2f6c0..7b08394 100644
--- a/ash/strings/ash_strings_bn.xtb
+++ b/ash/strings/ash_strings_bn.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">ইথারনেট: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">সহায়ক (লোড হচ্ছে...)</translation>
 <translation id="1838895407229022812">নাইট লাইট ফিচার বন্ধ করা আছে।</translation>
-<translation id="1850504506766569011">ওয়াই-ফাই বন্ধ আছে৷</translation>
 <translation id="1864454756846565995">USB-C ডিভাইস (পিছনের পোর্ট)</translation>
 <translation id="1882814835921407042">মোবাইল নেটওয়ার্ক নেই</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> তে প্রতিবিম্বিত হচ্ছে</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">ব্যবহারকারী সংক্রান্ত সেটিংস</translation>
 <translation id="3217205077783620295">ভলিউম চালু আছে, টগল করলে অডিও মিউট হয়ে যাবে।</translation>
 <translation id="3226991577105957773">+ আরও <ph name="COUNT" />টি</translation>
-<translation id="3236488194889173876">কোনো মোবাইল নেটওয়ার্ক উপলব্ধ নেই</translation>
 <translation id="3249513730522716925">Window <ph name="WINDOW_TITLE" /> ডেস্ক <ph name="ACTIVE_DESK" /> থেকে ডেস্ক <ph name="TARGET_DESK" />-এ সরানো হয়েছে</translation>
 <translation id="3255483164551725916">আপনি কি করতে পারেন?</translation>
 <translation id="3269597722229482060">ডানদিকের বোতামে ক্লিক করুন</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> চালু আছে।</translation>
 <translation id="5947494881799873997">ফেরান</translation>
 <translation id="595202126637698455">কার্য-সম্পাদনা ট্রেস করা সক্ষম রয়েছে</translation>
-<translation id="5957083217255311415">মোবাইল ডেটা বন্ধ করা আছে।</translation>
 <translation id="5958529069007801266">তত্ত্বাবধানে থাকা ব্যবহারকারী</translation>
 <translation id="5960825221082587934">আপনার বেছে নেওয়া আইটেমের জন্য Assistant-কে সংজ্ঞা, অনুবাদ বা ইউনিট রূপান্তরের মতো তথ্য দেখানোর অনুমতি দিন।</translation>
 <translation id="5977415296283489383">হেডফোন</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">শেল্ফে ইনপুট বিকল্পের মেনুর বুদবুদ দেখানোর শর্টকাটটি পরিবর্তন করা হয়েছে। অনুগ্রহ করে <ph name="OLD_SHORTCUT" /> এর পরিবর্তে <ph name="NEW_SHORTCUT" /> ব্যবহার করুন।</translation>
 <translation id="8444246603146515890">ডেস্ক <ph name="DESK_TITILE" /> অ্যাক্টিভেট করা হয়েছে</translation>
 <translation id="8452135315243592079">সিম কার্ড পাওয়া যাচ্ছে না</translation>
-<translation id="8454013096329229812">ওয়াই-ফাই চালু আছে৷</translation>
 <translation id="8462305545768648477">'বাছুন ও শুনুন' ফিচারটি বন্ধ করুন</translation>
 <translation id="847056008324733326">স্কেলের সেটিংস দেখান</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" />-এর <ph name="FEATURE_NAME" /> <ph name="FEATURE_STATE" />।</translation>
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb
index c6e201a..7859582 100644
--- a/ash/strings/ash_strings_bs.xtb
+++ b/ash/strings/ash_strings_bs.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Asistent (učitavanje...)</translation>
 <translation id="1838895407229022812">Noćno svjetlo je isključeno.</translation>
-<translation id="1850504506766569011">WiFi je isključen</translation>
 <translation id="1864454756846565995">USB-C uređaj (stražnji priključak)</translation>
 <translation id="1882814835921407042">Nema mobilne mreže</translation>
 <translation id="1882897271359938046">Preslikava se na <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Korisničke postavke</translation>
 <translation id="3217205077783620295">Zvuk je uključen. Deaktiviranjem će se isključiti zvuk.</translation>
 <translation id="3226991577105957773">i još <ph name="COUNT" /></translation>
-<translation id="3236488194889173876">Nije dostupna mobilna mreža</translation>
 <translation id="3249513730522716925">Prozor <ph name="WINDOW_TITLE" /> je premješten s radne površine <ph name="ACTIVE_DESK" /> na radnu površinu <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Šta sve možete uraditi?</translation>
 <translation id="3269597722229482060">Desni klik</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">Funkcija <ph name="FEATURE_NAME" /> je uključena.</translation>
 <translation id="5947494881799873997">Vrati</translation>
 <translation id="595202126637698455">Praćenje performansi je omogućeno</translation>
-<translation id="5957083217255311415">Prijenos podataka na mobilnoj mreži je isključen.</translation>
 <translation id="5958529069007801266">Korisnik pod nadzorom</translation>
 <translation id="5960825221082587934">Omogućite Asistentu da za vaš odabir prikazuje informacije kao što su definicije, prijevod ili pretvaranje mjerne jedinice.</translation>
 <translation id="5977415296283489383">Slušalica</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Promijenjena je prečica za prikaz balona menija s opcijama unosa na polici. Koristite <ph name="NEW_SHORTCUT" /> umjesto <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Radna površina <ph name="DESK_TITILE" /> je aktivirana</translation>
 <translation id="8452135315243592079">Nedostaje SIM kartica</translation>
-<translation id="8454013096329229812">WiFi je uključen.</translation>
 <translation id="8462305545768648477">Zatvorite funkciju Odaberite za govor</translation>
 <translation id="847056008324733326">Postavke razmjera prikaza</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> je funkciju <ph name="FEATURE_NAME" /> stavila u status <ph name="FEATURE_STATE" />.</translation>
diff --git a/ash/strings/ash_strings_ca.xtb b/ash/strings/ash_strings_ca.xtb
index f79e706..dba8744 100644
--- a/ash/strings/ash_strings_ca.xtb
+++ b/ash/strings/ash_strings_ca.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistent (s'està carregant...)</translation>
 <translation id="1838895407229022812">La funció Llum nocturna està desactivada.</translation>
-<translation id="1850504506766569011">La Wi-Fi està desactivada.</translation>
 <translation id="1864454756846565995">Dispositiu USB-C (port posterior)</translation>
 <translation id="1882814835921407042">No hi ha cap xarxa mòbil</translation>
 <translation id="1882897271359938046">S'està replicant <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Configuració d'usuari</translation>
 <translation id="3217205077783620295">El volum està activat. En commutar-lo, se silenciarà l'àudio.</translation>
 <translation id="3226991577105957773"><ph name="COUNT" /> més</translation>
-<translation id="3236488194889173876">No hi ha cap xarxa mòbil disponible</translation>
 <translation id="3249513730522716925">La finestra <ph name="WINDOW_TITLE" /> ha passat de l'escriptori <ph name="ACTIVE_DESK" /> a l'escriptori <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Què pots fer?</translation>
 <translation id="3269597722229482060">Clic amb el botó dret</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">La funció <ph name="FEATURE_NAME" /> està activada.</translation>
 <translation id="5947494881799873997">Reverteix</translation>
 <translation id="595202126637698455">Traça del rendiment activada</translation>
-<translation id="5957083217255311415">Les dades mòbils estan desactivades.</translation>
 <translation id="5958529069007801266">Usuari supervisat</translation>
 <translation id="5960825221082587934">Permet que l'Assistent mostri informació com ara la definició, la traducció o la conversió d'unitats associades a la teva selecció.</translation>
 <translation id="5977415296283489383">Auricular</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">La drecera per mostrar el quadre d'ajuda amb el menú d'opcions d'introducció al prestatge ha canviat. Fes servir <ph name="NEW_SHORTCUT" /> en lloc de la drecera <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">L'escriptori <ph name="DESK_TITILE" /> està activat</translation>
 <translation id="8452135315243592079">Falta la targeta SIM</translation>
-<translation id="8454013096329229812">La Wi-Fi està activada.</translation>
 <translation id="8462305545768648477">Tanca Escolta la selecció</translation>
 <translation id="847056008324733326">Configuració de l'escala de visualització</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> té la funció <ph name="FEATURE_NAME" /> <ph name="FEATURE_STATE" />.</translation>
diff --git a/ash/strings/ash_strings_cs.xtb b/ash/strings/ash_strings_cs.xtb
index 4b5d722..0f7a637 100644
--- a/ash/strings/ash_strings_cs.xtb
+++ b/ash/strings/ash_strings_cs.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Asistent (načítání...)</translation>
 <translation id="1838895407229022812">Noční režim je vypnutý.</translation>
-<translation id="1850504506766569011">Připojení Wi-Fi je vypnuto.</translation>
 <translation id="1864454756846565995">Zařízení USB Type-C (zadní port)</translation>
 <translation id="1882814835921407042">Žádná mobilní síť</translation>
 <translation id="1882897271359938046">Zrcadlení na displej <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Uživatelská nastavení</translation>
 <translation id="3217205077783620295">Zvuk je zapnutý. Přepnutím ho vypnete.</translation>
 <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="3255483164551725916">Co umíš?</translation>
 <translation id="3269597722229482060">Kliknutí pravým tlačítkem</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">Funkce <ph name="FEATURE_NAME" /> je zapnutá.</translation>
 <translation id="5947494881799873997">Vrátit zpět</translation>
 <translation id="595202126637698455">Sledování výkonu aktivováno</translation>
-<translation id="5957083217255311415">Mobilní data jsou vypnuta.</translation>
 <translation id="5958529069007801266">Dozorovaný uživatel</translation>
 <translation id="5960825221082587934">Povolit Asistentovi, aby vám zobrazoval informace, jako je definice, překlad nebo převod jednotek související s vybraným obsahem.</translation>
 <translation id="5977415296283489383">Sluchátka</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Klávesová zkratka k zobrazení bubliny s možnostmi vstupu na poličce se změnila. Namísto zkratky <ph name="OLD_SHORTCUT" /> používejte zkratku <ph name="NEW_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Plocha <ph name="DESK_TITILE" /> byla aktivována</translation>
 <translation id="8452135315243592079">Chybí SIM karta</translation>
-<translation id="8454013096329229812">Připojení Wi-Fi je zapnuto.</translation>
 <translation id="8462305545768648477">Zavřít poslech vybraného textu</translation>
 <translation id="847056008324733326">Zobrazit nastavení měřítka</translation>
 <translation id="8473301994082929012">Organizace <ph name="ORGANIZATION_NAME" /> <ph name="FEATURE_STATE" /> funkci <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb
index 1e8cafb..72e4852 100644
--- a/ash/strings/ash_strings_da.xtb
+++ b/ash/strings/ash_strings_da.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistent (indlæser...)</translation>
 <translation id="1838895407229022812">Nattelys er slået fra.</translation>
-<translation id="1850504506766569011">Wi-Fi er slået fra.</translation>
 <translation id="1864454756846565995">USB-C-enhed (port bagpå)</translation>
 <translation id="1882814835921407042">Intet mobilnetværk</translation>
 <translation id="1882897271359938046">Spejler mod <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Brugerindstillinger</translation>
 <translation id="3217205077783620295">Lydstyrken er slået til. Tryk på knappen for at sætte på lydløs.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /> andre</translation>
-<translation id="3236488194889173876">Der er ingen tilgængelige mobilnetværk</translation>
 <translation id="3249513730522716925">Vindue <ph name="WINDOW_TITLE" /> blev flyttet fra Skrivebord <ph name="ACTIVE_DESK" /> til Skrivebord <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Hvad kan du gøre?</translation>
 <translation id="3269597722229482060">Højreklik</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> er aktiveret.</translation>
 <translation id="5947494881799873997">Fortryd</translation>
 <translation id="595202126637698455">Sporing af ydelsen er aktiveret</translation>
-<translation id="5957083217255311415">Mobildata er slået fra.</translation>
 <translation id="5958529069007801266">Overvåget bruger</translation>
 <translation id="5960825221082587934">Tillad, at Assistent viser oplysninger som f.eks. definition, oversættelse eller enhedsomregning for den tekst, du har markeret.</translation>
 <translation id="5977415296283489383">Hovedtelefon</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Genvejen til menuboblen med indtastningsmuligheder på hylden har ændret sig. Brug <ph name="NEW_SHORTCUT" /> i stedet for <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Skrivebord <ph name="DESK_TITILE" /> er aktiveret</translation>
 <translation id="8452135315243592079">SIM-kort mangler</translation>
-<translation id="8454013096329229812">Wi-Fi er slået til.</translation>
 <translation id="8462305545768648477">Luk Tekstoplæsning</translation>
 <translation id="847056008324733326">Indstillinger for visningsskala</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> har <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb
index 56a2c4b..ff15e46 100644
--- a/ash/strings/ash_strings_de.xtb
+++ b/ash/strings/ash_strings_de.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistant (wird geladen…)</translation>
 <translation id="1838895407229022812">Nachtlicht ist ausgeschaltet.</translation>
-<translation id="1850504506766569011">WLAN ist deaktiviert.</translation>
 <translation id="1864454756846565995">USB-C-Gerät (Port hinten)</translation>
 <translation id="1882814835921407042">Kein Mobilfunknetz</translation>
 <translation id="1882897271359938046">Wird auf <ph name="DISPLAY_NAME" /> gespiegelt...</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Nutzereinstellungen</translation>
 <translation id="3217205077783620295">Ton ist an. Drücken Sie hier, um ihn stummzuschalten.</translation>
 <translation id="3226991577105957773">+ <ph name="COUNT" /> weitere</translation>
-<translation id="3236488194889173876">Kein Mobilfunknetz verfügbar</translation>
 <translation id="3249513730522716925">Das Fenster "<ph name="WINDOW_TITLE" />" wurde von Desktop <ph name="ACTIVE_DESK" /> zu Desktop <ph name="TARGET_DESK" /> verschoben</translation>
 <translation id="3255483164551725916">Was kannst du alles tun?</translation>
 <translation id="3269597722229482060">Rechtsklick</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> ist aktiviert.</translation>
 <translation id="5947494881799873997">Rückgängig machen</translation>
 <translation id="595202126637698455">Leistungsnachverfolgung aktiviert</translation>
-<translation id="5957083217255311415">Mobile Daten sind deaktiviert.</translation>
 <translation id="5958529069007801266">Betreuter Nutzer</translation>
 <translation id="5960825221082587934">Sie können sich von Assistant Informationen wie die Definition, Übersetzung oder das Umrechnen von Einheiten für Ihre Auswahl zeigen lassen.</translation>
 <translation id="5977415296283489383">Kopfhörer</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Die Tastenkombination zum Aufrufen des Infofelds für die Eingabeoptionen in der Ablage hat sich geändert. Bitte drücken Sie <ph name="NEW_SHORTCUT" /> statt <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Desktop <ph name="DESK_TITILE" /> aktiviert</translation>
 <translation id="8452135315243592079">Keine SIM-Karte vorhanden</translation>
-<translation id="8454013096329229812">WLAN ist aktiviert.</translation>
 <translation id="8462305545768648477">Vorlesen schließen</translation>
 <translation id="847056008324733326">Einstellungen für Displaymaßstab</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> hat <ph name="FEATURE_NAME" /> <ph name="FEATURE_STATE" />.</translation>
diff --git a/ash/strings/ash_strings_el.xtb b/ash/strings/ash_strings_el.xtb
index 4d761ee..fc690ed 100644
--- a/ash/strings/ash_strings_el.xtb
+++ b/ash/strings/ash_strings_el.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Βοηθός (φόρτωση…)</translation>
 <translation id="1838895407229022812">Ο Νυχτερινός φωτισμός είναι ανενεργός.</translation>
-<translation id="1850504506766569011">Το Wi-Fi έχει απενεργοποιηθεί.</translation>
 <translation id="1864454756846565995">Συσκευή USB-C (πίσω θύρα)</translation>
 <translation id="1882814835921407042">Δεν υπάρχει δίκτυο κινητής τηλεφωνίας</translation>
 <translation id="1882897271359938046">Κατοπτρισμός σε <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Ρυθμίσεις χρήστη</translation>
 <translation id="3217205077783620295">Ο ήχος είναι ενεργοποιημένος, η εναλλαγή θα ενεργοποιήσει τη σίγαση ήχου.</translation>
 <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="3255483164551725916">Τι μπορείς να κάνεις;</translation>
 <translation id="3269597722229482060">Δεξί κλικ</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">Η λειτουργία <ph name="FEATURE_NAME" /> είναι ενεργοποιημένη.</translation>
 <translation id="5947494881799873997">Επαναφορά</translation>
 <translation id="595202126637698455">Η παρακολούθηση απόδοσης έχει ενεργοποιηθεί</translation>
-<translation id="5957083217255311415">Τα δεδομένα κινητής τηλεφωνίας είναι απενεργοποιημένα.</translation>
 <translation id="5958529069007801266">Εποπτευόμενος χρήστης</translation>
 <translation id="5960825221082587934">Επιτρέψτε στον Βοηθό να σας εμφανίζει πληροφορίες, όπως ορισμούς, μεταφράσεις ή μετατροπές μονάδων για την επιλογή σας.</translation>
 <translation id="5977415296283489383">Ακουστικά</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Η συντόμευση για να εμφανίσετε το συννεφάκι μενού επιλογών εισαγωγής άλλαξε. Χρησιμοποιήστε το <ph name="NEW_SHORTCUT" /> αντί για το <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Η επιφάνεια εργασίας <ph name="DESK_TITILE" /> ενεργοποιήθηκε</translation>
 <translation id="8452135315243592079">Κάρτα SIM που λείπει</translation>
-<translation id="8454013096329229812">Το Wi-Fi έχει ενεργοποιηθεί.</translation>
 <translation id="8462305545768648477">Κλείσιμο λειτουργίας Επιλέξτε για αυτόματη ανάγνωση</translation>
 <translation id="847056008324733326">Εμφάνιση ρυθμίσεων κλίμακας</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> έχει <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb
index 128318e3..8a72738 100644
--- a/ash/strings/ash_strings_en-GB.xtb
+++ b/ash/strings/ash_strings_en-GB.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistant (loading...)</translation>
 <translation id="1838895407229022812">Night Light is off.</translation>
-<translation id="1850504506766569011">Wi-Fi is turned off.</translation>
 <translation id="1864454756846565995">USB-C device (rear port)</translation>
 <translation id="1882814835921407042">No mobile network</translation>
 <translation id="1882897271359938046">Mirroring to <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">User settings</translation>
 <translation id="3217205077783620295">Volume is on; toggling will mute audio.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /> more</translation>
-<translation id="3236488194889173876">No mobile network available</translation>
 <translation id="3249513730522716925">Window <ph name="WINDOW_TITLE" /> moved from Desk <ph name="ACTIVE_DESK" /> to Desk <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">What can you do?</translation>
 <translation id="3269597722229482060">Right-click</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> is on.</translation>
 <translation id="5947494881799873997">Revert</translation>
 <translation id="595202126637698455">Performance tracing enabled</translation>
-<translation id="5957083217255311415">Mobile data is turned off.</translation>
 <translation id="5958529069007801266">Supervised user</translation>
 <translation id="5960825221082587934">Let Assistant show info such as definition, translation or unit conversion for your selection.</translation>
 <translation id="5977415296283489383">Headphone</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">The shortcut to show the input options menu bubble in the shelf has changed. Please use <ph name="NEW_SHORTCUT" /> instead of <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Desk <ph name="DESK_TITILE" /> activated</translation>
 <translation id="8452135315243592079">Missing SIM card</translation>
-<translation id="8454013096329229812">Wi-Fi is turned on.</translation>
 <translation id="8462305545768648477">Close Select to Speak</translation>
 <translation id="847056008324733326">Display scale settings</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> has <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb
index bdbf25a9..6abb8d9f 100644
--- a/ash/strings/ash_strings_es-419.xtb
+++ b/ash/strings/ash_strings_es-419.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Asistente (cargando…)</translation>
 <translation id="1838895407229022812">La luz nocturna está apagada.</translation>
-<translation id="1850504506766569011">Wi-Fi desactivada</translation>
 <translation id="1864454756846565995">Dispositivo USB-C (puerto trasero)</translation>
 <translation id="1882814835921407042">Sin red móvil</translation>
 <translation id="1882897271359938046">Duplicando en <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Configuración del usuario</translation>
 <translation id="3217205077783620295">El volumen está activado. Si lo desactivas, se silenciará.</translation>
 <translation id="3226991577105957773"><ph name="COUNT" /> más</translation>
-<translation id="3236488194889173876">No hay redes móviles disponibles</translation>
 <translation id="3249513730522716925">La ventana <ph name="WINDOW_TITLE" /> se movió del escritorio <ph name="ACTIVE_DESK" /> al <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">¿Qué puedes hacer?</translation>
 <translation id="3269597722229482060">Hacer clic con el botón derecho</translation>
@@ -585,7 +583,6 @@
 <translation id="5946788582095584774">La función <ph name="FEATURE_NAME" /> está activada.</translation>
 <translation id="5947494881799873997">Revertir</translation>
 <translation id="595202126637698455">Seguimiento de rendimiento habilitado</translation>
-<translation id="5957083217255311415">Los datos móviles están desactivados.</translation>
 <translation id="5958529069007801266">Usuario supervisado</translation>
 <translation id="5960825221082587934">Permite que Asistente muestre información sobre el texto seleccionado, como su definición, traducción o conversión de unidad.</translation>
 <translation id="5977415296283489383">Auriculares</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">El acceso directo para mostrar el cuadro con el menú de opciones de entrada en la biblioteca cambió. Usa <ph name="NEW_SHORTCUT" /> en lugar de <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Se activó el escritorio <ph name="DESK_TITILE" /></translation>
 <translation id="8452135315243592079">Falta la tarjeta SIM</translation>
-<translation id="8454013096329229812">Wi-Fi activada</translation>
 <translation id="8462305545768648477">Cerrar Seleccionar para pronunciar</translation>
 <translation id="847056008324733326">Configuración de escala de visualización</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> tiene <ph name="FEATURE_NAME" /> <ph name="FEATURE_STATE" />.</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb
index 46140fd..c85049a 100644
--- a/ash/strings/ash_strings_es.xtb
+++ b/ash/strings/ash_strings_es.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Asistente (cargando...)</translation>
 <translation id="1838895407229022812">Luz nocturna desactivada.</translation>
-<translation id="1850504506766569011">La conexión Wi-Fi está desactivada.</translation>
 <translation id="1864454756846565995">Dispositivo USB-C (puerto trasero)</translation>
 <translation id="1882814835921407042">Sin red móvil</translation>
 <translation id="1882897271359938046">Proyectando en <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Ajustes de usuario</translation>
 <translation id="3217205077783620295">El volumen está activado. Utiliza el botón para silenciarlo.</translation>
 <translation id="3226991577105957773">y <ph name="COUNT" /> más</translation>
-<translation id="3236488194889173876">No hay ninguna red móvil disponible</translation>
 <translation id="3249513730522716925">La ventana <ph name="WINDOW_TITLE" /> se ha movido del escritorio <ph name="ACTIVE_DESK" /> al escritorio <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">¿Qué puedes hacer?</translation>
 <translation id="3269597722229482060">Clic derecho</translation>
@@ -585,7 +583,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> está activado.</translation>
 <translation id="5947494881799873997">Deshacer</translation>
 <translation id="595202126637698455">Se ha habilitado el control del rendimiento</translation>
-<translation id="5957083217255311415">Los datos móviles están desactivados.</translation>
 <translation id="5958529069007801266">Usuario supervis.</translation>
 <translation id="5960825221082587934">Permite que el Asistente te muestre información sobre el texto que hayas seleccionado, como su definición, su traducción o la conversión de unidades.</translation>
 <translation id="5977415296283489383">Auriculares</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">La combinación de teclas para mostrar el cuadro del menú de opciones de entrada en la estantería ha cambiado. Utiliza <ph name="NEW_SHORTCUT" /> en lugar de <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Se ha activado el escritorio <ph name="DESK_TITILE" /></translation>
 <translation id="8452135315243592079">Falta la tarjeta SIM</translation>
-<translation id="8454013096329229812">La conexión Wi-Fi está activada.</translation>
 <translation id="8462305545768648477">Cerrar Enunciar selección</translation>
 <translation id="847056008324733326">Configuración de escala de pantalla</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> ha <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_et.xtb b/ash/strings/ash_strings_et.xtb
index 31ad5599..75e9bfe 100644
--- a/ash/strings/ash_strings_et.xtb
+++ b/ash/strings/ash_strings_et.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistent (laadimine …)</translation>
 <translation id="1838895407229022812">Öövalgus on väljas.</translation>
-<translation id="1850504506766569011">WiFi on välja lülitatud.</translation>
 <translation id="1864454756846565995">C-tüüpi USB-seade (tagumine port)</translation>
 <translation id="1882814835921407042">Mobiilsidevõrku pole</translation>
 <translation id="1882897271359938046">Peegeldamine asukohta <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Kasutaja seaded</translation>
 <translation id="3217205077783620295">Helitugevus on sees, vahetamisel heli vaigistatakse.</translation>
 <translation id="3226991577105957773">ja veel <ph name="COUNT" /></translation>
-<translation id="3236488194889173876">Ühtegi mobiilsidevõrku pole saadaval</translation>
 <translation id="3249513730522716925">Aken <ph name="WINDOW_TITLE" /> teisaldati töölaualt <ph name="ACTIVE_DESK" /> töölauale <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Mida sa teha oskad?</translation>
 <translation id="3269597722229482060">Paremklikk</translation>
@@ -585,7 +583,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> on sees.</translation>
 <translation id="5947494881799873997">Ennista</translation>
 <translation id="595202126637698455">Toimivuse jälgimine on lubatud</translation>
-<translation id="5957083217255311415">Mobiilne andmeside on välja lülitatud.</translation>
 <translation id="5958529069007801266">Valvatav kasutaja</translation>
 <translation id="5960825221082587934">Laske assistendil kuvada teavet, näiteks teie valitud üksuse definitsiooni, tõlke või ühiku teisenduse.</translation>
 <translation id="5977415296283489383">Kõrvaklapid</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">Otsetee sisestusvalikute menüü mulli kuvamiseks riiulil on muutunud. Kasutage otsetee <ph name="OLD_SHORTCUT" /> asemel otseteed <ph name="NEW_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Töölaud <ph name="DESK_TITILE" /> aktiveeriti</translation>
 <translation id="8452135315243592079">SIM-kaart puudub</translation>
-<translation id="8454013096329229812">WiFi on sisse lülitatud.</translation>
 <translation id="8462305545768648477">Sule funktsioon Vali ja kuula</translation>
 <translation id="847056008324733326">Ekraani skaala seaded</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" />: <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_eu.xtb b/ash/strings/ash_strings_eu.xtb
index 5ca593b69..a38002b 100644
--- a/ash/strings/ash_strings_eu.xtb
+++ b/ash/strings/ash_strings_eu.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Laguntzailea (kargatzen…)</translation>
 <translation id="1838895407229022812">Gaueko argia itzalita dago.</translation>
-<translation id="1850504506766569011">Wi-Fi konexioa desaktibatuta dago.</translation>
 <translation id="1864454756846565995">USB-C gailua (atzealdeko ataka)</translation>
 <translation id="1882814835921407042">Ez dago sare mugikorrik</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> pantailan islatzen</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Erabiltzaile-ezarpenak</translation>
 <translation id="3217205077783620295">Bolumena aktibatuta dago. Aldatzen baduzu, audioa isilaraziko da.</translation>
 <translation id="3226991577105957773">eta beste <ph name="COUNT" /></translation>
-<translation id="3236488194889173876">Ez dago sare mugikor erabilgarririk</translation>
 <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> leihoa <ph name="ACTIVE_DESK" /> lan-eremutik <ph name="TARGET_DESK" /> lan-eremura eraman da</translation>
 <translation id="3255483164551725916">Zer egin dezakezu?</translation>
 <translation id="3269597722229482060">Egin klik eskuineko botoiarekin</translation>
@@ -585,7 +583,6 @@
 <translation id="5946788582095584774">Aktibatuta dago <ph name="FEATURE_NAME" />.</translation>
 <translation id="5947494881799873997">Leheneratu</translation>
 <translation id="595202126637698455">Errendimenduaren jarraipena egiteko aukera gaitu da</translation>
-<translation id="5957083217255311415">Desaktibatuta dago datu-konexioa.</translation>
 <translation id="5958529069007801266">Erabiltzaile gainbegiratua</translation>
 <translation id="5960825221082587934">Laguntzailea eginbideak erakutsiko dizu zure hautapenari buruzko informazioa, hala nola definizioa, itzulpena edo bihurketa-unitatea.</translation>
 <translation id="5977415296283489383">Entzungailua</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">Aldatu egin da idazketa-aukeren burbuila apalean erakusteko lasterbidea. Aurrerantzean, erabili <ph name="NEW_SHORTCUT" />, eta ez <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890"><ph name="DESK_TITILE" /> lan-eremua aktibatu da</translation>
 <translation id="8452135315243592079">SIM txartela falta da</translation>
-<translation id="8454013096329229812">Wi-Fi konexioa aktibatuta dago.</translation>
 <translation id="8462305545768648477">Itxi Hautatu ozen irakurtzeko</translation>
 <translation id="847056008324733326">Bistaratu eskala-ezarpenak</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> erakundeak <ph name="FEATURE_STATE" /> dauka <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb
index 5aaefe5..a093e2c 100644
--- a/ash/strings/ash_strings_fa.xtb
+++ b/ash/strings/ash_strings_fa.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">اترنت: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">دستیار (درحال بار کردن…)</translation>
 <translation id="1838895407229022812">«نور شب» خاموش است</translation>
-<translation id="1850504506766569011">‏Wi-Fi خاموش است.</translation>
 <translation id="1864454756846565995">‏دستگاه USB-C (درگاه عقب)</translation>
 <translation id="1882814835921407042">عدم وجود شبکه تلفن همراه</translation>
 <translation id="1882897271359938046">بازتاب به <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">«تنظیمات کاربر»</translation>
 <translation id="3217205077783620295">دکمه میزان صدا فعال است، با تغییر وضعیت صامت می‌شود.</translation>
 <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="3255483164551725916">‏What can you do?‎ (چه کاری می‌توانی انجام دهی؟)</translation>
 <translation id="3269597722229482060">کلیک راست</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> روشن است.</translation>
 <translation id="5947494881799873997">برگرداندن</translation>
 <translation id="595202126637698455">ردیابی عملکرد فعال شد</translation>
-<translation id="5957083217255311415">داده تلفن همراه خاموش است.</translation>
 <translation id="5958529069007801266">کاربر نظارت‌شده</translation>
 <translation id="5960825221082587934">به «دستیار» اجازه دهید اطلاعاتی مثل معنی واژه، ترجمه، یا تبدیل واحد انتخاب‌شده را نمایش دهد.</translation>
 <translation id="5977415296283489383">هدفون</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">میان‌بر نمایش حبابک گزینه‌های ورودی در قفسه تغییر کرده است. لطفاً به‌جای <ph name="OLD_SHORTCUT" /> از <ph name="NEW_SHORTCUT" /> استفاده کنید.</translation>
 <translation id="8444246603146515890">میز <ph name="DESK_TITILE" /> فعال شد</translation>
 <translation id="8452135315243592079">سیم‌کارت وجود ندارد</translation>
-<translation id="8454013096329229812">‏Wi-Fi روشن است.</translation>
 <translation id="8462305545768648477">بستن «انتخاب برای شنیدن»</translation>
 <translation id="847056008324733326">تنظیمات مقیاس نمایش</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" /> دارد.</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb
index 7af52162..2b36630 100644
--- a/ash/strings/ash_strings_fi.xtb
+++ b/ash/strings/ash_strings_fi.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistant (ladataan…)</translation>
 <translation id="1838895407229022812">Yövalo on pois päältä.</translation>
-<translation id="1850504506766569011">Wi-Fi on pois päältä</translation>
 <translation id="1864454756846565995">C-tyypin USB-laite (takaportti)</translation>
 <translation id="1882814835921407042">Ei mobiiliverkkoa</translation>
 <translation id="1882897271359938046">Peilataan näyttöön: <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Käyttäjäasetukset</translation>
 <translation id="3217205077783620295">Äänet ovat päällä. Mykistä ne kytkimellä.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /> muuta</translation>
-<translation id="3236488194889173876">Mobiiliverkkoja ei ole käytettävissä</translation>
 <translation id="3249513730522716925">Ikkuna <ph name="WINDOW_TITLE" /> siirretty työpöydältä <ph name="ACTIVE_DESK" /> työpöydälle <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Mitä osaat tehdä?</translation>
 <translation id="3269597722229482060">Klikkaa kakkospainiketta</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> on päällä.</translation>
 <translation id="5947494881799873997">Palauta</translation>
 <translation id="595202126637698455">Tehokkuuden seuranta on käytössä</translation>
-<translation id="5957083217255311415">Mobiilidata on poistettu käytöstä.</translation>
 <translation id="5958529069007801266">Valvottu käyttäjä</translation>
 <translation id="5960825221082587934">Anna Assistantin näyttää valinnasta lisätietoja, kuten määritelmä, käännös tai yksikkömuunnos.</translation>
 <translation id="5977415296283489383">Kuulokkeet</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Hyllyn syöttöasetukset näyttävä valikkokupla on muuttunut. Käytä uutta pikanäppäintä <ph name="NEW_SHORTCUT" /> vanhan (<ph name="OLD_SHORTCUT" />) sijaan.</translation>
 <translation id="8444246603146515890">Työpöytä <ph name="DESK_TITILE" /> aktivoitu</translation>
 <translation id="8452135315243592079">SIM-kortti puuttuu.</translation>
-<translation id="8454013096329229812">Wi-Fi on käytössä.</translation>
 <translation id="8462305545768648477">Sulje teksti puhuttuna</translation>
 <translation id="847056008324733326">Näytön skaalauksen asetukset</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> omistaa tämän: <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb
index c710b264..63899f5 100644
--- a/ash/strings/ash_strings_fil.xtb
+++ b/ash/strings/ash_strings_fil.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistant (naglo-load...)</translation>
 <translation id="1838895407229022812">Naka-off ang Night Light.</translation>
-<translation id="1850504506766569011">Naka-off ang Wi-Fi.</translation>
 <translation id="1864454756846565995">USB-C device (port sa rear)</translation>
 <translation id="1882814835921407042">Walang mobile network</translation>
 <translation id="1882897271359938046">Nagmi-mirror sa <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Mga Setting ng User</translation>
 <translation id="3217205077783620295">Naka-on ang volume, mamu-mute ang audio kapag nag-toggle.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /> pa</translation>
-<translation id="3236488194889173876">Walang available na mobile network</translation>
 <translation id="3249513730522716925">Inilipat ang Window na <ph name="WINDOW_TITLE" /> sa Desk na <ph name="TARGET_DESK" /> mula sa <ph name="ACTIVE_DESK" /></translation>
 <translation id="3255483164551725916">Ano'ng maaari mong gawin?</translation>
 <translation id="3269597722229482060">Mag-right Click</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">Naka-on ang <ph name="FEATURE_NAME" />.</translation>
 <translation id="5947494881799873997">I-revert</translation>
 <translation id="595202126637698455">Naka-enable ang pagte-trace sa pagganap</translation>
-<translation id="5957083217255311415">Naka-off ang mobile data.</translation>
 <translation id="5958529069007801266">Pinangangasiwaang user</translation>
 <translation id="5960825221082587934">Payagan ang Assistant na magpakita ng impormasyon tulad ng kahulugan, pagsasalin, o conversion ng unit para sa iyong pinili.</translation>
 <translation id="5977415296283489383">Headphone</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Napalitan na ang shortcut para sa pagpapakita ng bubble na menu ng mga opsyon sa input sa shelf. Pakigamit ang <ph name="NEW_SHORTCUT" /> sa halip na <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Na-activate ang desk na <ph name="DESK_TITILE" /></translation>
 <translation id="8452135315243592079">Walang nakalagay na SIM card</translation>
-<translation id="8454013096329229812">Naka-on ang Wi-Fi.</translation>
 <translation id="8462305545768648477">Isara ang Select-to-speak</translation>
 <translation id="847056008324733326">Mga setting ng scale ng display</translation>
 <translation id="8473301994082929012">Ang <ph name="ORGANIZATION_NAME" /> ay may <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_fr-CA.xtb b/ash/strings/ash_strings_fr-CA.xtb
index 8858f4b..e3bacdf 100644
--- a/ash/strings/ash_strings_fr-CA.xtb
+++ b/ash/strings/ash_strings_fr-CA.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet : <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistant Google (chargement en cours…)</translation>
 <translation id="1838895407229022812">Le mode Éclairage nocturne est désactivé.</translation>
-<translation id="1850504506766569011">Le Wi-Fi est désactivé.</translation>
 <translation id="1864454756846565995">Appareil USB-C (port arrière)</translation>
 <translation id="1882814835921407042">Aucun réseau cellulaire</translation>
 <translation id="1882897271359938046">Mise en miroir pour <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Paramètres de l'utilisateur</translation>
 <translation id="3217205077783620295">Le son est activé et peut être coupé en cliquant sur le bouton de volume.</translation>
 <translation id="3226991577105957773">et <ph name="COUNT" /> autres</translation>
-<translation id="3236488194889173876">Aucun réseau mobile accessible</translation>
 <translation id="3249513730522716925">La fenêtre <ph name="WINDOW_TITLE" /> a passé du bureau <ph name="ACTIVE_DESK" /> au bureau <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Que peux-tu faire?</translation>
 <translation id="3269597722229482060">Clic droit</translation>
@@ -583,7 +581,6 @@
 <translation id="5946788582095584774">La fonctionnalité <ph name="FEATURE_NAME" /> est activée.</translation>
 <translation id="5947494881799873997">Rétablir</translation>
 <translation id="595202126637698455">Suivi des performances activé</translation>
-<translation id="5957083217255311415">Les données mobiles sont désactivées.</translation>
 <translation id="5958529069007801266">Utilis. supervisé</translation>
 <translation id="5960825221082587934">L'Assistant peut vous présenter de l'information, comme la définition, la traduction ou la conversion d'unités, relative à votre sélection.</translation>
 <translation id="5977415296283489383">Casque d'écoute</translation>
@@ -883,7 +880,6 @@
 <translation id="8433977262951327081">Le raccourci qui permet d'afficher la bulle du menu des options d'entrée dans l'étagère a changé. Veuillez utiliser <ph name="NEW_SHORTCUT" /> au lieu de <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Bureau <ph name="DESK_TITILE" /> activé</translation>
 <translation id="8452135315243592079">Carte SIM manquante</translation>
-<translation id="8454013096329229812">Le Wi-Fi est activé.</translation>
 <translation id="8462305545768648477">Fermer Sélectionner pour énoncer</translation>
 <translation id="847056008324733326">Paramètres de l'échelle d'affichage</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> a <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb
index 89296121..29536f8 100644
--- a/ash/strings/ash_strings_fr.xtb
+++ b/ash/strings/ash_strings_fr.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet : <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistant (chargement…)</translation>
 <translation id="1838895407229022812">Éclairage nocturne désactivé.</translation>
-<translation id="1850504506766569011">Le Wi-Fi est désactivé.</translation>
 <translation id="1864454756846565995">Appareil USB de type C (port situé sur l'arrière de l'appareil)</translation>
 <translation id="1882814835921407042">Pas de réseau mobile</translation>
 <translation id="1882897271359938046">Mise en miroir pour <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Paramètres utilisateur</translation>
 <translation id="3217205077783620295">Le son est activé et peut être coupé lorsque vous cliquez sur le bouton de volume.</translation>
 <translation id="3226991577105957773">+ <ph name="COUNT" /> autres</translation>
-<translation id="3236488194889173876">Aucun réseau mobile disponible</translation>
 <translation id="3249513730522716925">La fenêtre <ph name="WINDOW_TITLE" /> a été déplacée du Bureau <ph name="ACTIVE_DESK" /> au Bureau <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Que sais-tu faire ?</translation>
 <translation id="3269597722229482060">Clic droit</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">La fonctionnalité <ph name="FEATURE_NAME" /> est activée.</translation>
 <translation id="5947494881799873997">Rétablir</translation>
 <translation id="595202126637698455">Suivi des performances activé</translation>
-<translation id="5957083217255311415">Les données mobiles sont désactivées.</translation>
 <translation id="5958529069007801266">Utilis. supervisé</translation>
 <translation id="5960825221082587934">Laissez l'Assistant afficher des informations sur l'élément sélectionné, telles qu'une définition, une traduction ou une conversion d'unité.</translation>
 <translation id="5977415296283489383">Casque</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Le raccourci pour afficher l'info-bulle du menu des options de saisie dans l'étagère a changé. Veuillez utiliser <ph name="NEW_SHORTCUT" /> au lieu de <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Bureau <ph name="DESK_TITILE" /> activé</translation>
 <translation id="8452135315243592079">Carte SIM manquante</translation>
-<translation id="8454013096329229812">Le Wi-Fi est activé.</translation>
 <translation id="8462305545768648477">Fermer Sélectionner pour prononcer</translation>
 <translation id="847056008324733326">Paramètres de l'échelle d'affichage</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> a <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_gl.xtb b/ash/strings/ash_strings_gl.xtb
index 7d9deda0..5305fbb8 100644
--- a/ash/strings/ash_strings_gl.xtb
+++ b/ash/strings/ash_strings_gl.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Asistente (cargando...)</translation>
 <translation id="1838895407229022812">A función Luz nocturna está desactivada.</translation>
-<translation id="1850504506766569011">A wifi está desactivada.</translation>
 <translation id="1864454756846565995">Dispositivo USB-C (porto posterior)</translation>
 <translation id="1882814835921407042">Non hai ningunha rede de telefonía móbil</translation>
 <translation id="1882897271359938046">Proxectando en <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Configuración do usuario</translation>
 <translation id="3217205077783620295">O volume está activado. Utiliza o botón para silencialo.</translation>
 <translation id="3226991577105957773"><ph name="COUNT" /> máis</translation>
-<translation id="3236488194889173876">Non hai ningunha rede móbil dispoñible</translation>
 <translation id="3249513730522716925">A ventá <ph name="WINDOW_TITLE" /> moveuse do escritorio <ph name="ACTIVE_DESK" /> ao escritorio <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Que podes facer?</translation>
 <translation id="3269597722229482060">Facer clic co botón dereito</translation>
@@ -585,7 +583,6 @@
 <translation id="5946788582095584774">A función <ph name="FEATURE_NAME" /> está activada.</translation>
 <translation id="5947494881799873997">Reverter</translation>
 <translation id="595202126637698455">Seguimento do rendemento activado</translation>
-<translation id="5957083217255311415">Os datos móbiles están desactivados.</translation>
 <translation id="5958529069007801266">Usuario supervisado</translation>
 <translation id="5960825221082587934">Permitirlle ao Asistente mostrar información relacionada coa túa selección, como a definición, a tradución ou a conversión de unidades.</translation>
 <translation id="5977415296283489383">Auriculares</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">Modificouse o atallo que mostra o globo do menú de opcións de entrada no estante. Usa <ph name="NEW_SHORTCUT" /> en lugar de <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Activouse o escritorio <ph name="DESK_TITILE" /></translation>
 <translation id="8452135315243592079">Falta a tarxeta SIM</translation>
-<translation id="8454013096329229812">A wifi está activada.</translation>
 <translation id="8462305545768648477">Pechar Escoitar selección</translation>
 <translation id="847056008324733326">Configuración da escala de visualización</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb
index eb8a43d4..bf60bef 100644
--- a/ash/strings/ash_strings_gu.xtb
+++ b/ash/strings/ash_strings_gu.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">ઇથરનેટ: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">સહાયક (લોડ થઈ રહ્યું છે…)</translation>
 <translation id="1838895407229022812">રાત્રિ પ્રકાશ બંધ છે.</translation>
-<translation id="1850504506766569011">વાઇ-ફાઇ બંધ છે.</translation>
 <translation id="1864454756846565995">USB-C ઉપકરણ (પાછળનું પોર્ટ)</translation>
 <translation id="1882814835921407042">કોઈ મોબાઇલ નેટવર્ક નથી</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> પર પ્રતિબિંબિત થઈ રહ્યું છે</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">વપરાશકર્તા સેટિંગ</translation>
 <translation id="3217205077783620295">વૉલ્યૂમ ચાલુ છે, ટૉગલ કરવાથી ઑડિયો મ્યૂટ થશે.</translation>
 <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="3255483164551725916">તમે શું કરી શકો?</translation>
 <translation id="3269597722229482060">રાઇટ ક્લિક કરો</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> ચાલુ છે.</translation>
 <translation id="5947494881799873997">પાછા ફરો</translation>
 <translation id="595202126637698455">ભજવણી ટ્રેસિંગ સક્ષમ</translation>
-<translation id="5957083217255311415">મોબાઇલ ડેટા બંધ છે.</translation>
 <translation id="5958529069007801266">નિરીક્ષણ કરેલ વપરાશકર્તા</translation>
 <translation id="5960825221082587934">Assistantને તમારી પસંદગી માટે વ્યાખ્યા, અનુવાદ અથવા એકમના રૂપાંતરણ જેવી માહિતી બતાવવાની મંજૂરી આપો.</translation>
 <translation id="5977415296283489383">હેડફોન</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">શેલ્ફમાં મેનૂ પરપોટો ઇનપુટ વિકલ્પો બતાવવાનો શૉર્ટકટ બદલાયો છે. કૃપા કરીને <ph name="OLD_SHORTCUT" />ને બદલે <ph name="NEW_SHORTCUT" />નો ઉપયોગ કરો.</translation>
 <translation id="8444246603146515890">ડેસ્ક <ph name="DESK_TITILE" /> સક્રિય કર્યું</translation>
 <translation id="8452135315243592079">SIM કાર્ડ ખૂટે છે</translation>
-<translation id="8454013096329229812">વાઇ-ફાઇ ચાલુ છે.</translation>
 <translation id="8462305545768648477">સાંભળવા માટે પસંદ કરો બંધ કરો</translation>
 <translation id="847056008324733326">પ્રદર્શન ધોરણનું સેટિંગ</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" />માં <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />છે.</translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb
index f08f403..ebd6a4d 100644
--- a/ash/strings/ash_strings_hi.xtb
+++ b/ash/strings/ash_strings_hi.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">ईथरनेट: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistant (सेवा लोड हो रही है...)</translation>
 <translation id="1838895407229022812">नाइट लाइट बंद है.</translation>
-<translation id="1850504506766569011">वाई-फ़ाई  बंद है.</translation>
 <translation id="1864454756846565995">USB-C डिवाइस (पिछला पोर्ट)</translation>
 <translation id="1882814835921407042">आपके फ़ोन में मोबाइल नेटवर्क उपलब्ध नहीं है</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> पर स्क्रीन शेयर कर रहा है</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">उपयोगकर्ता सेटिंग</translation>
 <translation id="3217205077783620295">आवाज़ चालू है, टॉगल करने से ऑडियो बंद हो जाएगा.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /> और</translation>
-<translation id="3236488194889173876">कोई मोबाइल नेटवर्क उपलब्ध नहीं</translation>
 <translation id="3249513730522716925">Window <ph name="WINDOW_TITLE" /> को डेस्क <ph name="ACTIVE_DESK" /> से डेस्क <ph name="TARGET_DESK" /> पर सेट कर दिया गया है</translation>
 <translation id="3255483164551725916">तुम क्या-क्या कर सकती हो?</translation>
 <translation id="3269597722229482060">दायां क्लिक करें</translation>
@@ -585,7 +583,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> चालू है.</translation>
 <translation id="5947494881799873997">वापस लाएं</translation>
 <translation id="595202126637698455">निष्पादन ट्रेसिंग सक्षम है</translation>
-<translation id="5957083217255311415">मोबाइल डेटा बंद कर दिया गया है.</translation>
 <translation id="5958529069007801266">निगरानी में रखा गया उपयोगकर्ता</translation>
 <translation id="5960825221082587934">Assistant को स्क्रीन पर चुने गए कॉन्टेंट से जुड़ी जानकारी दिखाने की अनुमति दें, जैसे कि परिभाषा, अनुवाद या एक यूनिट से दूसरी यूनिट में बदलकर दिखाना.</translation>
 <translation id="5977415296283489383">हेडफ़ोन</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">शेल्फ़ में इनपुट विकल्पों का मेन्यू बबल दिखाने वाला शॉर्टकट बदल गया है. कृपया <ph name="OLD_SHORTCUT" /> के बजाय <ph name="NEW_SHORTCUT" /> का इस्तेमाल करें.</translation>
 <translation id="8444246603146515890"><ph name="DESK_TITILE" /> डेस्क चालू है</translation>
 <translation id="8452135315243592079">अनुपलब्ध SIM कार्ड</translation>
-<translation id="8454013096329229812">वाई-फ़ाई  चालू है.</translation>
 <translation id="8462305545768648477">'चुनें और सुनें' सुविधा बंद करें</translation>
 <translation id="847056008324733326">डिसप्ले पैमाने की सेटिंग</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> में <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" /> हैं.</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb
index e1480fa..05c1605 100644
--- a/ash/strings/ash_strings_hr.xtb
+++ b/ash/strings/ash_strings_hr.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Asistent (učitavanje...)</translation>
 <translation id="1838895407229022812">Noćno je svjetlo isključeno.</translation>
-<translation id="1850504506766569011">Wi-Fi je isključen.</translation>
 <translation id="1864454756846565995">USB-C uređaj (stražnji priključak)</translation>
 <translation id="1882814835921407042">Nema mobilne mreže</translation>
 <translation id="1882897271359938046">Zrcaljenje na zaslon <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Korisničke postavke</translation>
 <translation id="3217205077783620295">Zvuk je uključen, prebacivanjem će se isključiti.</translation>
 <translation id="3226991577105957773">Još <ph name="COUNT" /></translation>
-<translation id="3236488194889173876">Mobilne mreže nisu dostupne</translation>
 <translation id="3249513730522716925">Prozor <ph name="WINDOW_TITLE" /> premješten je s radne površine <ph name="ACTIVE_DESK" /> na radnu površinu <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Što možeš učiniti?</translation>
 <translation id="3269597722229482060">Desni klik</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">Značajka <ph name="FEATURE_NAME" /> je uključena.</translation>
 <translation id="5947494881799873997">Vrati</translation>
 <translation id="595202126637698455">Omogućeno je praćenje izvedbe</translation>
-<translation id="5957083217255311415">Mobilni su podaci isključeni.</translation>
 <translation id="5958529069007801266">Nadzirani korisnik</translation>
 <translation id="5960825221082587934">Dopustite Asistentu da vam prikazuje informacije poput definicije, prijevoda ili preračunavanje jedinica za vaš odabir.</translation>
 <translation id="5977415296283489383">Slušalice</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Promijenio se prečac za prikazivanje oblačića izbornika s opcijama unosa na polici. Upotrijebite <ph name="NEW_SHORTCUT" /> umjesto <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Aktivirana je radna površina <ph name="DESK_TITILE" /></translation>
 <translation id="8452135315243592079">Nedostaje SIM kartica</translation>
-<translation id="8454013096329229812">Wi-Fi je uključen.</translation>
 <translation id="8462305545768648477">Zatvorite značajku Odabir za govor</translation>
 <translation id="847056008324733326">Postavke skale prikaza</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> ima <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb
index 49a83692..6c6251c 100644
--- a/ash/strings/ash_strings_hu.xtb
+++ b/ash/strings/ash_strings_hu.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Segéd (betöltés…)</translation>
 <translation id="1838895407229022812">Az Éjszakai fény ki van kapcsolva.</translation>
-<translation id="1850504506766569011">Wi-Fi kikapcsolva.</translation>
 <translation id="1864454756846565995">C típusú USB-vel kompatibilis eszköz (hátsó port)</translation>
 <translation id="1882814835921407042">Nincs mobilhálózat</translation>
 <translation id="1882897271359938046">Tükrözés: <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Felhasználói beállítások</translation>
 <translation id="3217205077783620295">A hang be van kapcsolva, a gombra kattintva elnémítja.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /> további</translation>
-<translation id="3236488194889173876">Nem áll rendelkezésre mobilhálózat</translation>
 <translation id="3249513730522716925">A(z) „<ph name="WINDOW_TITLE" />” ablak át lett helyezve a(z) „<ph name="ACTIVE_DESK" />” asztalról a(z) „<ph name="TARGET_DESK" />” asztalra</translation>
 <translation id="3255483164551725916">Mit lehet csinálni?</translation>
 <translation id="3269597722229482060">Kattintás jobb egérgombbal</translation>
@@ -585,7 +583,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> bekapcsolva.</translation>
 <translation id="5947494881799873997">Visszavonás</translation>
 <translation id="595202126637698455">Teljesítménykövetés engedélyezve</translation>
-<translation id="5957083217255311415">A mobiladat-kapcsolat ki van kapcsolva.</translation>
 <translation id="5958529069007801266">Felügyelt felhasználó</translation>
 <translation id="5960825221082587934">Engedélyezheti, hogy a Segéd információkat jelenítsen meg a kiválasztott elemhez, például definíciót, fordítást vagy mértékegység-átváltást.</translation>
 <translation id="5977415296283489383">Fülhallgató</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">Megváltozott a beviteli lehetőségek menüjének buborékját a polcon megjelenítő gyorsparancs. A(z) <ph name="OLD_SHORTCUT" /> helyett használja a(z) <ph name="NEW_SHORTCUT" /> billentyűkombinációt.</translation>
 <translation id="8444246603146515890">A(z) „<ph name="DESK_TITILE" />” asztal aktiválva</translation>
 <translation id="8452135315243592079">Hiányzó SIM-kártya</translation>
-<translation id="8454013096329229812">Wi-Fi bekapcsolva.</translation>
 <translation id="8462305545768648477">Felolvasás bezárása</translation>
 <translation id="847056008324733326">A megjelenítési méret beállításai</translation>
 <translation id="8473301994082929012">A(z) <ph name="ORGANIZATION_NAME" /> szervezetnél <ph name="FEATURE_STATE" /> van a(z) <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_hy.xtb b/ash/strings/ash_strings_hy.xtb
index aae435a..96e5201 100644
--- a/ash/strings/ash_strings_hy.xtb
+++ b/ash/strings/ash_strings_hy.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet՝ <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Օգնական (բեռնում...)</translation>
 <translation id="1838895407229022812">Գիշերային ռեժիմն անջատված է</translation>
-<translation id="1850504506766569011">Wi-Fi-ն անջատված է:</translation>
 <translation id="1864454756846565995">USB-C սարք (հետևի միացք)</translation>
 <translation id="1882814835921407042">Բջջային կապ չկա</translation>
 <translation id="1882897271359938046">Հայելապատճենվում է <ph name="DISPLAY_NAME" />-ին</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Օգտատիրոջ կարգավորումներ</translation>
 <translation id="3217205077783620295">Ձայնը միացված է։ Անջատելու համար սեղմեք այս կոճակը։</translation>
 <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="3255483164551725916">Ի՞նչ կարող ես անել:</translation>
 <translation id="3269597722229482060">Աջ սեղմում</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">«<ph name="FEATURE_NAME" />» գործառույթը միացված է։</translation>
 <translation id="5947494881799873997">Հետադարձել</translation>
 <translation id="595202126637698455">Կատարողականության հետագծումը միացված է</translation>
-<translation id="5957083217255311415">Բջջային ինտերնետն անջատված է:</translation>
 <translation id="5958529069007801266">Վերահսկվող պրոֆիլ</translation>
 <translation id="5960825221082587934">Թույլատրել Օգնականին ցուցադրել տարրի մասին տեղեկություններ, օրինակ՝ սահմանումը, թարգմանությունը կամ փոխարկման միավորը։</translation>
 <translation id="5977415296283489383">Ականջակալ</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Ներածման ընտրանքների պղպջակը դարակում ցուցադրելու դյուրանցումը փոխվել է։ <ph name="OLD_SHORTCUT" />-ի փոխարեն օգտագործեք <ph name="NEW_SHORTCUT" />։</translation>
 <translation id="8444246603146515890">Աշխատասեղան <ph name="DESK_TITILE" />-ն ակտիվացված է</translation>
 <translation id="8452135315243592079">SIM քարտը բացակայում է</translation>
-<translation id="8454013096329229812">Wi-Fi-ը միացված է:</translation>
 <translation id="8462305545768648477">Փակել «Ընտրեք և լսեք» գործառույթը</translation>
 <translation id="847056008324733326">Էկրանի մասշտաբի կարգավորումներ</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" />-ն ունի <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />:</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb
index 007c4e2..6f9bb2a 100644
--- a/ash/strings/ash_strings_id.xtb
+++ b/ash/strings/ash_strings_id.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Asisten (sedang dimuat...)</translation>
 <translation id="1838895407229022812">Cahaya Malam nonaktif.</translation>
-<translation id="1850504506766569011">Wi-Fi dinonaktifkan.</translation>
 <translation id="1864454756846565995">Perangkat USB-C (port belakang)</translation>
 <translation id="1882814835921407042">Tidak ada jaringan seluler</translation>
 <translation id="1882897271359938046">Mencerminkan ke <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Setelan Pengguna</translation>
 <translation id="3217205077783620295">Volume aktif, mengalihkan tombol akan membisukan audio.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /> lagi</translation>
-<translation id="3236488194889173876">Jaringan seluler tidak tersedia</translation>
 <translation id="3249513730522716925">Jendela <ph name="WINDOW_TITLE" /> berpindah dari Desktop <ph name="ACTIVE_DESK" /> ke Desktop <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Apa yang bisa kamu lakukan?</translation>
 <translation id="3269597722229482060">Klik Kanan</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> aktif.</translation>
 <translation id="5947494881799873997">Kembalikan</translation>
 <translation id="595202126637698455">Kinerja pelacakan aktif</translation>
-<translation id="5957083217255311415">Data seluler dinonaktifkan.</translation>
 <translation id="5958529069007801266">Pengguna yang diawasi</translation>
 <translation id="5960825221082587934">Izinkan Asisten menampilkan info seperti definisi, terjemahan, atau konversi unit untuk teks yang Anda pilih.</translation>
 <translation id="5977415296283489383">Headphone</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Pintasan untuk menampilkan balon menu opsi masukan di rak telah diubah. Harap gunakan <ph name="NEW_SHORTCUT" />, bukan <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Desktop <ph name="DESK_TITILE" /> diaktifkan</translation>
 <translation id="8452135315243592079">Kartu SIM tidak ada</translation>
-<translation id="8454013096329229812">Wi-Fi diaktifkan.</translation>
 <translation id="8462305545768648477">Tutup Klik untuk Diucapkan</translation>
 <translation id="847056008324733326">Setelan skala layar</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> telah <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_is.xtb b/ash/strings/ash_strings_is.xtb
index e5e812f..3a792bd 100644
--- a/ash/strings/ash_strings_is.xtb
+++ b/ash/strings/ash_strings_is.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Aðstoðarmaður (hleður...)</translation>
 <translation id="1838895407229022812">Slökkt er á næturljósi.</translation>
-<translation id="1850504506766569011">Slökkt er á Wi-Fi.</translation>
 <translation id="1864454756846565995">USB-C-tæki (tengi að aftan)</translation>
 <translation id="1882814835921407042">Ekkert farsímakerfi</translation>
 <translation id="1882897271359938046">Speglar á <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Notandastillingar</translation>
 <translation id="3217205077783620295">Kveikt er á hljóði; slökkt verður á því ef hnappurinn er valinn.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /> í viðbót</translation>
-<translation id="3236488194889173876">Ekkert farsímakerfi í boði</translation>
 <translation id="3249513730522716925">Gluggi <ph name="WINDOW_TITLE" /> færður af skjáborði <ph name="ACTIVE_DESK" /> yfir á skjáborð <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Hvað geturðu gert?</translation>
 <translation id="3269597722229482060">Hægrismella</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">Kveikt er á <ph name="FEATURE_NAME" /></translation>
 <translation id="5947494881799873997">Afturkalla</translation>
 <translation id="595202126637698455">Kveikt á afkastarakningu</translation>
-<translation id="5957083217255311415">Slökkt er á farsímagögnum.</translation>
 <translation id="5958529069007801266">Stýrður notandi</translation>
 <translation id="5960825221082587934">Leyfa Hjálparanum að birta upplýsingar á borð við skilgreiningu, þýðingu eða umbreytingu mælieininga fyrir valið þitt.</translation>
 <translation id="5977415296283489383">Heyrnartól</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Flýtileiðin til að sýna valmyndarblöðru fyrir innsláttarvalkosti í hillunni hefur breyst. Notaðu <ph name="NEW_SHORTCUT" /> í staðinn fyrir <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Skjáborð <ph name="DESK_TITILE" /> virkjað</translation>
 <translation id="8452135315243592079">SIM-kort vantar</translation>
-<translation id="8454013096329229812">Kveikt er á Wi-Fi.</translation>
 <translation id="8462305545768648477">Loka Textaupplestri</translation>
 <translation id="847056008324733326">Stillingarar skjástærðar</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> hefur <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_it.xtb b/ash/strings/ash_strings_it.xtb
index 7ffda13b..693b6f49 100644
--- a/ash/strings/ash_strings_it.xtb
+++ b/ash/strings/ash_strings_it.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistente (caricamento…)</translation>
 <translation id="1838895407229022812">Luminosità notturna non attiva.</translation>
-<translation id="1850504506766569011">Wi-Fi non attivo.</translation>
 <translation id="1864454756846565995">Dispositivo USB-C (porta posteriore)</translation>
 <translation id="1882814835921407042">Nessuna rete mobile</translation>
 <translation id="1882897271359938046">Mirroring su <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Impostazioni utente</translation>
 <translation id="3217205077783620295">Il volume è attivo. Selezionalo per disattivarlo.</translation>
 <translation id="3226991577105957773">+ altre <ph name="COUNT" /></translation>
-<translation id="3236488194889173876">Nessuna rete mobile disponibile</translation>
 <translation id="3249513730522716925">La finestra <ph name="WINDOW_TITLE" /> è stata spostata dalla scrivania <ph name="ACTIVE_DESK" /> alla scrivania <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Cosa sai fare?</translation>
 <translation id="3269597722229482060">Clic con il pulsante destro</translation>
@@ -585,7 +583,6 @@
 <translation id="5946788582095584774">La funzionalità <ph name="FEATURE_NAME" /> è attiva.</translation>
 <translation id="5947494881799873997">Ripristina</translation>
 <translation id="595202126637698455">Rilevamento del rendimento attivo</translation>
-<translation id="5957083217255311415">I dati mobili non sono attivi.</translation>
 <translation id="5958529069007801266">Utente supervis.</translation>
 <translation id="5960825221082587934">Consenti all'assistente di mostrare informazioni come la definizione, la traduzione o la conversione di unità per gli elementi selezionati.</translation>
 <translation id="5977415296283489383">Cuffia</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">La scorciatoia per mostrare il fumetto del menu di opzioni di immissione nella shelf è cambiata. Utilizza <ph name="NEW_SHORTCUT" /> invece di <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Scrivania <ph name="DESK_TITILE" /> attivata</translation>
 <translation id="8452135315243592079">Scheda SIM mancante</translation>
-<translation id="8454013096329229812">Wi-Fi attivo.</translation>
 <translation id="8462305545768648477">Chiudi Seleziona per ascoltare</translation>
 <translation id="847056008324733326">Impostazioni scala di visualizzazione</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> ha <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb
index 9d6e2cb..9dc0c2d8 100644
--- a/ash/strings/ash_strings_iw.xtb
+++ b/ash/strings/ash_strings_iw.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">אתרנט: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">‏Assistant (בטעינה...)</translation>
 <translation id="1838895407229022812">תאורת הלילה כבויה.</translation>
-<translation id="1850504506766569011">‏Wi-Fi כבוי.</translation>
 <translation id="1864454756846565995">‏מכשיר עם יציאת USB-C (יציאה אחורית)</translation>
 <translation id="1882814835921407042">אין רשת סלולרית</translation>
 <translation id="1882897271359938046">משקף אל <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">הגדרות משתמש</translation>
 <translation id="3217205077783620295">לחצן עוצמת הקול מופעל. אם המצב יוחלף, האודיו יושתק.</translation>
 <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="3255483164551725916">מה אפשר לעשות?</translation>
 <translation id="3269597722229482060">לחיצה ימנית</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> פעילות.</translation>
 <translation id="5947494881799873997">חזרה לגרסה הקודמת</translation>
 <translation id="595202126637698455">מעקב אחר הביצועים מופעל</translation>
-<translation id="5957083217255311415">חבילת הגלישה מושבתת.</translation>
 <translation id="5958529069007801266">משתמש בפיקוח</translation>
 <translation id="5960825221082587934">‏Assistant תוכל להציג מידע לגבי הטקסט שבחרת, כמו ההגדרה, התרגום או המרת היחידות.</translation>
 <translation id="5977415296283489383">אוזניות</translation>
@@ -886,7 +883,6 @@
 <translation id="8433977262951327081">שינינו את קיצור הדרך להצגת בועת התפריט של אפשרויות הקלט במדף. יש להשתמש ב-<ph name="NEW_SHORTCUT" /> במקום ב-<ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">שולחן העבודה <ph name="DESK_TITILE" /> הופעל</translation>
 <translation id="8452135315243592079">‏כרטיס SIM חסר</translation>
-<translation id="8454013096329229812">‏Wi-Fi מופעל.</translation>
 <translation id="8462305545768648477">סגירת הקראה</translation>
 <translation id="847056008324733326">הגדרות קנה המידה של התצוגה</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> <ph name="FEATURE_STATE" /> את <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb
index e32cae3..13db0356 100644
--- a/ash/strings/ash_strings_ja.xtb
+++ b/ash/strings/ash_strings_ja.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">イーサネット: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">アシスタント(読み込み中...)</translation>
 <translation id="1838895407229022812">夜間モードはオフです。</translation>
-<translation id="1850504506766569011">Wi-Fi が無効になりました。</translation>
 <translation id="1864454756846565995">USB-C デバイス(背面のポート)</translation>
 <translation id="1882814835921407042">モバイル ネットワークに接続されていません</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> へミラーリング</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">ユーザー設定</translation>
 <translation id="3217205077783620295">音量はオンになっています。切り替えると音声がミュートされます。</translation>
 <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="3255483164551725916">何ができる?</translation>
 <translation id="3269597722229482060">右クリック</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> はオンになっています。</translation>
 <translation id="5947494881799873997">元に戻す</translation>
 <translation id="595202126637698455">パフォーマンス追跡機能が有効です</translation>
-<translation id="5957083217255311415">モバイルデータ通信が無効になっています。</translation>
 <translation id="5958529069007801266">監視対象ユーザー</translation>
 <translation id="5960825221082587934">選択した項目の情報(定義、翻訳、単位変換など)をアシスタントで表示します。</translation>
 <translation id="5977415296283489383">ヘッドホン</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">シェルフに入力オプション メニューのふきだしを表示するためのショートカットが変わりました。今後は <ph name="OLD_SHORTCUT" /> ではなく <ph name="NEW_SHORTCUT" /> を使用してください。</translation>
 <translation id="8444246603146515890">デスク <ph name="DESK_TITILE" /> が有効になりました</translation>
 <translation id="8452135315243592079">SIM カードがありません</translation>
-<translation id="8454013096329229812">Wi-Fi が有効になりました。</translation>
 <translation id="8462305545768648477">「選択して読み上げ」を閉じる</translation>
 <translation id="847056008324733326">表示スケールの設定</translation>
 <translation id="8473301994082929012"><ph name="FEATURE_NAME" />は <ph name="ORGANIZATION_NAME" /> により<ph name="FEATURE_STATE" />に設定されています。</translation>
diff --git a/ash/strings/ash_strings_ka.xtb b/ash/strings/ash_strings_ka.xtb
index 735fac6..5b653dc 100644
--- a/ash/strings/ash_strings_ka.xtb
+++ b/ash/strings/ash_strings_ka.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">ასისტენტი (იტვირთება...)</translation>
 <translation id="1838895407229022812">ღამის განათება გამორთულია.</translation>
-<translation id="1850504506766569011">Wi-Fi გამორთულია.</translation>
 <translation id="1864454756846565995">USB-C მოწყობილობა (უკანა პორტი)</translation>
 <translation id="1882814835921407042">მობილური ქსელი არ არის</translation>
 <translation id="1882897271359938046">გამოსახვა <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">მომხმარებლის პარამეტრები</translation>
 <translation id="3217205077783620295">ხმა ჩართულია, გადართვისას აუდიო დადუმდება.</translation>
 <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="3255483164551725916">რისი გაკეთება შეგიძლია?</translation>
 <translation id="3269597722229482060">მარჯვენა დაწკაპუნება</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> ჩართულია.</translation>
 <translation id="5947494881799873997">დაბრუნება</translation>
 <translation id="595202126637698455">ეფექტურობის ტრასირება ჩართულია</translation>
-<translation id="5957083217255311415">მობილური ინტერნეტი გამორთულია.</translation>
 <translation id="5958529069007801266">კონტროლის ქვეშ მყოფი მომხმარებელი</translation>
 <translation id="5960825221082587934">მიეცით საშუალება ასისტენტს, გაჩვენოთ არჩეულ კონტენტთან დაკავშირებული ინფორმაცია, მაგალითად, განმარტება, თარგმანი ან საზომი ერთეულის გარდაქმნის ვარიანტი.</translation>
 <translation id="5977415296283489383">ყურსასმენი</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">თაროზე შეყვანის ვარიანტების მენიუს ბუშტის გამოჩენის მალსახმობი შეიცვალა. გთხოვთ, გამოიყენოთ <ph name="NEW_SHORTCUT" /> და არა — <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">სამუშაო მაგიდა <ph name="DESK_TITILE" /> გააქტიურებულია</translation>
 <translation id="8452135315243592079">აკლია SIM ბარათი</translation>
-<translation id="8454013096329229812">Wi-Fi ჩართულია.</translation>
 <translation id="8462305545768648477">წარმოსათქმელად მონიშვნის დახურვა</translation>
 <translation id="847056008324733326">ჩვენების მასშტაბის პარამეტრები</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" />-ს აქვს <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb
index ab52c34..302efb6 100644
--- a/ash/strings/ash_strings_kk.xtb
+++ b/ash/strings/ash_strings_kk.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistant (жүктелуде...)</translation>
 <translation id="1838895407229022812">"Түнгі жарық" функциясы өшірулі.</translation>
-<translation id="1850504506766569011">Wi-Fi өшірілді.</translation>
 <translation id="1864454756846565995">USB-C құрылғысы (артқы ұяшық)</translation>
 <translation id="1882814835921407042">Мобильдік желі жоқ.</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> арқылы экран көшірмесін көрсету</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Пайдаланушы параметрлері</translation>
 <translation id="3217205077783620295">Дыбыс деңгейі қосылып тұр. Түймені қайта бассаңыз, дауыс өшеді.</translation>
 <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="3255483164551725916">Сен не істей аласың?</translation>
 <translation id="3269597722229482060">Тінтуірдің оң жақ түймесін басу</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> қосулы.</translation>
 <translation id="5947494881799873997">Қайтару</translation>
 <translation id="595202126637698455">Өнімділікті бақылау қосылған</translation>
-<translation id="5957083217255311415">Мобильдік деректер өшірулі.</translation>
 <translation id="5958529069007801266">Бақылаудағы пайдаланушы</translation>
 <translation id="5960825221082587934">Assistant қолданбасына анықтама, аударма немесе бірлікті түрлендіру сияқты ақпаратты көрсетуге мүмкіндік беріңіз.</translation>
 <translation id="5977415296283489383">Құлақаспап</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Сөредегі енгізу опцияларының қалқымалы анықтамасын шығаратын пернелер тіркесі өзгерді. <ph name="OLD_SHORTCUT" /> орнына <ph name="NEW_SHORTCUT" /> тіркесін қолданыңыз.</translation>
 <translation id="8444246603146515890"><ph name="DESK_TITILE" /> үстелі іске қосылды.</translation>
 <translation id="8452135315243592079">SIM картасы жоқ</translation>
-<translation id="8454013096329229812">Wi-Fi қосылды.</translation>
 <translation id="8462305545768648477">Select-to-Speak функциясын жабу</translation>
 <translation id="847056008324733326">Дисплей масштабы параметрлері</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> ұйымы <ph name="FEATURE_NAME" /> функциясын <ph name="FEATURE_STATE" />.</translation>
diff --git a/ash/strings/ash_strings_km.xtb b/ash/strings/ash_strings_km.xtb
index 84af016..96150e5 100644
--- a/ash/strings/ash_strings_km.xtb
+++ b/ash/strings/ash_strings_km.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">អ៊ីសឺរណិត៖ <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">ជំនួយការ (កំពុង​ផ្ទុក...)</translation>
 <translation id="1838895407229022812">បានបិទពន្លឺពេលយប់។</translation>
-<translation id="1850504506766569011">Wi-Fi ត្រូវបានបិទ។</translation>
 <translation id="1864454756846565995">ឧបករណ៍ USB-C (រន្ធខាងក្រោយ)</translation>
 <translation id="1882814835921407042">គ្មានបណ្ដាញ​ទូរសព្ទចល័តទេ</translation>
 <translation id="1882897271359938046">កំពុងឆ្លុះទៅ <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">ការ​កំណត់​អ្នកប្រើប្រាស់</translation>
 <translation id="3217205077783620295">កម្រិត​សំឡេង​ត្រូវបានបើក ការបិទ​នឹងបិទសំឡេង។</translation>
 <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="3255483164551725916">តើអ្នក​អាច​ធ្វើអ្វី​បានខ្លះ?</translation>
 <translation id="3269597722229482060">ចុចកណ្ដុរខាងស្ដាំ</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> បាន​បើក។</translation>
 <translation id="5947494881799873997">ត្រលប់ក្រោយ</translation>
 <translation id="595202126637698455">ការតាមដានប្រតិបត្តិការបានបើកដំណើរការ</translation>
-<translation id="5957083217255311415">ទិន្នន័យ​ទូរសព្ទចល័ត​ត្រូវបានបិទ។</translation>
 <translation id="5958529069007801266">អ្នកប្រើដែលបានចាត់</translation>
 <translation id="5960825221082587934">អនុញ្ញាត​ឱ្យ​ជំនួយ​ការបង្ហាញព័ត៌មាន​ដូចជា និយមន័យ ការបកប្រែ ឬការបំប្លែងខ្នាត​សម្រាប់ការជ្រើសរើស​របស់អ្នក។</translation>
 <translation id="5977415296283489383">កាសត្រចៀក</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">ផ្លូវកាត់សម្រាប់បង្ហាញម៉ឺនុយជម្រើសបញ្ចូលសារលេចឡើងនៅក្នុងធ្នើរបានផ្លាស់ប្តូរ។ សូមប្រើ <ph name="NEW_SHORTCUT" /> ជំនួសឲ្យ <ph name="OLD_SHORTCUT" /> ។</translation>
 <translation id="8444246603146515890">បានបើកដំណើរការតុទី <ph name="DESK_TITILE" /></translation>
 <translation id="8452135315243592079">បាត់ស៊ីមកាត</translation>
-<translation id="8454013096329229812">Wi-Fi ត្រូវបានបើក។</translation>
 <translation id="8462305545768648477">បិទមុខងារជ្រើសរើសដើម្បីអាន</translation>
 <translation id="847056008324733326">ការកំណត់​មាត្រដ្ឋានអេក្រង់</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> មាន <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />។</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb
index 0ff6e67..a1d82334 100644
--- a/ash/strings/ash_strings_kn.xtb
+++ b/ash/strings/ash_strings_kn.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">ಇಥರ್ನೆಟ್: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">ಸಹಾಯಕ (ಲೋಡ್ ಆಗುತ್ತಿದೆ...)</translation>
 <translation id="1838895407229022812">ನೈಟ್ ಲೈಟ್ ಆಫ್ ಆಗಿದೆ.</translation>
-<translation id="1850504506766569011">ವೈ-ಫೈ ಆಫ್ ಮಾಡಲಾಗಿದೆ.</translation>
 <translation id="1864454756846565995">USB-C ಸಾಧನ (ಹಿಂದಿನ ಪೋರ್ಟ್)</translation>
 <translation id="1882814835921407042">ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್ ಇಲ್ಲ</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> ಗೆ ಪ್ರತಿಬಿಂಬಿಸುತ್ತಿದೆ</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">ಬಳಕೆದಾರರ ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
 <translation id="3217205077783620295">ವಾಲ್ಯೂಮ್ ಆನ್ ಆಗಿದೆ, ಟಾಗಲ್ ಮಾಡುವುದರಿಂದ ಆಡಿಯೊ ಮ್ಯೂಟ್ ಆಗುತ್ತದೆ.</translation>
 <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="3255483164551725916">ನೀವೇನು ಮಾಡಬಲ್ಲಿರಿ?</translation>
 <translation id="3269597722229482060">ಬಲ-ಕ್ಲಿಕ್</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> ಆನ್ ಆಗಿದೆ.</translation>
 <translation id="5947494881799873997">ಹಿಂತಿರುಗಿಸು</translation>
 <translation id="595202126637698455">ಕಾರ್ಯಕ್ಷಮತೆ ಟ್ರೇಸಿಂಗ್ ಸಕ್ರಿಯಗೊಂಡಿದೆ</translation>
-<translation id="5957083217255311415">ಮೊಬೈಲ್ ಡೇಟಾ ಆಫ್ ಮಾಡಲಾಗಿದೆ.</translation>
 <translation id="5958529069007801266">ಮೇಲ್ವಿಚಾರಣೆಗೊಳಪಟ್ಟ ಬಳಕೆದಾರರು</translation>
 <translation id="5960825221082587934">ನಿಮ್ಮ ಆಯ್ಕೆಗೆ ಸಂಬಂಧಿಸಿದ ವ್ಯಾಖ್ಯಾನ, ಅನುವಾದ ಅಥವಾ ಯೂನಿಟ್ ಪರಿವರ್ತನೆಯಂತಹ ಮಾಹಿತಿಯನ್ನು Assistant ತೋರಿಸಲಿ.</translation>
 <translation id="5977415296283489383">ಹೆಡ್‌ಫೋನ್</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">ಶೆಲ್ಫ್‌ನಲ್ಲಿ ಇನ್‌ಪುಟ್ ಆಯ್ಕೆಗಳ ಮೆನು ಬಬಲ್ ತೋರಿಸುವ ಶಾರ್ಟ್‌ಕಟ್ ಬದಲಾಗಿದೆ. <ph name="OLD_SHORTCUT" /> ಬದಲಿಗೆ <ph name="NEW_SHORTCUT" /> ಬಳಸಿ.</translation>
 <translation id="8444246603146515890"><ph name="DESK_TITILE" /> ಡೆಸ್ಕ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation>
 <translation id="8452135315243592079">ಕಾಣೆಯಾಗಿರುವ ಸಿಮ್ ಕಾರ್ಡ್</translation>
-<translation id="8454013096329229812">ವೈ-ಫೈ ಆನ್ ಮಾಡಲಾಗಿದೆ.</translation>
 <translation id="8462305545768648477">ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಆಲಿಸಿ ಅನ್ನು ಮುಚ್ಚಿರಿ</translation>
 <translation id="847056008324733326">ಮಾಪಕ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೋರಿಸಿ</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" />, <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" /> ಹೊಂದಿದೆ.</translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb
index 33c7bdd..d4bed061 100644
--- a/ash/strings/ash_strings_ko.xtb
+++ b/ash/strings/ash_strings_ko.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">이더넷: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">어시스턴트(로드 중...)</translation>
 <translation id="1838895407229022812">야간 조명이 꺼졌습니다.</translation>
-<translation id="1850504506766569011">Wi-Fi가 꺼져 있습니다.</translation>
 <translation id="1864454756846565995">USB-C 기기(후면 포트)</translation>
 <translation id="1882814835921407042">모바일 네트워크 없음</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" />에 미러링</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">사용자 설정</translation>
 <translation id="3217205077783620295">볼륨이 켜져 있으며 전환하면 오디오가 꺼집니다.</translation>
 <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="3255483164551725916">무엇을 할 수 있어?</translation>
 <translation id="3269597722229482060">마우스 오른쪽 버튼 클릭</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> 기능이 켜져 있습니다.</translation>
 <translation id="5947494881799873997">되돌리기</translation>
 <translation id="595202126637698455">성능 추적 사용 중</translation>
-<translation id="5957083217255311415">모바일 데이터가 사용 중지되었습니다.</translation>
 <translation id="5958529069007801266">관리 대상 사용자</translation>
 <translation id="5960825221082587934">어시스턴트가 선택 항목의 정의, 번역 또는 단위 변환과 같은 정보를 표시하도록 허용합니다.</translation>
 <translation id="5977415296283489383">헤드폰</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">실행기에서 입력 옵션 메뉴 도움말 풍선을 표시하는 단축키가 변경되었습니다. <ph name="OLD_SHORTCUT" /> 대신 <ph name="NEW_SHORTCUT" />을(를) 사용하세요.</translation>
 <translation id="8444246603146515890"><ph name="DESK_TITILE" /> 데스크가 활성화되었습니다.</translation>
 <translation id="8452135315243592079">SIM 카드 없음</translation>
-<translation id="8454013096329229812">Wi-Fi가 켜져 있습니다.</translation>
 <translation id="8462305545768648477">텍스트 읽어주기 닫기</translation>
 <translation id="847056008324733326">배율 설정 표시</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" />에서 <ph name="FEATURE_NAME" /> 기능을 <ph name="FEATURE_STATE" /> 상태로 설정했습니다.</translation>
diff --git a/ash/strings/ash_strings_ky.xtb b/ash/strings/ash_strings_ky.xtb
index 3ec2f29..aa1adfc 100644
--- a/ash/strings/ash_strings_ky.xtb
+++ b/ash/strings/ash_strings_ky.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Жардамчы (жүктөлүүдө...)</translation>
 <translation id="1838895407229022812">Түнкү жарык өчүк.</translation>
-<translation id="1850504506766569011">Wi-Fi өчүрүлгөн.</translation>
 <translation id="1864454756846565995">USB-C түзмөгү (арткы оюкча)</translation>
 <translation id="1882814835921407042">Мобилдик Интернет жок</translation>
 <translation id="1882897271359938046">Төмөнкүгө чагылыштыруу <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Колдонуучунун жөндөөлөрү</translation>
 <translation id="3217205077783620295">Үнү чыгып турат, өчүрүү менен аудионун үнү басылат.</translation>
 <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="3255483164551725916">Эмне кыла аласыз?</translation>
 <translation id="3269597722229482060">Оң баскычын чыкылдатуу</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> күйүк.</translation>
 <translation id="5947494881799873997">Кайтаруу</translation>
 <translation id="595202126637698455">Иштин майнаптуулугуна көз салуу аракети иштетилди</translation>
-<translation id="5957083217255311415">Мобилдик Интернет өчүрүлгөн.</translation>
 <translation id="5958529069007801266">Көзөмөлдөнгөн колдонуучу</translation>
 <translation id="5960825221082587934">Жардамчыга тандаган нерсеңиздин аныктамасын, котормосун же бирдикти которуу сыяктуу маалыматты көрсөтүүгө уруксат бериңиз.</translation>
 <translation id="5977415296283489383">Гарнитура</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Баштоо панелиндеги киргизүү параметрлеринин менюсунун көбүгүн ача турган ыкчам баскычтар өзгөргөн. <ph name="OLD_SHORTCUT" /> ордуна <ph name="NEW_SHORTCUT" /> баскычтарын колдонуңуз.</translation>
 <translation id="8444246603146515890"><ph name="DESK_TITILE" />-иш такта жандырылды</translation>
 <translation id="8452135315243592079">SIM-картасы жок</translation>
-<translation id="8454013096329229812">Wi-Fi күйгүзүлгөн.</translation>
 <translation id="8462305545768648477">"Басып туруп угуңуз" функциясын жабуу</translation>
 <translation id="847056008324733326">Дисплей шкаласынын жөндөөлөрү</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> уюмунун <ph name="FEATURE_NAME" /> функциясы <ph name="FEATURE_STATE" /> абалда.</translation>
diff --git a/ash/strings/ash_strings_lo.xtb b/ash/strings/ash_strings_lo.xtb
index 2a61839..6bd3c71 100644
--- a/ash/strings/ash_strings_lo.xtb
+++ b/ash/strings/ash_strings_lo.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">ອີເທີເນັດ: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">ຜູ້ຊ່ວຍ (ກຳລັງໂຫຼດຢູ່...)</translation>
 <translation id="1838895407229022812">ແສງກາງຄືນປິດຢູ່.</translation>
-<translation id="1850504506766569011">Wi​-Fi ປິດແລ້ວ​.</translation>
 <translation id="1864454756846565995">ອຸ​ປະ​ກອນ USB-C (ຜອດ​ດ້ານຫຼັງ)</translation>
 <translation id="1882814835921407042">ບໍ່ມີເຄືອຂ່າຍມືຖື</translation>
 <translation id="1882897271359938046">ການສ່ອງໜ້າຈໍໃສ່ <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">ຕັ້ງຄ່າຜູ້ໃຊ້</translation>
 <translation id="3217205077783620295">ລະດັບສຽງເປີດຢູ່, ການສະຫຼັບຈະປິດສຽງ.</translation>
 <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="3255483164551725916">ທ່ານເຮັດຫຍັງໄດ້ແດ່?</translation>
 <translation id="3269597722229482060">ຄລິກຂວາ</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> ເປີດຢູ່.</translation>
 <translation id="5947494881799873997">ກັບຄືນ</translation>
 <translation id="595202126637698455">ການຕິດຕາມການປະຕິບັດເປີດໃຊ້ງານແລ້ວ</translation>
-<translation id="5957083217255311415">ຂໍ້ມູນມືຖືປິດຢູ່.</translation>
 <translation id="5958529069007801266">ຜູ້ໃຊ້ທີ່ມີການຄວບຄຸມດູແລ</translation>
 <translation id="5960825221082587934">ອະນຸຍາດໃຫ້ຜູ້ຊ່ວຍສະແດງຂໍ້ມູນ ເຊັ່ນ: ຄຳນິຍາມ, ຄຳແປ ຫຼື ການປ່ຽນຫົວໜ່ວຍສຳລັບການເລືອກຂອງທ່ານ.</translation>
 <translation id="5977415296283489383">ຫູຟັງ</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">ທາງລັດເພື່ອສະແດງຟອງເມນູຕົວເລືອກການປ້ອນຂໍ້ມູນໃນຖ້ານໄດ້ປ່ຽນແປງແລ້ວ. ກະລຸນາໃຊ້ <ph name="NEW_SHORTCUT" /> ແທນ <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">ເປີດນຳໃຊ້ເດັສ <ph name="DESK_TITILE" /> ແລ້ວ</translation>
 <translation id="8452135315243592079">ແຜ່ນ SIM ຫາຍໄປ</translation>
-<translation id="8454013096329229812">Wi​-Fi ເປີດແລ້ວ​.</translation>
 <translation id="8462305545768648477">ປິດເລືອກເພື່ອເວົ້າ</translation>
 <translation id="847056008324733326">ສະແດງການຕັ້ງຄ່າຂະໜາດ</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> ມີ <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_lt.xtb b/ash/strings/ash_strings_lt.xtb
index 599e6f1..19bbbbd 100644
--- a/ash/strings/ash_strings_lt.xtb
+++ b/ash/strings/ash_strings_lt.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Eternetas: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Padėjėjas (įkeliama...)</translation>
 <translation id="1838895407229022812">Nakties šviesa išjungta.</translation>
-<translation id="1850504506766569011">„Wi-Fi“ ryšys išjungtas.</translation>
 <translation id="1864454756846565995">USB-C įrenginys (prievadas gale)</translation>
 <translation id="1882814835921407042">Nėra mobiliojo ryšio tinklo</translation>
 <translation id="1882897271359938046">Dubliuojama <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Naudotojo nustatymai</translation>
 <translation id="3217205077783620295">Garsumas įjungtas; perjungiant garsas bus nutildytas.</translation>
 <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="3255483164551725916">„What can you do?“ (Ką gali atlikti?)</translation>
 <translation id="3269597722229482060">Spustelėti dešiniuoju klavišu</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">„<ph name="FEATURE_NAME" />“ įjungta.</translation>
 <translation id="5947494881799873997">Grąžinti</translation>
 <translation id="595202126637698455">Įgalintas našumo stebėjimas</translation>
-<translation id="5957083217255311415">Mobiliojo ryšio duomenys išjungti.</translation>
 <translation id="5958529069007801266">Prižiūrimas naudotojas</translation>
 <translation id="5960825221082587934">Leiskite Padėjėjui rodyti informaciją, pvz., apibrėžtį, vertimą ar matavimo vienetų konvertavimą, kad galėtumėte pasirinkti.</translation>
 <translation id="5977415296283489383">Ausinės</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Pakeistas įvesties parinkčių meniu debesėlio rodymo lentynoje spartusis klavišas. Naudokite <ph name="NEW_SHORTCUT" /> vietoje <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Darbalaukis „<ph name="DESK_TITILE" />“ suaktyvintas</translation>
 <translation id="8452135315243592079">Nėra SIM kortelės</translation>
-<translation id="8454013096329229812">„Wi-Fi“ ryšys įjungtas.</translation>
 <translation id="8462305545768648477">Uždaryti „Teksto ištarimo“ funkciją</translation>
 <translation id="847056008324733326">Ekrano mastelio nustatymai</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" />: <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_lv.xtb b/ash/strings/ash_strings_lv.xtb
index e3e14f0..5c43317 100644
--- a/ash/strings/ash_strings_lv.xtb
+++ b/ash/strings/ash_strings_lv.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet adrese: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Asistents (notiek ielāde...)</translation>
 <translation id="1838895407229022812">Nakts režīms ir izslēgts.</translation>
-<translation id="1850504506766569011">Wi-Fi tīkls ir izslēgts.</translation>
 <translation id="1864454756846565995">USB-C ierīce (aizmugurējā pieslēgvieta)</translation>
 <translation id="1882814835921407042">Nav mobilā tīkla</translation>
 <translation id="1882897271359938046">Spoguļo šeit: <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Lietotāja iestatījumi</translation>
 <translation id="3217205077783620295">Skaņa ir ieslēgta. Pārslēdzot tiks izslēgta skaņa.</translation>
 <translation id="3226991577105957773">vēl <ph name="COUNT" /></translation>
-<translation id="3236488194889173876">Mobilais tīkls nav pieejams</translation>
 <translation id="3249513730522716925">Logs <ph name="WINDOW_TITLE" /> pārvietots no darbvirsmas <ph name="ACTIVE_DESK" /> uz darbvirsmu <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Iespējamās darbības</translation>
 <translation id="3269597722229482060">Noklikšķināt ar peles labo pogu</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">Funkcija <ph name="FEATURE_NAME" /> ir ieslēgta.</translation>
 <translation id="5947494881799873997">Atjaunot</translation>
 <translation id="595202126637698455">Veiktspējas izsekošana ir iespējota</translation>
-<translation id="5957083217255311415">Mobilie dati ir izslēgti.</translation>
 <translation id="5958529069007801266">Uzraudzīts lietotājs</translation>
 <translation id="5960825221082587934">Atļaut Asistentam rādīt ar atlasīto saturu saistītu informāciju, piemēram, definīciju, tulkojumu vai citās mērvienībās izteiktu vērtību.</translation>
 <translation id="5977415296283489383">Austiņas</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Tika mainīti īsinājumtaustiņi, ar kuriem plauktā var parādīt ievades opciju izvēlnes burbuli. Lūdzu, turpmāk izmantojiet <ph name="NEW_SHORTCUT" />, nevis <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Darbvirsma <ph name="DESK_TITILE" /> ir aktivizēta</translation>
 <translation id="8452135315243592079">Nav SIM kartes.</translation>
-<translation id="8454013096329229812">Wi-Fi tīkls ir ieslēgts.</translation>
 <translation id="8462305545768648477">Aizvērt funkciju “Atlasīt, lai izrunātu”</translation>
 <translation id="847056008324733326">Displeja mēroga iestatījumi</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> ir <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_mk.xtb b/ash/strings/ash_strings_mk.xtb
index ec39a58..deb5024 100644
--- a/ash/strings/ash_strings_mk.xtb
+++ b/ash/strings/ash_strings_mk.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Етернет: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">„Помошник“ (се вчитува…)</translation>
 <translation id="1838895407229022812">„Ноќното светло“ е исклучено.</translation>
-<translation id="1850504506766569011">Wi-Fi е исклучено.</translation>
 <translation id="1864454756846565995">USB-Ц уред (задна порта)</translation>
 <translation id="1882814835921407042">Нема мобилна мрежа</translation>
 <translation id="1882897271359938046">Отсликување во <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Поставки на корисникот</translation>
 <translation id="3217205077783620295">Јачината на звук е вклучена. Ако смените, ќе се исклучи звукот на аудиото.</translation>
 <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="3255483164551725916">Што можеш да направиш?</translation>
 <translation id="3269597722229482060">Десен клик</translation>
@@ -585,7 +583,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> е вклучено.</translation>
 <translation id="5947494881799873997">Врати</translation>
 <translation id="595202126637698455">Овозможено е следење на изведбата</translation>
-<translation id="5957083217255311415">Мобилниот интернет е исклучен.</translation>
 <translation id="5958529069007801266">Надгледуван корисник</translation>
 <translation id="5960825221082587934">Дозволете „Помошникот“ да ви прикажува информации, како дефиниција, превод или конверзија на единиците за вашиот избор.</translation>
 <translation id="5977415296283489383">Слушалки</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">Кратенката за прикажување на балончето со мени со опции за внесување на полицата се промени. Користете <ph name="NEW_SHORTCUT" /> наместо <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Работен простор <ph name="DESK_TITILE" /> е активиран</translation>
 <translation id="8452135315243592079">Недостасува SIM-картичка</translation>
-<translation id="8454013096329229812">Wi-Fi е вклучено.</translation>
 <translation id="8462305545768648477">Затворете ја функцијата „Изберете за говор“</translation>
 <translation id="847056008324733326">Приказ на поставките за скала</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> има <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb
index db0f275..d6f51f3 100644
--- a/ash/strings/ash_strings_ml.xtb
+++ b/ash/strings/ash_strings_ml.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">ഇതർനെറ്റ്: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">സഹായി (ലോഡുചെയ്യുന്നു...)</translation>
 <translation id="1838895407229022812">നൈറ്റ് ലൈറ്റ് ഓഫാണ്.</translation>
-<translation id="1850504506766569011">Wi-Fi ഓഫുചെയ്‌തു.</translation>
 <translation id="1864454756846565995">USB-C ഉപകരണം (പുറകിലെ പോർട്ട്)</translation>
 <translation id="1882814835921407042">മൊബൈൽ നെറ്റ്‌വർക്ക് ഇല്ല</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> എന്നതിലേക്ക് മിറർ ചെയ്യുന്നു</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">ഉപയോക്തൃ ക്രമീകരണം</translation>
 <translation id="3217205077783620295">വോളിയം ഓണാണ്, മാറ്റുന്നത് ഓഡിയോയെ മ്യൂട്ട് ആക്കും.</translation>
 <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="3255483164551725916">നിങ്ങൾക്ക് എന്ത് ചെയ്യാനാവും?</translation>
 <translation id="3269597722229482060">വലത് ക്ലിക്ക്</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> ഓണാണ്.</translation>
 <translation id="5947494881799873997">പഴയപടിയാക്കുക</translation>
 <translation id="595202126637698455">പ്രകടനം പിന്തുടരൽ പ്രവർത്തനക്ഷമമാക്കി</translation>
-<translation id="5957083217255311415">മൊബൈൽ ഡാറ്റ ഓഫാക്കി.</translation>
 <translation id="5958529069007801266">മേൽനോട്ടത്തിലുള്ള ഉപയോക്താവ്</translation>
 <translation id="5960825221082587934">നിർവചനമോ വിവർത്തനമോ യൂണിറ്റ് പരിവർത്തനമോ പോലുള്ള വിവരങ്ങൾ കാണിക്കാൻ Assistant-നെ അനുവദിക്കുക.</translation>
 <translation id="5977415296283489383">ഹെഡ്‌ഫോൺ</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">ഷെൽഫിലെ ഇൻപുട്ട് ഓപ്ഷൻ മെനു ബബിൾ കാണുന്നതിനുള്ള കുറുക്കുവഴി മാറ്റി. <ph name="OLD_SHORTCUT" /> എന്നതിന് പകരം <ph name="NEW_SHORTCUT" /> ഉപയോഗിക്കുക.</translation>
 <translation id="8444246603146515890">ഡെസ്‌ക് <ph name="DESK_TITILE" /> സജീവമാക്കി</translation>
 <translation id="8452135315243592079">സിം കാർഡ് കാണുന്നില്ല</translation>
-<translation id="8454013096329229812">Wi-Fi ഓൺ ചെയ്‌തു.</translation>
 <translation id="8462305545768648477">വായിച്ചുകേൾക്കാൻ തിരഞ്ഞെടുക്കുക അടയ്ക്കുക</translation>
 <translation id="847056008324733326">സ്‌കെയിൽ ക്രമീകരണം പ്രദർശിപ്പിക്കുക</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> എന്ന സ്ഥാപനം <ph name="FEATURE_NAME" /> എന്ന ഫീച്ചർ <ph name="FEATURE_STATE" />.</translation>
diff --git a/ash/strings/ash_strings_mn.xtb b/ash/strings/ash_strings_mn.xtb
index 47b4600..ce8dc138 100644
--- a/ash/strings/ash_strings_mn.xtb
+++ b/ash/strings/ash_strings_mn.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Этернет: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Туслах (ачаалж байна...)</translation>
 <translation id="1838895407229022812">Шөнийн гэрэл унтраалттай байна.</translation>
-<translation id="1850504506766569011">Wi-Fi унтраалттай байна.</translation>
 <translation id="1864454756846565995">USB-C төхөөрөмж (ард талын порт)</translation>
 <translation id="1882814835921407042">Мобайл сүлжээ алга</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> руу тусгаж байна</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Хэрэглэгчийн тохиргоо</translation>
 <translation id="3217205077783620295">Дууг нээсэн, унтраах нь аудионы дууг хаана.</translation>
 <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="3255483164551725916">Та юу хийх боломжтой вэ?</translation>
 <translation id="3269597722229482060">Баруун талыг товших</translation>
@@ -585,7 +583,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> асаалттай байна.</translation>
 <translation id="5947494881799873997">Буцаах</translation>
 <translation id="595202126637698455">Гүйцэтгэлийн ажиглалтыг идэвхжүүлсэн</translation>
-<translation id="5957083217255311415">Мобайл дата унтраалттай байна.</translation>
 <translation id="5958529069007801266">Хяналттай хэрэглэгч</translation>
 <translation id="5960825221082587934">Туслахад тодорхойлолт, орчуулга эсвэл нэгжийн хөрвүүлэлт зэрэг мэдээллийг таны сонголтод харуулахыг зөвшөөрнө үү.</translation>
 <translation id="5977415296283489383">Чихэвч</translation>
@@ -886,7 +883,6 @@
 <ph name="OLD_SHORTCUT" />-н оронд <ph name="NEW_SHORTCUT" />-г ашиглана уу.</translation>
 <translation id="8444246603146515890"><ph name="DESK_TITILE" /> дэлгэцийг идэвхжүүлсэн байна</translation>
 <translation id="8452135315243592079">SIM карт олдсонгүй</translation>
-<translation id="8454013096329229812">Wi-Fi асаасан.</translation>
 <translation id="8462305545768648477">Ярихаар сонгох онцлогийг хаах</translation>
 <translation id="847056008324733326">Дэлгэцийн хэмжээсийн тохиргоо</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> нь <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />-тай байна.</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb
index 726a4d72..1fa48a6 100644
--- a/ash/strings/ash_strings_mr.xtb
+++ b/ash/strings/ash_strings_mr.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">इथरनेट: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">साहाय्यक (लोड होत आहे...)</translation>
 <translation id="1838895407229022812">रात्रीचा प्रकाश बंद आहे.</translation>
-<translation id="1850504506766569011">वाय-फाय बंद आहे.</translation>
 <translation id="1864454756846565995">USB-C डिव्‍हाइस (मागील बाजूचे पोर्ट)</translation>
 <translation id="1882814835921407042">मोबाइल नेटवर्क नाही</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> वर मिरर करत आहे</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">वापरकर्ता सेटिंग्ज</translation>
 <translation id="3217205077783620295">व्हॉल्यूम सुरू आहे, टॉगल केल्याने ऑडिओ म्यूट होईल.</translation>
 <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="3255483164551725916">तुला काय करता येते?</translation>
 <translation id="3269597722229482060">राइट क्लिक</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> सुरू आहे.</translation>
 <translation id="5947494881799873997">परत करा</translation>
 <translation id="595202126637698455">कार्यप्रदर्शन ट्रेसिंग सक्षम केले</translation>
-<translation id="5957083217255311415">मोबाइल डेटा बंद केला आहे.</translation>
 <translation id="5958529069007801266">पर्यवेक्षित वापरकर्ता</translation>
 <translation id="5960825221082587934">Assistant ला तुमच्या निवडीसाठी व्याख्या, भाषांतर किंवा एकक रूपांतर यांसारखी माहिती दाखवू द्या.</translation>
 <translation id="5977415296283489383">हेडफोन</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">शेल्फमधील इनपुट पर्याय मेनू दर्शविण्यासाठीचा शॉर्टकट बदलला आहे. कृपया <ph name="OLD_SHORTCUT" /> ऐवजी <ph name="NEW_SHORTCUT" /> वापरा.</translation>
 <translation id="8444246603146515890">डेस्क <ph name="DESK_TITILE" /> ॲक्टिव्हेट केले</translation>
 <translation id="8452135315243592079">गहाळ सिम कार्ड</translation>
-<translation id="8454013096329229812">वाय-फाय सुरू आहे.</translation>
 <translation id="8462305545768648477">बोलण्यासाठी निवडा बंद करा</translation>
 <translation id="847056008324733326">स्केल सेटिंग्‍ज दाखवा</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> कडे <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" /> आहेत.</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb
index 37a3b26..8ad0f04 100644
--- a/ash/strings/ash_strings_ms.xtb
+++ b/ash/strings/ash_strings_ms.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Pembantu (memuat...)</translation>
 <translation id="1838895407229022812">Cahaya Malam dimatikan.</translation>
-<translation id="1850504506766569011">Wi-Fi dimatikan.</translation>
 <translation id="1864454756846565995">Peranti USB-C (port belakang)</translation>
 <translation id="1882814835921407042">Tiada rangkaian mudah alih</translation>
 <translation id="1882897271359938046">Mencerminkan <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Tetapan Pengguna</translation>
 <translation id="3217205077783620295">Kelantangan dihidupkan. Tindakan menogol akan meredamkan audio.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /> lagi</translation>
-<translation id="3236488194889173876">Tiada rangkaian mudah alih tersedia</translation>
 <translation id="3249513730522716925">Tetingkap <ph name="WINDOW_TITLE" /> dialihkan daripada Meja <ph name="ACTIVE_DESK" /> ke Meja <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Apakah yang boleh anda lakukan?</translation>
 <translation id="3269597722229482060">Klik Kanan</translation>
@@ -585,7 +583,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> dihidupkan.</translation>
 <translation id="5947494881799873997">Berbalik</translation>
 <translation id="595202126637698455">Penjejakan prestasi didayakan</translation>
-<translation id="5957083217255311415">Data mudah alih dimatikan.</translation>
 <translation id="5958529069007801266">Pengguna diselia</translation>
 <translation id="5960825221082587934">Biarkan Assistant menunjukkan maklumat seperti takrif, terjemahan atau penukaran unit untuk pilihan anda.</translation>
 <translation id="5977415296283489383">Fon kepala</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">Pintasan untuk menunjukkan gelembung menu pilihan input dalam rak telah berubah. Sila gunakan <ph name="NEW_SHORTCUT" /> dan bukannya <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Meja <ph name="DESK_TITILE" /> diaktifkan</translation>
 <translation id="8452135315243592079">Kad SIM tiada</translation>
-<translation id="8454013096329229812">Wi-Fi dihidupkan.</translation>
 <translation id="8462305545768648477">Tutup Pilih untuk bercakap</translation>
 <translation id="847056008324733326">Tetapan skala paparan</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> mempunyai <ph name="FEATURE_NAME" /> yang <ph name="FEATURE_STATE" />.</translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb
index 24312c2a..a4d110ea 100644
--- a/ash/strings/ash_strings_my.xtb
+++ b/ash/strings/ash_strings_my.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">အီသာနက်− <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistant (ဖွင့်နေပါသည်...)</translation>
 <translation id="1838895407229022812">'ညအလင်းရောင်' ပိတ်ထားသည်။</translation>
-<translation id="1850504506766569011">ကြိုးမဲ့ ပိတ်ထားသည်။</translation>
 <translation id="1864454756846565995">USB-C ကိရိယာ (နောက်ဘက် ပို့တ်)</translation>
 <translation id="1882814835921407042">မိုဘိုင်းကွန်ရက် မရှိပါ</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> သို့ ပုံတူပွားနေ</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">အသုံးပြုသူ ဆက်တင်များ</translation>
 <translation id="3217205077783620295">အသံဖွင့်ထားသည်၊ ပိတ်လိုက်ခြင်းဖြင့် အသံကိုတိတ်လိုက်ပါမည်။</translation>
 <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="3255483164551725916">သင်ဘာလုပ်နိုင်သလဲ။</translation>
 <translation id="3269597722229482060">ညာဘက်ခလုတ်ကို နှိပ်ရန်</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> ဖွင့်ထားသည်။</translation>
 <translation id="5947494881799873997">မူလအခြေအနေ ပြန်သွားရန်</translation>
 <translation id="595202126637698455">ဆောင်ရွက်ချက်များကို ခြေရာခံနေသည်။</translation>
-<translation id="5957083217255311415">မိုဘိုင်းဒေတာကို ပိတ်ထားပါသည်။</translation>
 <translation id="5958529069007801266">ကြီးကြပ်မှုခံ အသုံးပြုသူ</translation>
 <translation id="5960825221082587934">သင်ရွေးထားသည့်အရာအတွက် အဓိပ္ပာယ်ဖွင့်ဆိုချက်၊ ဘာသာပြန်ဆိုချက် (သို့) ယူနစ်ပြောင်းလဲခြင်းကဲ့သို့ အချက်အလက်များကို Assistant က ပြနိုင်သည်။</translation>
 <translation id="5977415296283489383">နားကြပ်</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">စင်ပေါ်တွင် စာရိုက်စနစ်ရွေးချယ်စရာ မီနူးစာသားအကွက်ကို ပြသရန် ဖြတ်လမ်းလင့်ခ် ပြောင်းသွားပါပြီ။ <ph name="NEW_SHORTCUT" /> ကို <ph name="OLD_SHORTCUT" /> အစား သုံးပေးပါ။</translation>
 <translation id="8444246603146515890">မြင်ကွင်း <ph name="DESK_TITILE" /> စတင်ထားသည်</translation>
 <translation id="8452135315243592079">ဆင်းမ်ကဒ် မရှိပါ</translation>
-<translation id="8454013096329229812">ကြိုးမဲ့ အင်တာနက် ဖွင့်ထားသည်။</translation>
 <translation id="8462305545768648477">'စကားပြော ရွေးရန်' ကို ပိတ်ရန်</translation>
 <translation id="847056008324733326">မြင်ကွင်းစကေး ဆက်တင်များ</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> က <ph name="FEATURE_NAME" /> ကို <ph name="FEATURE_STATE" />။</translation>
diff --git a/ash/strings/ash_strings_ne.xtb b/ash/strings/ash_strings_ne.xtb
index 492ffefb..32a4c45 100644
--- a/ash/strings/ash_strings_ne.xtb
+++ b/ash/strings/ash_strings_ne.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">इथरनेट: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">सहायक (लोड गर्दै...)</translation>
 <translation id="1838895407229022812">रात्रि प्रकाश निष्क्रिय छ।</translation>
-<translation id="1850504506766569011">Wi-Fi बन्द गरिएको छ।</translation>
 <translation id="1864454756846565995">USB-C यन्त्र (पछाडिको पोर्ट)</translation>
 <translation id="1882814835921407042">मोबाइल नेटवर्कमा कनेक्ट भएको छैन</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> मा प्रतिबिम्बित गर्दै</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">प्रयोगकर्ताका सेटिङहरू</translation>
 <translation id="3217205077783620295">भोल्युम सक्रिय छ, टगल गर्नुले अडियो म्युट गर्ने छ।</translation>
 <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="3255483164551725916">तपाईं के गर्न सक्नुहुन्छ?</translation>
 <translation id="3269597722229482060">दायाँ क्लिक गर्नुहोस्</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> अन छ।</translation>
 <translation id="5947494881799873997">उल्टाउनुहोस्</translation>
 <translation id="595202126637698455">प्रदर्शन ट्रेसिङ सक्षम गरियो</translation>
-<translation id="5957083217255311415">मोबाइल डेटा निष्क्रिय पारिएको छ।</translation>
 <translation id="5958529069007801266">सुपरिवेक्षित प्रयोगकर्ता</translation>
 <translation id="5960825221082587934">सहायकलाई आफूले चयन गरेको पाठको परिभाषा, अनुवाद वा त्यसको एकाइ रूपान्तरण जस्ता जानकारी देखाउन दिनुहोस्।</translation>
 <translation id="5977415296283489383">हेडफोन</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">सेल्फमा इनपुट विकल्पहरूको मेनु बबल देखाउने सर्टकट परिवर्तन भएको छ। कृपया <ph name="OLD_SHORTCUT" /> को सट्टामा  <ph name="NEW_SHORTCUT" /> प्रयोग गर्नुहोस्।</translation>
 <translation id="8444246603146515890">डेस्क <ph name="DESK_TITILE" /> सक्रिय गरियो</translation>
 <translation id="8452135315243592079">SIM कार्ड उपलब्ध छैन</translation>
-<translation id="8454013096329229812">Wi-Fi खुला छ।</translation>
 <translation id="8462305545768648477">'सेलेक्ट टु स्पिक' बन्द गर्नुहोस्</translation>
 <translation id="847056008324733326">प्रदर्शनको स्केलका सेटिङहरू</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> सँग <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" /> छ।</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb
index 485c711..4d0bba7 100644
--- a/ash/strings/ash_strings_nl.xtb
+++ b/ash/strings/ash_strings_nl.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistent (laden...)</translation>
 <translation id="1838895407229022812">Nachtverlichting staat uit.</translation>
-<translation id="1850504506766569011">Wifi staat uit.</translation>
 <translation id="1864454756846565995">USB-C-apparaat (poort aan achterkant)</translation>
 <translation id="1882814835921407042">Geen mobiel netwerk</translation>
 <translation id="1882897271359938046">Spiegelen naar <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Gebruikersinstellingen</translation>
 <translation id="3217205077783620295">Volume staat aan. Als je het uitzet, hoor je geen audio.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /> andere meldingen</translation>
-<translation id="3236488194889173876">Geen mobiel netwerk beschikbaar</translation>
 <translation id="3249513730522716925">Het venster <ph name="WINDOW_TITLE" /> is verplaatst van bureaublad <ph name="ACTIVE_DESK" /> naar bureaublad <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Wat kun je doen?</translation>
 <translation id="3269597722229482060">Klikken met rechtermuisknop</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> staat aan.</translation>
 <translation id="5947494881799873997">Terugzetten</translation>
 <translation id="595202126637698455">Bijhouden van prestaties staat aan</translation>
-<translation id="5957083217255311415">Mobiele data staan uit.</translation>
 <translation id="5958529069007801266">Gelimiteerde gebruiker</translation>
 <translation id="5960825221082587934">Laat de Assistent informatie tonen zoals de definitie, vertaling of eenheidsconversie voor je selectie.</translation>
 <translation id="5977415296283489383">Hoofdtelefoon</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">De sneltoets waarmee je de ballon van het menu met invoeropties op de plank toont, is gewijzigd. Gebruik <ph name="NEW_SHORTCUT" /> in plaats van <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Bureaublad <ph name="DESK_TITILE" /> geactiveerd</translation>
 <translation id="8452135315243592079">Simkaart ontbreekt</translation>
-<translation id="8454013096329229812">Wifi staat aan.</translation>
 <translation id="8462305545768648477">'Selecteer om uitgesproken te worden' sluiten</translation>
 <translation id="847056008324733326">Instellingen voor weergaveschaal</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> heeft <ph name="FEATURE_NAME" /> <ph name="FEATURE_STATE" />.</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb
index 5665bc58..e293963 100644
--- a/ash/strings/ash_strings_no.xtb
+++ b/ash/strings/ash_strings_no.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistent (laster inn …)</translation>
 <translation id="1838895407229022812">Nattlys er av.</translation>
-<translation id="1850504506766569011">Wi-Fi er slått av.</translation>
 <translation id="1864454756846565995">USB-C-enhet (porten på baksiden)</translation>
 <translation id="1882814835921407042">Ingen mobilnettverk</translation>
 <translation id="1882897271359938046">Speiler <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Brukerinnstillinger</translation>
 <translation id="3217205077783620295">Volumet er på. Hvis du slår det av, kuttes lyden.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /> til</translation>
-<translation id="3236488194889173876">Ingen mobilnettverk er tilgjengelige</translation>
 <translation id="3249513730522716925">Vinduet <ph name="WINDOW_TITLE" /> ble flyttet fra skrivebord <ph name="ACTIVE_DESK" /> til skrivebord <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Hva kan du gjøre?</translation>
 <translation id="3269597722229482060">Høyreklikk</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> er på.</translation>
 <translation id="5947494881799873997">Tilbakestill</translation>
 <translation id="595202126637698455">Ytelsessporing er aktivert</translation>
-<translation id="5957083217255311415">Mobildata er slått av.</translation>
 <translation id="5958529069007801266">Administrert bruker</translation>
 <translation id="5960825221082587934">La assistenten vise informasjon som definisjoner, oversettelser og enhetsomregninger for det du markerer.</translation>
 <translation id="5977415296283489383">Hodetelefon</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Hurtigtasten for å vise boblen med menyen for valg av inndataalternativer på hyllen er endret. Bruk <ph name="NEW_SHORTCUT" /> i stedet for <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Skrivebord <ph name="DESK_TITILE" /> er aktivert</translation>
 <translation id="8452135315243592079">SIM-kort mangler</translation>
-<translation id="8454013096329229812">Wi-Fi er slått på.</translation>
 <translation id="8462305545768648477">Lukk Tekstopplesing</translation>
 <translation id="847056008324733326">Innstillinger for visningsskala</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> har <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb
index 26949cd..ae3fda4 100644
--- a/ash/strings/ash_strings_or.xtb
+++ b/ash/strings/ash_strings_or.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">ଇଥର୍ନେଟ୍: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">ଆସିଷ୍ଟାଣ୍ଟ (ଲୋଡ୍‌ ହେଉଛି...)</translation>
 <translation id="1838895407229022812">ନାଇଟ୍ ଲାଇଟ୍ ବନ୍ଦ ଅଛି।</translation>
-<translation id="1850504506766569011">ୱାଇ-ଫାଇ ବନ୍ଦ କରାଯାଇଛି</translation>
 <translation id="1864454756846565995">USB-C ଡିଭାଇସ୍ (ପଛ ପୋର୍ଟ)</translation>
 <translation id="1882814835921407042">କୌଣସି ମୋବାଇଲ ନେଟୱାର୍କ ନାହିଁ</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" />ର ପ୍ରତିଫଳନ</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">ଉପଯୋଗକର୍ତ୍ତା ସେଟିଂସ୍</translation>
 <translation id="3217205077783620295">ଭଲ୍ୟୁମ୍ ଚାଲୁ ଅଛି, ଟୋଗଲ୍ କରିବା ଦ୍ୱାରା ଅଡିଓ ମ୍ୟୁଟ୍ ହୋଇଯିବ।</translation>
 <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="3255483164551725916">ଆପଣ କ’ଣ କରିପାରିବେ?</translation>
 <translation id="3269597722229482060">ଡାହାଣ କ୍ଲିକ୍ କରନ୍ତୁ</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> ଚାଲୁ ଅଛି।</translation>
 <translation id="5947494881799873997">ପୂର୍ବାବସ୍ଥାକୁ ଆଣନ୍ତୁ</translation>
 <translation id="595202126637698455">କାର୍ଯ୍ୟଦକ୍ଷତା ଟ୍ରେସିଂ ସକ୍ଷମ କରାଯାଇଛି</translation>
-<translation id="5957083217255311415">ମୋବାଇଲ୍ ଡାଟା ବନ୍ଦ ଅଛି।</translation>
 <translation id="5958529069007801266">ପର୍ଯ୍ୟବେକ୍ଷିତ ଉପଯୋଗକର୍ତ୍ତା</translation>
 <translation id="5960825221082587934">ଆପଣଙ୍କ ଚୟନ ପାଇଁ Assistantକୁ ସଂଜ୍ଞା, ଅନୁବାଦ କିମ୍ବା ୟୁନିଟ୍ କନଭର୍ସନ୍ ପରି ସୂଚନା ଦେଖାଇବାକୁ ଦିଅନ୍ତୁ।</translation>
 <translation id="5977415296283489383">ହେଡ୍‌ଫୋନ୍‌</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">ସେଲ୍ଫ ମଧ୍ୟରେ ଇନ୍‍ପୁଟ୍ ବିକଳ୍ପ ମେନୁ ବବଲ୍ ଦେଖାଇବା ପାଇଁ ସର୍ଟକଟ୍ ବଦଳିଯାଇଛି। ଦୟାକରି <ph name="OLD_SHORTCUT" />ପରିବର୍ତ୍ତେ <ph name="NEW_SHORTCUT" />ବ୍ୟବହାର କରନ୍ତୁ।</translation>
 <translation id="8444246603146515890"><ph name="DESK_TITILE" /> ଡେସ୍କ ସକ୍ରିୟ କରାଯାଇଛି</translation>
 <translation id="8452135315243592079">ଅନୁପଲବ୍ଧ ଥିବା SIM କାର୍ଡ</translation>
-<translation id="8454013096329229812">ୱାଇ-ଫାଇ ଚାଲୁ ସ୍ଥିତିରେ ଅଛି।</translation>
 <translation id="8462305545768648477">ସିଲେକ୍ଟ-ଟୁ-ସ୍ପିକକୁ ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="847056008324733326">ଡିସପ୍ଲେ ସ୍କେଲ୍‌ ସେଟିଂସ୍‌</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" />ର <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />ଅଛି।</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb
index 75e8a41..7711a7a 100644
--- a/ash/strings/ash_strings_pa.xtb
+++ b/ash/strings/ash_strings_pa.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">ਈਥਰਨੈੱਟ: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">ਸਹਾਇਕ (ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...)</translation>
 <translation id="1838895407229022812">ਰਾਤ ਦੀ ਰੋਸ਼ਨੀ ਬੰਦ ਹੈ।</translation>
-<translation id="1850504506766569011">ਵਾਈ-ਫਾਈ ਬੰਦ ਹੈ।</translation>
 <translation id="1864454756846565995">USB-C ਡੀਵਾਈਸ (ਪਿਛਲਾ ਪੋਰਟ)</translation>
 <translation id="1882814835921407042">ਕੋਈ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਨਹੀਂ ਹੈ</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> ਲਈ ਪ੍ਰਤਿਬਿੰਬੀਕਰਨ</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">ਵਰਤੋਂਕਾਰ ਸੈਟਿੰਗਾਂ</translation>
 <translation id="3217205077783620295">ਅਵਾਜ਼ ਚਾਲੂ ਹੈ, ਟੌਗਲ ਕਰਨ 'ਤੇ ਆਡੀਓ ਮਿਊਟ ਹੋ ਜਾਵੇਗਾ।</translation>
 <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="3255483164551725916">ਤੁਸੀਂ ਕੀ ਕਰ ਸਕਦੇ ਹੋ?</translation>
 <translation id="3269597722229482060">ਸੱਜਾ-ਕਲਿੱਕ</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> ਚਾਲੂ ਹੈ।</translation>
 <translation id="5947494881799873997">ਵਾਪਸ ਲਿਆਓ</translation>
 <translation id="595202126637698455">ਪ੍ਰਦਰਸ਼ਨ ਟ੍ਰੇਸਿੰਗ ਸਮਰਥਿਤ</translation>
-<translation id="5957083217255311415">ਮੋਬਾਈਲ  ਡਾਟਾ  ਬੰਦ ਕੀਤਾ ਹੋਇਆ ਹੈ।</translation>
 <translation id="5958529069007801266">ਨਿਗਰਾਨੀ ਕੀਤੇ ਵਰਤੋਂਕਾਰ</translation>
 <translation id="5960825221082587934">Assistant ਨੂੰ ਤੁਹਾਡੀ ਚੋਣ ਲਈ ਪਰਿਭਾਸ਼ਾ, ਅਨੁਵਾਦ ਜਾਂ ਇਕਾਈ ਰੂਪਾਂਤਰਨ ਵਰਗੀ ਜਾਣਕਾਰੀ ਦਿਖਾਉਣ ਦਿਓ।</translation>
 <translation id="5977415296283489383">ਹੈਡਫੋਨ</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">ਸ਼ੈਲਫ਼ ਵਿੱਚ ਇਨਪੁੱਟ ਵਿਕਲਪ ਮੀਨੂ ਬੁਲਬੁਲੇ ਨੂੰ ਦਿਖਾਉਣ ਵਾਲਾ ਸ਼ਾਰਟਕੱਟ ਬਦਲ ਗਿਆ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ <ph name="OLD_SHORTCUT" /> ਦੀ ਬਜਾਏ <ph name="NEW_SHORTCUT" /> ਵਰਤੋ।</translation>
 <translation id="8444246603146515890">ਡੈਸਕ <ph name="DESK_TITILE" /> ਕਿਰਿਆਸ਼ੀਲ ਕੀਤਾ ਗਿਆ</translation>
 <translation id="8452135315243592079">ਗੁੰਮ ਸਿਮ ਕਾਰਡ</translation>
-<translation id="8454013096329229812">ਵਾਈ-ਫਾਈ ਚਾਲੂ ਹੈ।</translation>
 <translation id="8462305545768648477">'ਚੁਣੋ ਅਤੇ ਸੁਣੋ' ਨੂੰ ਬੰਦ ਕਰੋ</translation>
 <translation id="847056008324733326">ਡਿਸਪਲੇ ਸਕੇਲ ਸੈਟਿੰਗਾਂ</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> ਕੋਲ <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" /> ਹੈ।</translation>
diff --git a/ash/strings/ash_strings_pl.xtb b/ash/strings/ash_strings_pl.xtb
index 515028a..7f00cb9e4 100644
--- a/ash/strings/ash_strings_pl.xtb
+++ b/ash/strings/ash_strings_pl.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Asystent (ładuję…)</translation>
 <translation id="1838895407229022812">Podświetlenie nocne jest wyłączone.</translation>
-<translation id="1850504506766569011">Wi-Fi wyłączone.</translation>
 <translation id="1864454756846565995">Urządzenie USB-C (tylny port)</translation>
 <translation id="1882814835921407042">Brak sieci komórkowej</translation>
 <translation id="1882897271359938046">Kopia na <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Ustawienia użytkownika</translation>
 <translation id="3217205077783620295">Dźwięk jest włączony. Kliknij, by wyciszyć.</translation>
 <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="3255483164551725916">Co potrafisz?</translation>
 <translation id="3269597722229482060">Kliknij prawym</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">Funkcja <ph name="FEATURE_NAME" /> jest włączona.</translation>
 <translation id="5947494881799873997">Przywróć</translation>
 <translation id="595202126637698455">Śledzenie wydajności jest włączone</translation>
-<translation id="5957083217255311415">Mobilna transmisja danych jest wyłączona.</translation>
 <translation id="5958529069007801266">Użytkownik nadzorowany</translation>
 <translation id="5960825221082587934">Asystent poda Ci informacje związane z zaznaczoną treścią, takie jak definicja, tłumaczenie czy przeliczenie jednostek.</translation>
 <translation id="5977415296283489383">Słuchawki</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Zmieniliśmy skrót, który pokazuje dymek menu opcji wejścia na półce. Zamiast <ph name="OLD_SHORTCUT" /> używaj teraz <ph name="NEW_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Aktywowano biurko <ph name="DESK_TITILE" /></translation>
 <translation id="8452135315243592079">Brak karty SIM</translation>
-<translation id="8454013096329229812">Wi-Fi włączone.</translation>
 <translation id="8462305545768648477">Zamknij funkcję Przeczytaj na głos</translation>
 <translation id="847056008324733326">Ustawienia skali wyświetlania</translation>
 <translation id="8473301994082929012">Funkcja <ph name="FEATURE_NAME" /> w organizacji <ph name="ORGANIZATION_NAME" /> jest <ph name="FEATURE_STATE" />.</translation>
diff --git a/ash/strings/ash_strings_pt-BR.xtb b/ash/strings/ash_strings_pt-BR.xtb
index bc4b340..cf5ab0f 100644
--- a/ash/strings/ash_strings_pt-BR.xtb
+++ b/ash/strings/ash_strings_pt-BR.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistente (carregando…)</translation>
 <translation id="1838895407229022812">O Modo noturno está desativado.</translation>
-<translation id="1850504506766569011">O Wi-Fi está desligado.</translation>
 <translation id="1864454756846565995">Dispositivo USB-C (porta traseira)</translation>
 <translation id="1882814835921407042">Rede móvel indisponível</translation>
 <translation id="1882897271359938046">Espelhamento de <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Configurações do usuário</translation>
 <translation id="3217205077783620295">O som está ativado. Alterná-lo desativará o som.</translation>
 <translation id="3226991577105957773">Mais <ph name="COUNT" /></translation>
-<translation id="3236488194889173876">Nenhuma rede móvel disponível</translation>
 <translation id="3249513730522716925">A janela <ph name="WINDOW_TITLE" /> foi movida do espaço de trabalho <ph name="ACTIVE_DESK" /> para o <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">O que você pode fazer?</translation>
 <translation id="3269597722229482060">Clique com o botão direito do mouse</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">O recurso <ph name="FEATURE_NAME" /> está ativado.</translation>
 <translation id="5947494881799873997">Reverter</translation>
 <translation id="595202126637698455">Rastreamento de desempenho ativado</translation>
-<translation id="5957083217255311415">Os dados móveis estão desativados.</translation>
 <translation id="5958529069007801266">Usuário supervisionado</translation>
 <translation id="5960825221082587934">Permitir que o Assistente mostre informações como a definição, a tradução ou a conversão de unidades da sua seleção.</translation>
 <translation id="5977415296283489383">Fone de ouvido</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">O atalho para mostrar o balão de menu de opções de entrada na estante foi alterado. Use <ph name="NEW_SHORTCUT" /> em vez de <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Espaço de trabalho <ph name="DESK_TITILE" /> ativado</translation>
 <translation id="8452135315243592079">Chip ausente</translation>
-<translation id="8454013096329229812">O Wi-Fi está ligado.</translation>
 <translation id="8462305545768648477">Fechar o Selecionar para ouvir</translation>
 <translation id="847056008324733326">Exibir configurações de escala</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> <ph name="FEATURE_STATE" /> o recurso <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb
index de078956..e08d511 100644
--- a/ash/strings/ash_strings_pt-PT.xtb
+++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistente (a carregar...)</translation>
 <translation id="1838895407229022812">A Luz noturna está desativada.</translation>
-<translation id="1850504506766569011">A ligação Wi-Fi está desativada.</translation>
 <translation id="1864454756846565995">Dispositivo USB-C (porta traseira)</translation>
 <translation id="1882814835921407042">Sem rede móvel</translation>
 <translation id="1882897271359938046">A espelhar para <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Definições do utilizador</translation>
 <translation id="3217205077783620295">O volume está ativado, premir o botão irá desativar o áudio.</translation>
 <translation id="3226991577105957773">E mais <ph name="COUNT" /></translation>
-<translation id="3236488194889173876">Nenhuma rede móvel disponível</translation>
 <translation id="3249513730522716925">A janela <ph name="WINDOW_TITLE" /> foi movida do espaço de trabalho <ph name="ACTIVE_DESK" /> para o espaço de trabalho <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">O que podes fazer?</translation>
 <translation id="3269597722229482060">Clicar com o botão direito do rato</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">A funcionalidade <ph name="FEATURE_NAME" /> está ativada.</translation>
 <translation id="5947494881799873997">Reverter</translation>
 <translation id="595202126637698455">Rastreio do desempenho ativado</translation>
-<translation id="5957083217255311415">Os dados móveis estão desativados.</translation>
 <translation id="5958529069007801266">Utilizador supervisionado</translation>
 <translation id="5960825221082587934">Permita que o Assistente lhe mostre informações como a definição, a tradução ou a conversão de unidades para a sua seleção.</translation>
 <translation id="5977415296283489383">Auscultador</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">O atalho para mostrar o balão do menu de opções de introdução na prateleira foi alterado. Utilize <ph name="NEW_SHORTCUT" /> em vez de <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Espaço de trabalho <ph name="DESK_TITILE" /> ativado</translation>
 <translation id="8452135315243592079">Cartão SIM em falta</translation>
-<translation id="8454013096329229812">A ligação Wi-Fi está ativada.</translation>
 <translation id="8462305545768648477">Fechar Selecionar para falar</translation>
 <translation id="847056008324733326">Definições de escala do ecrã</translation>
 <translation id="8473301994082929012">A <ph name="ORGANIZATION_NAME" /> colocou a funcionalidade <ph name="FEATURE_NAME" /> como <ph name="FEATURE_STATE" />.</translation>
diff --git a/ash/strings/ash_strings_ro.xtb b/ash/strings/ash_strings_ro.xtb
index 2641834..5103a2a8 100644
--- a/ash/strings/ash_strings_ro.xtb
+++ b/ash/strings/ash_strings_ro.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Asistent (se încarcă...)</translation>
 <translation id="1838895407229022812">Lumina de noapte este dezactivată.</translation>
-<translation id="1850504506766569011">Conexiunea Wi-Fi este dezactivată.</translation>
 <translation id="1864454756846565995">Dispozitiv USB-C (portul din spate)</translation>
 <translation id="1882814835921407042">Nu este disponibilă nicio rețea mobilă</translation>
 <translation id="1882897271359938046">Se oglindește pe <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Setările utilizatorului</translation>
 <translation id="3217205077783620295">Volumul este activat. Comutarea îl va dezactiva.</translation>
 <translation id="3226991577105957773">+ încă <ph name="COUNT" /></translation>
-<translation id="3236488194889173876">Nicio rețea mobilă disponibilă</translation>
 <translation id="3249513730522716925">Fereastra <ph name="WINDOW_TITLE" /> a fost mutată de pe desktopul <ph name="ACTIVE_DESK" /> pe desktopul <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Ce poți face?</translation>
 <translation id="3269597722229482060">Clic dreapta</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> este activat.</translation>
 <translation id="5947494881799873997">Reveniți</translation>
 <translation id="595202126637698455">Urmărirea performanței este activată</translation>
-<translation id="5957083217255311415">Datele mobile sunt dezactivate.</translation>
 <translation id="5958529069007801266">Utilizator monitorizat</translation>
 <translation id="5960825221082587934">Lasă Asistentul să îți arate informații cum ar fi definiția, traducerea sau conversia unităților pentru selecția ta.</translation>
 <translation id="5977415296283489383">Căști</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Comanda rapidă pentru afișarea în raft a balonului meniului cu opțiunile de introducere a textului a fost modificată. Folosește <ph name="NEW_SHORTCUT" /> în loc de <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Desktopul <ph name="DESK_TITILE" /> este activat</translation>
 <translation id="8452135315243592079">Lipsește cardul SIM</translation>
-<translation id="8454013096329229812">Conexiunea Wi-Fi este activată.</translation>
 <translation id="8462305545768648477">Închide funcția „Selectați și ascultați”</translation>
 <translation id="847056008324733326">Setările pentru scara afișajului</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> are <ph name="FEATURE_NAME" /> <ph name="FEATURE_STATE" />.</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb
index bf76842b..a752e5b 100644
--- a/ash/strings/ash_strings_ru.xtb
+++ b/ash/strings/ash_strings_ru.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Ассистент (загрузка…)</translation>
 <translation id="1838895407229022812">Ночная подсветка отключена</translation>
-<translation id="1850504506766569011">Wi-Fi отключен</translation>
 <translation id="1864454756846565995">Устройство USB-C (порт сзади)</translation>
 <translation id="1882814835921407042">Не подключено к мобильной сети</translation>
 <translation id="1882897271359938046">Дублирование экрана в <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Пользовательские настройки</translation>
 <translation id="3217205077783620295">Звук включен. Нажмите эту кнопку, чтобы отключить его.</translation>
 <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="3255483164551725916">Что ты умеешь?</translation>
 <translation id="3269597722229482060">Правый клик</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">Функция "<ph name="FEATURE_NAME" />" включена</translation>
 <translation id="5947494881799873997">Отменить</translation>
 <translation id="595202126637698455">Включено отслеживание эффективности</translation>
-<translation id="5957083217255311415">Мобильный Интернет отключен.</translation>
 <translation id="5958529069007801266">Контролируемый профиль</translation>
 <translation id="5960825221082587934">Разрешите Google Ассистенту показывать определение и перевод слова, а также конвертировать одни единицы измерения в другие.</translation>
 <translation id="5977415296283489383">Наушники</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Быстрые клавиши для вызова всплывающего окна с параметрами ввода на панели запуска изменились. Используйте <ph name="NEW_SHORTCUT" /> вместо <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Рабочий стол "<ph name="DESK_TITILE" />" активирован.</translation>
 <translation id="8452135315243592079">SIM-карта не обнаружена</translation>
-<translation id="8454013096329229812">Wi-Fi включен</translation>
 <translation id="8462305545768648477">Остановить озвучивание при нажатии</translation>
 <translation id="847056008324733326">Настройки масштаба экрана</translation>
 <translation id="8473301994082929012">Организация <ph name="ORGANIZATION_NAME" /> <ph name="FEATURE_STATE" /> функцию "<ph name="FEATURE_NAME" />".</translation>
diff --git a/ash/strings/ash_strings_si.xtb b/ash/strings/ash_strings_si.xtb
index bef6aaa..524427a0 100644
--- a/ash/strings/ash_strings_si.xtb
+++ b/ash/strings/ash_strings_si.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">ඊතර්නෙට්: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">සහායක (පූරණය වේ...)</translation>
 <translation id="1838895407229022812">රාත්‍රී ආලෝකය අක්‍රියයි.</translation>
-<translation id="1850504506766569011">Wi-Fi අක්‍රීය කර ඇත.</translation>
 <translation id="1864454756846565995">USB-C උපාංගය (පසුපස තොට)</translation>
 <translation id="1882814835921407042">ජංගම ජාලයක් නැත</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> වෙත කැඩපත් කරයි</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">පරිශීලක සැකසුම්</translation>
 <translation id="3217205077783620295">ශබ්දය ක්‍රියාත්මකයි, ටොගල කිරීම ශ්‍රව්‍ය නිහඬ කරනු ඇත.</translation>
 <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="3255483164551725916">ඔබට කළ හැක්කේ කුමක්ද?</translation>
 <translation id="3269597722229482060">දකුණු ක්ලික් කිරීම</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> ක්‍රියාත්මකයි.</translation>
 <translation id="5947494881799873997">ප්‍රතිවර්තනය</translation>
 <translation id="595202126637698455">ක්‍රියාකරිත්ව හඹායෑම සබල කෙරිණි</translation>
-<translation id="5957083217255311415">ජංගම දත්ත ක්‍රියාවිරහිතයි.</translation>
 <translation id="5958529069007801266">අධීක්ෂණය කරන ලද භාවිතකරු</translation>
 <translation id="5960825221082587934">සහායකට අර්ථ දැක්වීම, පරිවර්තනය හෝ ඒකක පරිවර්තනය වැනි තොරතුරු පෙන්වීමට ඉඩ දෙන්න.</translation>
 <translation id="5977415296283489383">කන් යොමු</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">රාක්කය තුළ ආදාන විකල්ප මෙනු බුබුළ පෙන්වීමේ කෙටි මග වෙනස් කර ඇත. <ph name="OLD_SHORTCUT" /> වෙනුවට <ph name="NEW_SHORTCUT" /> භාවිත කරන්න.</translation>
 <translation id="8444246603146515890"><ph name="DESK_TITILE" /> මේසය ක්‍රියාත්මක කළා</translation>
 <translation id="8452135315243592079">SIM පත අතුරුදහන්</translation>
-<translation id="8454013096329229812">Wi-Fi ඔන් කර ඇත.</translation>
 <translation id="8462305545768648477">කථා කිරීමට තෝරන්න වසන්න</translation>
 <translation id="847056008324733326">සංදර්ශන පරිමාණ සැකසීම්</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> හට <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" /> ඇත.</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb
index 833e682a..f1020c23 100644
--- a/ash/strings/ash_strings_sk.xtb
+++ b/ash/strings/ash_strings_sk.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Asistent (načítava sa...)</translation>
 <translation id="1838895407229022812">Nočný režim je vypnutý.</translation>
-<translation id="1850504506766569011">Pripojenie Wi‑Fi je vypnuté.</translation>
 <translation id="1864454756846565995">Zariadenie USB-C (port vzadu)</translation>
 <translation id="1882814835921407042">Žiadna mobilná sieť</translation>
 <translation id="1882897271359938046">Zrkadlenie na displej <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Nastavenia používateľa</translation>
 <translation id="3217205077783620295">Zvuk je zapnutý. Ak ho chcete vypnúť, prepnite tlačidlo.</translation>
 <translation id="3226991577105957773">a ďalšie (<ph name="COUNT" />)</translation>
-<translation id="3236488194889173876">Nie je k dispozícii žiadna mobilná sieť</translation>
 <translation id="3249513730522716925">Okno <ph name="WINDOW_TITLE" /> bolo presunuté z plochy <ph name="ACTIVE_DESK" /> na plochu <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Čo dokážeš?</translation>
 <translation id="3269597722229482060">Kliknúť pravým tlačidlom</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">Funkcia <ph name="FEATURE_NAME" /> je zapnutá.</translation>
 <translation id="5947494881799873997">Vrátiť</translation>
 <translation id="595202126637698455">Sledovanie výkonnosti je povolené</translation>
-<translation id="5957083217255311415">Mobilné dáta sú vypnuté.</translation>
 <translation id="5958529069007801266">Kontrolovaný používateľ</translation>
 <translation id="5960825221082587934">Nechajte si od Asistenta zobrazovať informácie súvisiace s vaším výberom, napríklad definíciu, preklad alebo konverziu jednotiek.</translation>
 <translation id="5977415296283489383">Slúchadlo</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Klávesová skratka na zobrazenie bubliny s možnosťami vstupu na poličke sa zmenila. Namiesto skratky <ph name="OLD_SHORTCUT" /> použite skratku <ph name="NEW_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Bola aktivovaná plocha <ph name="DESK_TITILE" /></translation>
 <translation id="8452135315243592079">Chýba SIM karta</translation>
-<translation id="8454013096329229812">Pripojenie Wi‑Fi je zapnuté.</translation>
 <translation id="8462305545768648477">Zavrieť počúvanie vybraného textu</translation>
 <translation id="847056008324733326">Nastavenia hustoty zobrazenia</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> má <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb
index 29b7f16b..ba452eb 100644
--- a/ash/strings/ash_strings_sl.xtb
+++ b/ash/strings/ash_strings_sl.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Pomočnik (nalaganje ...)</translation>
 <translation id="1838895407229022812">Nočna svetloba je izklopljena.</translation>
-<translation id="1850504506766569011">Wi-Fi je izklopljen.</translation>
 <translation id="1864454756846565995">Naprava USB-C (vrata zadaj)</translation>
 <translation id="1882814835921407042">Ni mobilnih omrežij</translation>
 <translation id="1882897271359938046">Zrcaljenje na <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Uporabniške nastavitve</translation>
 <translation id="3217205077783620295">Glasnost je vklopljena: če to preklopite, bo zvok izklopljen.</translation>
 <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="3255483164551725916">Kakšne možnosti so na voljo?</translation>
 <translation id="3269597722229482060">Desni klik</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">Funkcija <ph name="FEATURE_NAME" /> je vklopljena.</translation>
 <translation id="5947494881799873997">Razveljavi</translation>
 <translation id="595202126637698455">Sledenje učinkovitosti delovanja je omogočeno</translation>
-<translation id="5957083217255311415">Prenos podatkov v mobilnem omrežju je izklopljen.</translation>
 <translation id="5958529069007801266">Zaščiteni uporabnik</translation>
 <translation id="5960825221082587934">Naj vam Pomočnik prikazuje informacije, kot je definicija, prevod ali pretvorba enot za izbor.</translation>
 <translation id="5977415296283489383">Slušalke</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Bližnjica za prikaz oblačka menija z možnostmi vnosa na polici se je spremenila. Namesto <ph name="OLD_SHORTCUT" /> uporabite <ph name="NEW_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Namizje <ph name="DESK_TITILE" /> je bilo aktivirano</translation>
 <translation id="8452135315243592079">Ni kartice SIM</translation>
-<translation id="8454013096329229812">Wi-Fi je vklopljen.</translation>
 <translation id="8462305545768648477">Zapri »Izberite in poslušajte«</translation>
 <translation id="847056008324733326">Nastavitve zaslonskega razmerja</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> je <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb
index a8daadc..8ecffd70 100644
--- a/ash/strings/ash_strings_sq.xtb
+++ b/ash/strings/ash_strings_sq.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Eternet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Asistenti (po ngarkohet...)</translation>
 <translation id="1838895407229022812">"Drita e natës" është joaktive.</translation>
-<translation id="1850504506766569011">Wi-Fi është i çaktivizuar.</translation>
 <translation id="1864454756846565995">Pajisja USB-C (porta prapa)</translation>
 <translation id="1882814835921407042">Nuk ka rrjet celular</translation>
 <translation id="1882897271359938046">Po pasqyron në <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Cilësimet e përdoruesit</translation>
 <translation id="3217205077783620295">Volumi është aktiv. Ndërrimi do ta heqë audion.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /> më shumë</translation>
-<translation id="3236488194889173876">Nuk disponohet asnjë rrjet celular</translation>
 <translation id="3249513730522716925">Dritarja <ph name="WINDOW_TITLE" /> u zhvendos nga tavolina e punës <ph name="ACTIVE_DESK" /> në tavolinën e punës <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Çfarë mund të bësh?</translation>
 <translation id="3269597722229482060">Kliko me butonin djathtas</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> është aktive.</translation>
 <translation id="5947494881799873997">Riktheje</translation>
 <translation id="595202126637698455">Gjurmimi i rendimentit u aktivizua</translation>
-<translation id="5957083217255311415">Të dhënat celulare janë çaktivizuar.</translation>
 <translation id="5958529069007801266">Përdorues i mbikëqyrur</translation>
 <translation id="5960825221082587934">Lëri "Asistentit" të tregojë informacione, si p.sh. përkufizimin, përkthimin apo konvertimin e njësive për zgjedhjen tënde.</translation>
 <translation id="5977415296283489383">Kufjet</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Shkurtorja për të shfaqur flluskën e menysë së opsioneve të hyrjes në raft ka ndryshuar. Përdor <ph name="NEW_SHORTCUT" /> në vend të <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Tavolina e punës <ph name="DESK_TITILE" /> u aktivizua</translation>
 <translation id="8452135315243592079">Karta SIM mungon</translation>
-<translation id="8454013096329229812">Wi-Fi është i aktivizuar.</translation>
 <translation id="8462305545768648477">Mbyll "Zgjidh që të thuhet"</translation>
 <translation id="847056008324733326">Cilësimet e shkallës së ekranit</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> ka <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_sr-Latn.xtb b/ash/strings/ash_strings_sr-Latn.xtb
index 37d2101..b3d85c4 100644
--- a/ash/strings/ash_strings_sr-Latn.xtb
+++ b/ash/strings/ash_strings_sr-Latn.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Eternet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Pomoćnik (učitava se...)</translation>
 <translation id="1838895407229022812">Noćno svetlo je isključeno.</translation>
-<translation id="1850504506766569011">WiFi je isključen.</translation>
 <translation id="1864454756846565995">Uređaj sa USB priključkom tipa C (zadnji port)</translation>
 <translation id="1882814835921407042">Nema mobilne mreže</translation>
 <translation id="1882897271359938046">Preslikavanje u <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Podešavanja korisnika</translation>
 <translation id="3217205077783620295">Zvuk je uključen. Možete da ga isključite pomeranjem prekidača.</translation>
 <translation id="3226991577105957773">i još <ph name="COUNT" /></translation>
-<translation id="3236488194889173876">Nije dostupna nijedna mobilna mreža</translation>
 <translation id="3249513730522716925">Prozor <ph name="WINDOW_TITLE" /> je premešten sa radne površine <ph name="ACTIVE_DESK" /> na radnu površinu <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Šta možeš da radiš?</translation>
 <translation id="3269597722229482060">Desni klik</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">Funkcija <ph name="FEATURE_NAME" /> je uključena.</translation>
 <translation id="5947494881799873997">Vrati</translation>
 <translation id="595202126637698455">Praćenje učinka je omogućeno</translation>
-<translation id="5957083217255311415">Mobilni podaci su isključeni.</translation>
 <translation id="5958529069007801266">Korisnik pod nadzorom</translation>
 <translation id="5960825221082587934">Omogućite Pomoćniku da prikazuje informacije kao što su definicije, prevodi ili konverzije jedinica za ono što ste izabrali.</translation>
 <translation id="5977415296283489383">Slušalice</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Promenjena je prečica za prikazivanje oblačića za meni Opcije unosa na polici. Koristite <ph name="NEW_SHORTCUT" /> umesto <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Radna površina <ph name="DESK_TITILE" /> je aktivirana</translation>
 <translation id="8452135315243592079">SIM kartica nedostaje</translation>
-<translation id="8454013096329229812">WiFi je uključen.</translation>
 <translation id="8462305545768648477">Zatvorite Izaberite za govor</translation>
 <translation id="847056008324733326">Podešavanja razmere prikaza</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> – <ph name="FEATURE_STATE" />: <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb
index ec8fd79..0dd378b 100644
--- a/ash/strings/ash_strings_sr.xtb
+++ b/ash/strings/ash_strings_sr.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Етернет: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Помоћник (учитава се...)</translation>
 <translation id="1838895407229022812">Ноћно светло је искључено.</translation>
-<translation id="1850504506766569011">WiFi је искључен.</translation>
 <translation id="1864454756846565995">Уређај са USB прикључком типа C (задњи порт)</translation>
 <translation id="1882814835921407042">Нема мобилне мреже</translation>
 <translation id="1882897271359938046">Пресликавање у <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Подешавања корисника</translation>
 <translation id="3217205077783620295">Звук је укључен. Можете да га искључите померањем прекидача.</translation>
 <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="3255483164551725916">Шта можеш да радиш?</translation>
 <translation id="3269597722229482060">Десни клик</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">Функција <ph name="FEATURE_NAME" /> је укључена.</translation>
 <translation id="5947494881799873997">Врати</translation>
 <translation id="595202126637698455">Праћење учинка је омогућено</translation>
-<translation id="5957083217255311415">Мобилни подаци су искључени.</translation>
 <translation id="5958529069007801266">Корисник под надзором</translation>
 <translation id="5960825221082587934">Омогућите Помоћнику да приказује информације као што су дефиниције, преводи или конверзије јединица за оно што сте изабрали.</translation>
 <translation id="5977415296283489383">Слушалице</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Промењена је пречица за приказивање облачића за мени Опције уноса на полици. Користите <ph name="NEW_SHORTCUT" /> уместо <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Радна површина <ph name="DESK_TITILE" /> је активирана</translation>
 <translation id="8452135315243592079">SIM картица недостаје</translation>
-<translation id="8454013096329229812">WiFi је укључен.</translation>
 <translation id="8462305545768648477">Затворите Изаберите за говор</translation>
 <translation id="847056008324733326">Подешавања размере приказа</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> – <ph name="FEATURE_STATE" />: <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb
index 2ec2ea7..bd376fc95 100644
--- a/ash/strings/ash_strings_sv.xtb
+++ b/ash/strings/ash_strings_sv.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistent (läses in …)</translation>
 <translation id="1838895407229022812">Nattljus är inaktiverat.</translation>
-<translation id="1850504506766569011">Wi-Fi är inaktiverat.</translation>
 <translation id="1864454756846565995">USB-C-enhet (bakre port)</translation>
 <translation id="1882814835921407042">Inget mobilnätverk</translation>
 <translation id="1882897271359938046">Spegling av <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Användarinställningar</translation>
 <translation id="3217205077783620295">Ljudet är på. Om du ändrar läge stängs ljudet av.</translation>
 <translation id="3226991577105957773">och <ph name="COUNT" /> till</translation>
-<translation id="3236488194889173876">Det finns inget tillgängligt mobilnätverk</translation>
 <translation id="3249513730522716925">Fönstret <ph name="WINDOW_TITLE" /> flyttades från skrivbordet <ph name="ACTIVE_DESK" /> till skrivbordet <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Vad kan du göra?</translation>
 <translation id="3269597722229482060">Högerklicka</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> är på.</translation>
 <translation id="5947494881799873997">Återgå</translation>
 <translation id="595202126637698455">Resultatspårning aktiverat</translation>
-<translation id="5957083217255311415">Mobildata har inaktiverats.</translation>
 <translation id="5958529069007801266">Kontrollerad användare</translation>
 <translation id="5960825221082587934">Låt assistenten visa information för det som är markerat, till exempel en definition, en översättning eller en omräkning till en annan enhet.</translation>
 <translation id="5977415296283489383">Hörlurar</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Kortkommandot för att visa menybubblan för inmatningsalternativ i hyllan har ändrats. Använd <ph name="NEW_SHORTCUT" /> i stället för <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Skrivbordet <ph name="DESK_TITILE" /> har aktiverats</translation>
 <translation id="8452135315243592079">SIM-kort saknas</translation>
-<translation id="8454013096329229812">Wi-Fi är aktiverat.</translation>
 <translation id="8462305545768648477">Stäng av textuppläsningen</translation>
 <translation id="847056008324733326">Inställningar för skala på skärmen</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> har <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb
index 97a7c04..1092046 100644
--- a/ash/strings/ash_strings_sw.xtb
+++ b/ash/strings/ash_strings_sw.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethaneti: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Mratibu (inapakia...)</translation>
 <translation id="1838895407229022812">Umezima Mwanga wa Usiku.</translation>
-<translation id="1850504506766569011">Wi-Fi imezimwa.</translation>
 <translation id="1864454756846565995">Kifaa cha USB-C (mlango wa nyuma)</translation>
 <translation id="1882814835921407042">Hakuna mtandao wa simu</translation>
 <translation id="1882897271359938046">Inaakisi kwenye <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Mipangilio ya Mtumiaji</translation>
 <translation id="3217205077783620295">Umewasha sauti, Ukigeuza swichi utazima sauti.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /> zaidi</translation>
-<translation id="3236488194889173876">Mtandao wa simu haupatikani</translation>
 <translation id="3249513730522716925">Dirisha la <ph name="WINDOW_TITLE" /> limehamishwa kutoka Kiolesura cha <ph name="ACTIVE_DESK" /> hadi Kiolesura cha <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Unaweza kufanya nini?</translation>
 <translation id="3269597722229482060">Bofya Kulia</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> kimewashwa.</translation>
 <translation id="5947494881799873997">Rejesha</translation>
 <translation id="595202126637698455">Ufuatiliaji wa utendaji umewashwa</translation>
-<translation id="5957083217255311415">Data ya mtandao wa simu imezimwa.</translation>
 <translation id="5958529069007801266">Mtumiaji anayesimamiwa</translation>
 <translation id="5960825221082587934">Ruhusu programu ya Mratibu ionyeshe maelezo kama vile ufafanuzi, ubadilishaji wa vipimo au tafsiri ya chaguo lako.</translation>
 <translation id="5977415296283489383">Vipokea sauti</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">Njia ya mkato ya kuonyesha kiputo cha menyu ya chaguo za kuingiza data katika rafu imebadilika. Tafadhali tumia <ph name="NEW_SHORTCUT" /> badala ya <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Kiolesura cha <ph name="DESK_TITILE" /> kimewashwa</translation>
 <translation id="8452135315243592079">Hakuna SIM kadi</translation>
-<translation id="8454013096329229812">Wi-Fi imewashwa.</translation>
 <translation id="8462305545768648477">Funga kipengele cha Kuchagua ili izungumze</translation>
 <translation id="847056008324733326">Onyesha mipangilio ya vipimo</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> ina <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb
index 4be3516..7eb65dc 100644
--- a/ash/strings/ash_strings_ta.xtb
+++ b/ash/strings/ash_strings_ta.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">ஈதர்நெட்: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">அசிஸ்டண்ட் (ஏற்றுகிறது...)</translation>
 <translation id="1838895407229022812">நைட் லைட் ஆஃப் செய்யப்பட்டுள்ளது.</translation>
-<translation id="1850504506766569011">வைஃபை முடக்கத்தில் உள்ளது.</translation>
 <translation id="1864454756846565995">USB-C சாதனம் (பின்பக்கப் போர்ட்)</translation>
 <translation id="1882814835921407042">மொபைலில் நெட்வொர்க் இல்லை</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> ஐப் பிரதிபலிக்கிறது</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">பயனர் அமைப்புகள்</translation>
 <translation id="3217205077783620295">ஒலியளவு இயக்கத்தில் உள்ளது. நிலைமாற்றினால் அது முடக்கப்படும்.</translation>
 <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="3255483164551725916">உன்னால் என்னவெல்லாம் செய்ய முடியும்?</translation>
 <translation id="3269597722229482060">வலது கிளிக்</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> இயக்கப்பட்டுள்ளது.</translation>
 <translation id="5947494881799873997">மாற்றியமை</translation>
 <translation id="595202126637698455">செயல்திறனைத் தடமறிதல் இயக்கப்பட்டுள்ளது</translation>
-<translation id="5957083217255311415">மொபைல் டேட்டா முடக்கப்பட்டது.</translation>
 <translation id="5958529069007801266">மேற்பார்வையிடப்படும் பயனர்</translation>
 <translation id="5960825221082587934">நீங்கள் தேர்ந்தெடுத்ததற்கான விளக்கம், மொழிபெயர்ப்பு, அலகு மாற்றம் போன்ற தகவல்களை Assistant காட்டுவதற்கான பட்டன்.</translation>
 <translation id="5977415296283489383">ஹெட்ஃபோன்</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">உள்ளீட்டு விருப்பங்கள் மெனு குமிழியை அடுக்கில் காட்டுவதற்கான ஷார்ட்கட் மாறியுள்ளது. <ph name="OLD_SHORTCUT" />க்குப் பதிலாக <ph name="NEW_SHORTCUT" />ஐப் பயன்படுத்தவும்.</translation>
 <translation id="8444246603146515890">டெஸ்க் <ph name="DESK_TITILE" /> இயக்கப்பட்டது</translation>
 <translation id="8452135315243592079">சிம் கார்டு இல்லை</translation>
-<translation id="8454013096329229812">வைஃபை இயக்கத்தில் உள்ளது.</translation>
 <translation id="8462305545768648477">பேசும் திரையை மூடுக</translation>
 <translation id="847056008324733326">திரை அளவு அமைப்புகள்</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" />, <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />ஐ கொண்டுள்ளது.</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb
index 92766e2..da570585 100644
--- a/ash/strings/ash_strings_te.xtb
+++ b/ash/strings/ash_strings_te.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">ఈథర్‌నెట్: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">సహాయకం (లోడ్ అవుతోంది...)</translation>
 <translation id="1838895407229022812">రాత్రి కాంతి ఆఫ్‌లో ఉంది.</translation>
-<translation id="1850504506766569011">Wi-Fi ఆఫ్ చేయబడింది.</translation>
 <translation id="1864454756846565995">USB-C పరికరం (వెనుకవైపు పోర్ట్)</translation>
 <translation id="1882814835921407042">మొబైల్ నెట్‌వర్క్ ఏదీ అందుబాటులో లేదు</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" />కు మిర్రరింగ్ చేస్తోంది</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">యూజర్ సెట్టింగ్‌లు</translation>
 <translation id="3217205077783620295">వాల్యూమ్ ఆన్‌లో ఉంది, టోగుల్ చేయడం వలన ఆడియో మ్యూట్ అవుతుంది.</translation>
 <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="3255483164551725916">నువ్వు ఏమి చేయగలవు?</translation>
 <translation id="3269597722229482060">కుడి క్లిక్</translation>
@@ -585,7 +583,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> ఆన్‌లో ఉంది.</translation>
 <translation id="5947494881799873997">తిరిగి పూర్వ స్థితికి మార్చు</translation>
 <translation id="595202126637698455">పనితీరుని గుర్తించడం ప్రారంభించబడింది</translation>
-<translation id="5957083217255311415">మొబైల్ డేటా ఆఫ్‌లో ఉంది.</translation>
 <translation id="5958529069007801266">పర్యవేక్షించబడే వినియోగదారు</translation>
 <translation id="5960825221082587934">మీ ఎంపిక కోసం నిర్వచనం, అనువాదం లేదా యూనిట్ మార్పిడి లాంటి సమాచారాన్ని చూపించడానికి Assistantను అనుమతించండి.</translation>
 <translation id="5977415296283489383">హెడ్‌ఫోన్</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">అరలో ఇన్‌పుట్ ఎంపికల మెనూ బబుల్‌ను చూపడానికి ఉపయోగించే షార్ట్‌కట్ మార్చబడింది. దయచేసి <ph name="OLD_SHORTCUT" />కు బదులుగా <ph name="NEW_SHORTCUT" />ను ఉపయోగించండి.</translation>
 <translation id="8444246603146515890">డెస్క్ <ph name="DESK_TITILE" /> యాక్టివేట్ చేయబడింది</translation>
 <translation id="8452135315243592079">SIM కార్డ్ లేదు</translation>
-<translation id="8454013096329229812">Wi-Fi ఆన్ చేయబడింది.</translation>
 <translation id="8462305545768648477">'వినడానికి ఎంచుకోండి'ను మూసివేయండి</translation>
 <translation id="847056008324733326">స్కేల్ సెట్టింగ్‌లను ప్రదర్శించండి</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> <ph name="FEATURE_NAME" />ను <ph name="FEATURE_STATE" />.</translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb
index 6965d3f2..c213b8c 100644
--- a/ash/strings/ash_strings_th.xtb
+++ b/ash/strings/ash_strings_th.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">อีเทอร์เน็ต: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistant (กำลังโหลด...)</translation>
 <translation id="1838895407229022812">แสงตอนกลางคืนปิดอยู่</translation>
-<translation id="1850504506766569011">WiFi ปิดอยู่</translation>
 <translation id="1864454756846565995">อุปกรณ์ USB-C (พอร์ตด้านหลัง)</translation>
 <translation id="1882814835921407042">ไม่มีเครือข่ายมือถือ</translation>
 <translation id="1882897271359938046">กำลังแสดงผลไปที่ <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">การตั้งค่าของผู้ใช้</translation>
 <translation id="3217205077783620295">ระดับเสียงเปิดอยู่ สลับเปิด/ปิดเพื่อปิดเสียง</translation>
 <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="3255483164551725916">เธอทำอะไรได้บ้าง</translation>
 <translation id="3269597722229482060">คลิกขวา</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> เปิดอยู่</translation>
 <translation id="5947494881799873997">ย้อนกลับ</translation>
 <translation id="595202126637698455">เปิดใช้งานการติดตามการปฏิบัติงานแล้ว</translation>
-<translation id="5957083217255311415">เน็ตมือถือปิดอยู่</translation>
 <translation id="5958529069007801266">ผู้ใช้ภายใต้การควบคุมดูแล</translation>
 <translation id="5960825221082587934">ให้ Assistant แสดงข้อมูล เช่น คำจำกัดความ คำแปล หรือการแปลงหน่วยของสิ่งที่คุณเลือก</translation>
 <translation id="5977415296283489383">ชุดหูฟัง</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">มีการเปลี่ยนแปลงทางลัดที่ใช้แสดงลูกโป่งเมนูตัวเลือกการป้อนข้อมูลในชั้นวาง โปรดใช้ <ph name="NEW_SHORTCUT" /> แทน <ph name="OLD_SHORTCUT" /></translation>
 <translation id="8444246603146515890">เปิดใช้งานเดสก์ <ph name="DESK_TITILE" /> แล้ว</translation>
 <translation id="8452135315243592079">ไม่มีซิมการ์ด</translation>
-<translation id="8454013096329229812">WiFi เปิดอยู่</translation>
 <translation id="8462305545768648477">ปิดฟีเจอร์เลือกเพื่อให้อ่าน</translation>
 <translation id="847056008324733326">การตั้งค่าระดับการแสดงผล</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> ได้<ph name="FEATURE_STATE" /><ph name="FEATURE_NAME" />ไว้</translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb
index 177d74bd..a288aff 100644
--- a/ash/strings/ash_strings_tr.xtb
+++ b/ash/strings/ash_strings_tr.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Asistan (yükleniyor...)</translation>
 <translation id="1838895407229022812">Gece Işığı kapalı.</translation>
-<translation id="1850504506766569011">Kablosuz kapalı.</translation>
 <translation id="1864454756846565995">USB-C cihaz (arka bağlantı noktası)</translation>
 <translation id="1882814835921407042">Mobil ağ yok</translation>
 <translation id="1882897271359938046">Şuraya yansıtılıyor: <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Kullanıcı Ayarları</translation>
 <translation id="3217205077783620295">Ses açık, düğmeye basılırsa ses kapatılacak.</translation>
 <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="3255483164551725916">Neler yapabilirsin?</translation>
 <translation id="3269597722229482060">Sağ Tıkla</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> özelliği açık.</translation>
 <translation id="5947494881799873997">Geri döndür</translation>
 <translation id="595202126637698455">Performans izleme etkin</translation>
-<translation id="5957083217255311415">Mobil veri kapatıldı.</translation>
 <translation id="5958529069007801266">Denetlenen kullanıcı</translation>
 <translation id="5960825221082587934">Asistan'ın yaptığınız seçimin tanımı, çevirisi veya birimin dönüştürülmesi gibi bilgileri göstermesine izin verir.</translation>
 <translation id="5977415296283489383">Kulaklık</translation>
@@ -885,7 +882,6 @@
 <translation id="8433977262951327081">Giriş seçenekleri menüsü balonunu rafta görüntüleme kısa yolu değişti. <ph name="OLD_SHORTCUT" /> yerine <ph name="NEW_SHORTCUT" /> kısayolunu kullanın.</translation>
 <translation id="8444246603146515890">Masa <ph name="DESK_TITILE" /> etkinleştirildi</translation>
 <translation id="8452135315243592079">SIM kart yok</translation>
-<translation id="8454013096329229812">Kablosuz açık.</translation>
 <translation id="8462305545768648477">Seç ve Dinle özelliğini kapat</translation>
 <translation id="847056008324733326">Ekran ölçeği ayarları</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" />, <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" /> özelliğine sahip.</translation>
diff --git a/ash/strings/ash_strings_uk.xtb b/ash/strings/ash_strings_uk.xtb
index 32a3982..1b3af62 100644
--- a/ash/strings/ash_strings_uk.xtb
+++ b/ash/strings/ash_strings_uk.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Асистент (завантаження…)</translation>
 <translation id="1838895407229022812">Нічний екран вимкнено.</translation>
-<translation id="1850504506766569011">Wi-Fi вимкнено.</translation>
 <translation id="1864454756846565995">Пристрій із портом USB типу C (на задній панелі)</translation>
 <translation id="1882814835921407042">Немає мобільних мереж</translation>
 <translation id="1882897271359938046">Дзеркалювання на <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Налаштування користувача</translation>
 <translation id="3217205077783620295">Звук увімкнено. Його можна вимкнути за допомогою перемикача.</translation>
 <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="3255483164551725916">Що ти можеш?</translation>
 <translation id="3269597722229482060">Натиснути правою кнопкою миші</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">Функцію "<ph name="FEATURE_NAME" />" увімкнено.</translation>
 <translation id="5947494881799873997">Повернути</translation>
 <translation id="595202126637698455">Відстеження ефективності ввімкнено</translation>
-<translation id="5957083217255311415">Мобільне передавання даних вимкнено.</translation>
 <translation id="5958529069007801266">Контрольований користувач</translation>
 <translation id="5960825221082587934">Дозволити Асистенту показувати визначення чи переклад терміна, конвертувати одиниці тощо для вибраного контенту.</translation>
 <translation id="5977415296283489383">Навушники</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Комбінація клавіш для виклику спливаючої підказки з опціями введення змінилась. Тепер це <ph name="NEW_SHORTCUT" />, а не <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Робочий стіл "<ph name="DESK_TITILE" />" активовано</translation>
 <translation id="8452135315243592079">Немає SIM-карти</translation>
-<translation id="8454013096329229812">Wi-Fi увімкнено.</translation>
 <translation id="8462305545768648477">Закрити "Читання з екрана"</translation>
 <translation id="847056008324733326">Налаштування масштабу дисплея</translation>
 <translation id="8473301994082929012">На сайті <ph name="ORGANIZATION_NAME" /> <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_ur.xtb b/ash/strings/ash_strings_ur.xtb
index 88c62b2..fa6a754 100644
--- a/ash/strings/ash_strings_ur.xtb
+++ b/ash/strings/ash_strings_ur.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">ایتھرنیٹ: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">اسسٹنٹ (لوڈ ہو رہا ہے...)</translation>
 <translation id="1838895407229022812">نائٹ لائٹ آف ہے۔</translation>
-<translation id="1850504506766569011">‏Wi-Fi آف ہے۔</translation>
 <translation id="1864454756846565995">‏USB-C آلہ (پیچھے کا پورٹ)</translation>
 <translation id="1882814835921407042">کوئی موبائل نیٹ ورک نہیں ہے</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> میں معکوس سازی</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">صارف کی ترتیبات</translation>
 <translation id="3217205077783620295">والیوم آن ہے۔ ٹوگل کرنے سے آڈیو خاموش ہو جائے گی۔</translation>
 <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="3255483164551725916">آپ کیا کر سکتی ہیں؟</translation>
 <translation id="3269597722229482060">دائیں طرف کلک کریں</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> آن ہے۔</translation>
 <translation id="5947494881799873997">واپس لوٹیں</translation>
 <translation id="595202126637698455">کارکردگی کی ٹریسنگ فعال کر دی گئی</translation>
-<translation id="5957083217255311415">موبائل ڈیٹا بند ہے۔</translation>
 <translation id="5958529069007801266">تحفظ یافتہ صارف</translation>
 <translation id="5960825221082587934">اسسٹنٹ کو آپ کے انتخاب کیلئے تعریف، ترجمہ یا یونٹ تبدیلی جیسی معلومات دکھانے دیں۔</translation>
 <translation id="5977415296283489383">ہیڈفون</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">شیلف میں ان پٹ اختیارات کے مینو بلبلے کو دکھانے والا شارٹ کٹ تبدیل ہو گیا ہے۔ براہ کرم <ph name="OLD_SHORTCUT" /> کی بجائے <ph name="NEW_SHORTCUT" /> استعمال کریں۔</translation>
 <translation id="8444246603146515890"><ph name="DESK_TITILE" /> ڈیسک فعال کر دیا گیا</translation>
 <translation id="8452135315243592079">‏غائب SIM کارڈ</translation>
-<translation id="8454013096329229812">‏Wi-Fi آن ہے۔</translation>
 <translation id="8462305545768648477">سننے کیلئے منتخب کریں کو بند کریں</translation>
 <translation id="847056008324733326">اسکیل ترتیبات کو ڈسپلے کریں</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> میں <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" /> ہے۔</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb
index b893f9fc..aa312e6 100644
--- a/ash/strings/ash_strings_uz.xtb
+++ b/ash/strings/ash_strings_uz.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Assistent (yuklanmoqda...)</translation>
 <translation id="1838895407229022812">Tungi rejim oʻchiq.</translation>
-<translation id="1850504506766569011">Wi-Fi o‘chirildi.</translation>
 <translation id="1864454756846565995">USB-C qurilma (orqa port)</translation>
 <translation id="1882814835921407042">Mobil tarmoq topilmadi</translation>
 <translation id="1882897271359938046">Nusxa tasvir <ph name="DISPLAY_NAME" /> ekraniga uzatilmoqda</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Foydalanuvchi sozlamalari</translation>
 <translation id="3217205077783620295">Ovoz yoniq. Ovozsiz qilish uchun shu belgini bosing.</translation>
 <translation id="3226991577105957773">yana <ph name="COUNT" /> ta</translation>
-<translation id="3236488194889173876">Birorta ham mobil tarmoq mavjud emas</translation>
 <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> oynasi <ph name="ACTIVE_DESK" /> ish stolidan <ph name="TARGET_DESK" /> ish stoliga koʻchirildi</translation>
 <translation id="3255483164551725916">Assistent nimalarga qodir?</translation>
 <translation id="3269597722229482060">Oʻng klik</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> yoniq.</translation>
 <translation id="5947494881799873997">Bekor qilish</translation>
 <translation id="595202126637698455">Unumdorlik kuzatuvi yoniq</translation>
-<translation id="5957083217255311415">Mobil internet yoqilmagan.</translation>
 <translation id="5958529069007801266">Boshqariladigan profil</translation>
 <translation id="5960825221082587934">Assistent ekranda tanlangan narsaga mos tavsif, tarjima yoki birliklar konvertorini chiqarsin.</translation>
 <translation id="5977415296283489383">Quloqchin</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Matn kiritish usuli parametrlarini qalqib chiquvchi oynada ko‘rish uchun tugmalar birikmasi o‘zgardi. Endi <ph name="OLD_SHORTCUT" /> o‘rniga <ph name="NEW_SHORTCUT" /> birikmasidan foydalaning.</translation>
 <translation id="8444246603146515890"><ph name="DESK_TITILE" /> ish stoli yoqildi</translation>
 <translation id="8452135315243592079">Yo‘qolgan SIM karta</translation>
-<translation id="8454013096329229812">Wi-Fi yoqildi.</translation>
 <translation id="8462305545768648477">Teginib tinglash oynasini yopish</translation>
 <translation id="847056008324733326">Ekran ko‘lami sozlamalari</translation>
 <translation id="8473301994082929012"><ph name="FEATURE_NAME" /> funksiyasi <ph name="ORGANIZATION_NAME" /> tomonidan <ph name="FEATURE_STATE" />.</translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb
index 7d33f19..7cd4076 100644
--- a/ash/strings/ash_strings_vi.xtb
+++ b/ash/strings/ash_strings_vi.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Trợ lý (đang tải...)</translation>
 <translation id="1838895407229022812">Chế độ Ánh sáng đêm đang tắt.</translation>
-<translation id="1850504506766569011">Wi-Fi đang tắt.</translation>
 <translation id="1864454756846565995">Thiết bị USB-C (cổng phía sau)</translation>
 <translation id="1882814835921407042">Không có mạng di động</translation>
 <translation id="1882897271359938046">Đang phản chiếu tới <ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Cài đặt người dùng</translation>
 <translation id="3217205077783620295">Âm lượng đang bật. Nếu bạn chuyển đổi, âm thanh sẽ bị tắt.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /> mục khác</translation>
-<translation id="3236488194889173876">Không có mạng di động nào</translation>
 <translation id="3249513730522716925">Đã di chuyển cửa sổ <ph name="WINDOW_TITLE" /> từ Không gian làm việc <ph name="ACTIVE_DESK" /> sang Không gian làm việc <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Bạn có thể làm gì?</translation>
 <translation id="3269597722229482060">Nhấp chuột phải</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" /> đang bật.</translation>
 <translation id="5947494881799873997">Hoàn nguyên</translation>
 <translation id="595202126637698455">Đã bật theo dõi hoạt động</translation>
-<translation id="5957083217255311415">Dữ liệu di động đã bị tắt.</translation>
 <translation id="5958529069007801266">Người dùng được giám sát</translation>
 <translation id="5960825221082587934">Cho phép Trợ lý hiển thị những thông tin như định nghĩa, bản dịch hoặc kết quả chuyển đổi đơn vị cho nội dung bạn chọn.</translation>
 <translation id="5977415296283489383">Tai nghe</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Phím tắt để hiển thị bong bóng menu tùy chọn nhập trong giá đã thay đổi. Vui lòng sử dụng <ph name="NEW_SHORTCUT" /> thay cho <ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Đã kích hoạt Không gian làm việc <ph name="DESK_TITILE" /></translation>
 <translation id="8452135315243592079">Thiếu thẻ SIM</translation>
-<translation id="8454013096329229812">Wi-Fi đang bật.</translation>
 <translation id="8462305545768648477">Đóng tính năng Chọn để nói</translation>
 <translation id="847056008324733326">Cài đặt tỷ lệ hiển thị</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> đã <ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb
index 8061fb8..3c15e9aa 100644
--- a/ash/strings/ash_strings_zh-CN.xtb
+++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">以太网:<ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">智能助理(正在加载中…)</translation>
 <translation id="1838895407229022812">当前已关闭护眼模式。</translation>
-<translation id="1850504506766569011">Wi-Fi 已关闭。</translation>
 <translation id="1864454756846565995">USB-C 设备(背面端口)</translation>
 <translation id="1882814835921407042">无移动网络</translation>
 <translation id="1882897271359938046">正在镜像到<ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">用户设置</translation>
 <translation id="3217205077783620295">已开启声音,使用切换开关可将音频静音。</translation>
 <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="3255483164551725916">你能做些什么?</translation>
 <translation id="3269597722229482060">右键点击</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">“<ph name="FEATURE_NAME" />”功能已开启。</translation>
 <translation id="5947494881799873997">还原</translation>
 <translation id="595202126637698455">已启用性能跟踪</translation>
-<translation id="5957083217255311415">移动数据网络现处于关闭状态。</translation>
 <translation id="5958529069007801266">受监管用户</translation>
 <translation id="5960825221082587934">让 Google 助理显示与您所选内容相关的信息(例如定义、翻译或单位换算)。</translation>
 <translation id="5977415296283489383">耳机</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">用于在任务栏中显示输入法选项菜单气泡的快捷键已更改。请使用<ph name="NEW_SHORTCUT" />(而不是 <ph name="OLD_SHORTCUT" />)。</translation>
 <translation id="8444246603146515890">桌面 <ph name="DESK_TITILE" /> 已激活</translation>
 <translation id="8452135315243592079">缺少 SIM 卡</translation>
-<translation id="8454013096329229812">Wi-Fi 已打开。</translation>
 <translation id="8462305545768648477">关闭“随选朗读”功能</translation>
 <translation id="847056008324733326">显示比例设置</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" />已<ph name="FEATURE_STATE" /><ph name="FEATURE_NAME" />。</translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb
index 450c8641..6410ddc 100644
--- a/ash/strings/ash_strings_zh-HK.xtb
+++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">以太網:<ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">小幫手 (正在載入…)</translation>
 <translation id="1838895407229022812">「夜燈模式」已關閉。</translation>
-<translation id="1850504506766569011">Wi-Fi 已關閉。</translation>
 <translation id="1864454756846565995">USB-C 裝置 (後方連接埠)</translation>
 <translation id="1882814835921407042">沒有流動網絡</translation>
 <translation id="1882897271359938046">正在建立<ph name="DISPLAY_NAME" />鏡像</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">使用者設定</translation>
 <translation id="3217205077783620295">打開咗音量,切換將會靜音。</translation>
 <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="3255483164551725916">你可以做咩嘢?</translation>
 <translation id="3269597722229482060">按滑鼠右鍵</translation>
@@ -583,7 +581,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" />功能已開啟。</translation>
 <translation id="5947494881799873997">還原</translation>
 <translation id="595202126637698455">效能追蹤已啟用</translation>
-<translation id="5957083217255311415">流動數據已關閉。</translation>
 <translation id="5958529069007801266">受管使用者</translation>
 <translation id="5960825221082587934">俾「Google 助理」針對你揀嘅內容顯示定義、翻譯或者單位轉換之類嘅資料。</translation>
 <translation id="5977415296283489383">耳機</translation>
@@ -883,7 +880,6 @@
 <translation id="8433977262951327081">在捷徑列中顯示輸入選項選單小視窗的快速鍵已變更,請改用 <ph name="NEW_SHORTCUT" /> 以取代原有的 <ph name="OLD_SHORTCUT" />。</translation>
 <translation id="8444246603146515890">已啟用桌面 <ph name="DESK_TITILE" /></translation>
 <translation id="8452135315243592079">找不到 SIM 卡</translation>
-<translation id="8454013096329229812">Wi-Fi 已開啟。</translation>
 <translation id="8462305545768648477">關閉「選取以朗讀」</translation>
 <translation id="847056008324733326">顯示比例設定</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> 已 <ph name="FEATURE_STATE" /><ph name="FEATURE_NAME" />。</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index 9f00645..948f73e 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">乙太網路:<ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">小幫手 (載入中…)</translation>
 <translation id="1838895407229022812">夜燈模式已關閉。</translation>
-<translation id="1850504506766569011">Wi-Fi 已關閉。</translation>
 <translation id="1864454756846565995">USB-C 裝置 (背面連接埠)</translation>
 <translation id="1882814835921407042">沒有行動網路</translation>
 <translation id="1882897271359938046">正在建立 <ph name="DISPLAY_NAME" /> 鏡像</translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">使用者設定</translation>
 <translation id="3217205077783620295">音量已開啟;使用切換按鈕可設為靜音。</translation>
 <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="3255483164551725916">你會做些什麼?</translation>
 <translation id="3269597722229482060">按一下滑鼠右鍵</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774"><ph name="FEATURE_NAME" />功能已開啟。</translation>
 <translation id="5947494881799873997">還原</translation>
 <translation id="595202126637698455">效能追蹤已啟用</translation>
-<translation id="5957083217255311415">行動數據已關閉。</translation>
 <translation id="5958529069007801266">受監管的使用者</translation>
 <translation id="5960825221082587934">讓 Google 助理針對你選取的內容顯示定義、翻譯或單位轉換等資訊。</translation>
 <translation id="5977415296283489383">耳機</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">在檔案櫃中顯示輸入選項選單方塊的快速鍵已變更,請改用:<ph name="NEW_SHORTCUT" /> (停用 <ph name="OLD_SHORTCUT" />)。</translation>
 <translation id="8444246603146515890">已啟用桌面 <ph name="DESK_TITILE" /></translation>
 <translation id="8452135315243592079">找不到 SIM 卡</translation>
-<translation id="8454013096329229812">Wi-Fi 已開啟。</translation>
 <translation id="8462305545768648477">關閉隨選朗讀</translation>
 <translation id="847056008324733326">顯示比例設定</translation>
 <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> 已<ph name="FEATURE_STATE" /><ph name="FEATURE_NAME" />。</translation>
diff --git a/ash/strings/ash_strings_zu.xtb b/ash/strings/ash_strings_zu.xtb
index 3b25938..d7faaa9 100644
--- a/ash/strings/ash_strings_zu.xtb
+++ b/ash/strings/ash_strings_zu.xtb
@@ -108,7 +108,6 @@
 <translation id="1823873187264960516">I-Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1836215606488044471">Umsizi (uyalayisha...)</translation>
 <translation id="1838895407229022812">Isibani sasebusuku sivaliwe.</translation>
-<translation id="1850504506766569011">I-Wi-Fi ivaliwe.</translation>
 <translation id="1864454756846565995">Idivayisi ye-USB-C (imbobo esemuva)</translation>
 <translation id="1882814835921407042">Ayikho inethiwekhi yeselula</translation>
 <translation id="1882897271359938046">Yenza isibuko ku-<ph name="DISPLAY_NAME" /></translation>
@@ -267,7 +266,6 @@
 <translation id="3207953481422525583">Izilungiselelo Zomsebenzisi</translation>
 <translation id="3217205077783620295">Ivolomu ivuliwe, ukushintsha kuzothulisa umsindo.</translation>
 <translation id="3226991577105957773">+<ph name="COUNT" /> okuningi</translation>
-<translation id="3236488194889173876">Ayikho inethiwekhi yeselule etholakalayo</translation>
 <translation id="3249513730522716925">Iwindi <ph name="WINDOW_TITLE" /> lihanjisiwe kusuka kudeski <ph name="ACTIVE_DESK" /> kuya kudeski <ph name="TARGET_DESK" /></translation>
 <translation id="3255483164551725916">Yini ongayenza?</translation>
 <translation id="3269597722229482060">Ukuchofoza Kwesokudla</translation>
@@ -584,7 +582,6 @@
 <translation id="5946788582095584774">I-<ph name="FEATURE_NAME" /> ivuliwe.</translation>
 <translation id="5947494881799873997">Buyela</translation>
 <translation id="595202126637698455">Ukulandelela ukusebenza kunikwe amandla</translation>
-<translation id="5957083217255311415">Idatha yeselula ivaliwe.</translation>
 <translation id="5958529069007801266">Umsebenzisi ogadiwe</translation>
 <translation id="5960825221082587934">Vumela Umsizi abonise ulwazi olufana nencazelo, ukuhumusha noma ukuguqulwa kweyunithi kokukhethile kwakho.</translation>
 <translation id="5977415296283489383">Amahedfoni</translation>
@@ -884,7 +881,6 @@
 <translation id="8433977262951327081">Isinqamuleli sokubonisa ibhamuza lemenyu yezinketho zokufaka kushelufu sishintshile. Sicela usebenzise i-<ph name="NEW_SHORTCUT" /> esikhundleni se-<ph name="OLD_SHORTCUT" />.</translation>
 <translation id="8444246603146515890">Ideski <ph name="DESK_TITILE" /> liyasebenza</translation>
 <translation id="8452135315243592079">I-SIM card engekho</translation>
-<translation id="8454013096329229812">I-Wi-Fi ivuliwe.</translation>
 <translation id="8462305545768648477">Vala okuthi Khetha ukuze ukhulume</translation>
 <translation id="847056008324733326">Bonisa izilungiselelo zesikali</translation>
 <translation id="8473301994082929012">I-<ph name="ORGANIZATION_NAME" /> ine-<ph name="FEATURE_STATE" /> <ph name="FEATURE_NAME" />.</translation>
diff --git a/ash/utility/layer_util.cc b/ash/utility/layer_util.cc
index d643a46..b8c203c 100644
--- a/ash/utility/layer_util.cc
+++ b/ash/utility/layer_util.cc
@@ -25,8 +25,7 @@
           copy_result->GetTextureResult()->mailbox, GL_LINEAR, GL_TEXTURE_2D,
           copy_result->GetTextureResult()->sync_token, layer_size,
           /*is_overlay_candidate=*/false);
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback =
-      copy_result->TakeTextureOwnership();
+  viz::ReleaseCallback release_callback = copy_result->TakeTextureOwnership();
   target_layer->SetTransferableResource(
       transferable_resource, std::move(release_callback), layer_size);
 }
diff --git a/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc b/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc
index 955ca4e..f77bbdc 100644
--- a/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc
+++ b/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc
@@ -313,11 +313,29 @@
                        void* address,
                        size_t size,
                        void* context) {
+#if defined(OS_MAC)
+  if (!base::IsManagedByPartitionAlloc(address)) {
+    // A memory region allocated by the system allocator is passed in this
+    // function.  Forward the request to `realloc` which supports zone-
+    // dispatching so that it appropriately selects the right zone.
+    return realloc(address, size);
+  }
+#endif  // defined(OS_MAC)
+
   return Allocator()->ReallocFlags(base::PartitionAllocNoHooks, address,
                                    MaybeAdjustSize(size), "");
 }
 
 void PartitionFree(const AllocatorDispatch*, void* address, void* context) {
+#if defined(OS_MAC)
+  if (!base::IsManagedByPartitionAlloc(address)) {
+    // A memory region allocated by the system allocator is passed in this
+    // function.  Forward the request to `free` which supports zone-
+    // dispatching so that it appropriately selects the right zone.
+    return free(address);
+  }
+#endif  // defined(OS_MAC)
+
   base::ThreadSafePartitionRoot::FreeNoHooks(address);
 }
 
diff --git a/base/allocator/partition_allocator/thread_cache.cc b/base/allocator/partition_allocator/thread_cache.cc
index 48164e4..1c429bb5 100644
--- a/base/allocator/partition_allocator/thread_cache.cc
+++ b/base/allocator/partition_allocator/thread_cache.cc
@@ -12,6 +12,7 @@
 #include "base/allocator/partition_allocator/partition_alloc.h"
 #include "base/allocator/partition_allocator/partition_alloc_check.h"
 #include "base/threading/thread_task_runner_handle.h"
+#include "base/trace_event/base_tracing.h"
 #include "build/build_config.h"
 
 namespace base {
@@ -50,6 +51,7 @@
 constexpr base::TimeDelta ThreadCacheRegistry::kMinPurgeInterval;
 constexpr base::TimeDelta ThreadCacheRegistry::kMaxPurgeInterval;
 constexpr base::TimeDelta ThreadCacheRegistry::kDefaultPurgeInterval;
+constexpr size_t ThreadCacheRegistry::kMinCachedMemoryForPurging;
 uint8_t ThreadCache::global_limits_[ThreadCache::kBucketCount];
 
 // Start with the normal size, not the maximum one.
@@ -214,6 +216,7 @@
 }
 
 void ThreadCacheRegistry::PeriodicPurge() {
+  TRACE_EVENT0("memory", "PeriodicPurge");
   // To stop periodic purge for testing.
   if (!periodic_purge_running_)
     return;
@@ -224,7 +227,7 @@
   //
   // Since there is no synchronization with other threads, the value is stale,
   // which is fine.
-  uint64_t all_allocations_approx = 0;
+  size_t cached_memory_approx = 0;
   {
     PartitionAutoLock scoped_locker(GetLock());
     ThreadCache* tcache = list_head_;
@@ -235,40 +238,36 @@
       return;
 
     while (tcache) {
-      all_allocations_approx += tcache->allocations_;
+      cached_memory_approx += tcache->cached_memory_;
       tcache = tcache->next_;
     }
   }
 
-  uint64_t allocations_since_last_purge =
-      all_allocations_approx - allocations_at_last_purge_;
-
-  // If there were not enough allocations since the last purge, back off. On the
-  // other hand, if there were many allocations, make purge more frequent, but
-  // always in a set frequency range.
+  // If cached memory is low, this means that either memory footprint is fine,
+  // or the process is mostly idle, and not allocating much since the last
+  // purge. In this case, back off. On the other hand, if there is a lot of
+  // cached memory, make purge more frequent, but always within a set frequency
+  // range.
   //
   // There is a potential drawback: a process that was idle for a long time and
   // suddenly becomes very active will take some time to go back to regularly
   // scheduled purge with a small enough interval. This is the case for instance
-  // of a renderer moving to foreground. To mitigate that, if the number of
-  // allocations since the last purge was very large, make a greater leap to
-  // faster purging.
-  if (allocations_since_last_purge > 10 * kMinAllocationsForPurging) {
+  // of a renderer moving to foreground. To mitigate that, if cached memory
+  // jumps is very large, make a greater leap to faster purging.
+  if (cached_memory_approx > 10 * kMinCachedMemoryForPurging) {
     purge_interval_ = std::min(kDefaultPurgeInterval, purge_interval_ / 2);
-  } else if (allocations_since_last_purge > 2 * kMinAllocationsForPurging) {
+  } else if (cached_memory_approx > 2 * kMinCachedMemoryForPurging) {
     purge_interval_ = std::max(kMinPurgeInterval, purge_interval_ / 2);
-  } else if (allocations_since_last_purge < kMinAllocationsForPurging) {
+  } else if (cached_memory_approx < kMinCachedMemoryForPurging) {
     purge_interval_ = std::min(kMaxPurgeInterval, purge_interval_ * 2);
   }
 
   PurgeAll();
 
-  allocations_at_last_purge_ = all_allocations_approx;
   PostDelayedPurgeTask();
 }
 
 void ThreadCacheRegistry::ResetForTesting() {
-  allocations_at_last_purge_ = 0;
   purge_interval_ = kDefaultPurgeInterval;
   periodic_purge_running_ = false;
 }
@@ -486,6 +485,7 @@
   PA_DCHECK(!root_->buckets[bucket_index].CanStoreRawSize());
   PA_DCHECK(!root_->buckets[bucket_index].is_direct_mapped());
 
+  size_t allocated_slots = 0;
   // Same as calling RawAlloc() |count| times, but acquires the lock only once.
   internal::ScopedGuard<internal::ThreadSafe> guard(root_->lock_);
   for (int i = 0; i < count; i++) {
@@ -512,8 +512,11 @@
     if (!ptr)
       break;
 
+    allocated_slots++;
     PutInBucket(bucket, ptr);
   }
+
+  cached_memory_ += allocated_slots * bucket.slot_size;
 }
 
 void ThreadCache::ClearBucket(ThreadCache::Bucket& bucket, size_t limit) {
@@ -521,6 +524,7 @@
   if (!bucket.count || bucket.count <= limit)
     return;
 
+  uint8_t count_before = bucket.count;
   if (limit == 0) {
     FreeAfter(bucket.freelist_head);
     bucket.freelist_head = nullptr;
@@ -537,6 +541,12 @@
     head->SetNext(nullptr);
   }
   bucket.count = limit;
+  uint8_t count_after = bucket.count;
+  size_t freed_memory = (count_before - count_after) * bucket.slot_size;
+  PA_DCHECK(cached_memory_ >= freed_memory);
+  cached_memory_ -= freed_memory;
+
+  PA_DCHECK(cached_memory_ == CachedMemory());
 }
 
 void ThreadCache::FreeAfter(PartitionFreelistEntry* head) {
@@ -552,8 +562,6 @@
 }
 
 void ThreadCache::ResetForTesting() {
-  allocations_ = 0;
-
   stats_.alloc_count = 0;
   stats_.alloc_hits = 0;
   stats_.alloc_misses = 0;
@@ -571,6 +579,7 @@
   stats_.metadata_overhead = 0;
 
   Purge();
+  PA_CHECK(cached_memory_ == 0u);
   should_purge_.store(false, std::memory_order_relaxed);
 }
 
@@ -603,7 +612,11 @@
   }
 #endif  // defined(PA_THREAD_CACHE_ALLOC_STATS)
 
-  stats->bucket_total_memory += CachedMemory();
+  // cached_memory_ is not necessarily equal to |CachedMemory()| here, since
+  // this function can be called racily from another thread, to collect
+  // statistics. Hence no DCHECK_EQ(CachedMemory(), cached_memory_).
+  stats->bucket_total_memory += cached_memory_;
+
   stats->metadata_overhead += sizeof(*this);
 }
 
diff --git a/base/allocator/partition_allocator/thread_cache.h b/base/allocator/partition_allocator/thread_cache.h
index 03b19ea..6412ee9 100644
--- a/base/allocator/partition_allocator/thread_cache.h
+++ b/base/allocator/partition_allocator/thread_cache.h
@@ -81,7 +81,7 @@
   static constexpr TimeDelta kMinPurgeInterval = TimeDelta::FromSeconds(1);
   static constexpr TimeDelta kMaxPurgeInterval = TimeDelta::FromMinutes(1);
   static constexpr TimeDelta kDefaultPurgeInterval = 2 * kMinPurgeInterval;
-  static constexpr int kMinAllocationsForPurging = 10000;
+  static constexpr size_t kMinCachedMemoryForPurging = 500 * 1024;
 
  private:
   void PeriodicPurge();
@@ -90,7 +90,6 @@
   // Not using base::Lock as the object's constructor must be constexpr.
   PartitionLock lock_;
   ThreadCache* list_head_ GUARDED_BY(GetLock()) = nullptr;
-  uint64_t allocations_at_last_purge_ = 0;
   base::TimeDelta purge_interval_ = kDefaultPurgeInterval;
   bool periodic_purge_running_ = false;
 };
@@ -244,6 +243,8 @@
   // V8 is performance-sensitive, and zones can (and do) grow up to 32kiB for
   // each individual allocation.
   static constexpr size_t kLargeSizeThreshold = 1 << 15;
+  static_assert(kLargeSizeThreshold <= std::numeric_limits<uint16_t>::max(),
+                "");
 
  private:
   struct Bucket {
@@ -300,7 +301,7 @@
   static uint16_t largest_active_bucket_index_;
 
   Bucket buckets_[kBucketCount];
-  uint64_t allocations_ = 0;
+  size_t cached_memory_ = 0;
   std::atomic<bool> should_purge_;
   ThreadCacheStats stats_;
   PartitionRoot<ThreadSafe>* const root_;
@@ -346,6 +347,7 @@
   PA_DCHECK(bucket.count != 0 || bucket.freelist_head == nullptr);
 
   PutInBucket(bucket, slot_start);
+  cached_memory_ += bucket.slot_size;
   INCREMENT_COUNTER(stats_.cache_fill_hits);
 
   // Relaxed ordering: we don't care about having an up-to-date or consistent
@@ -366,7 +368,6 @@
 
 ALWAYS_INLINE void* ThreadCache::GetFromCache(size_t bucket_index,
                                               size_t* slot_size) {
-  allocations_++;
 #if defined(PA_THREAD_CACHE_ALLOC_STATS)
   stats_.allocs_per_bucket_[bucket_index]++;
 #endif
@@ -405,6 +406,8 @@
   bucket.freelist_head = next;
   *slot_size = bucket.slot_size;
 
+  PA_DCHECK(cached_memory_ >= bucket.slot_size);
+  cached_memory_ -= bucket.slot_size;
   return result;
 }
 
diff --git a/base/allocator/partition_allocator/thread_cache_unittest.cc b/base/allocator/partition_allocator/thread_cache_unittest.cc
index 45d66a6..e6c42fb 100644
--- a/base/allocator/partition_allocator/thread_cache_unittest.cc
+++ b/base/allocator/partition_allocator/thread_cache_unittest.cc
@@ -95,6 +95,21 @@
   return bucket_index;
 }
 
+void FillThreadCacheWithMemory(size_t target_cached_memory) {
+  for (int batch : {1, 2, 4, 8, 16}) {
+    for (size_t allocation_size = 1;
+         allocation_size <= ThreadCache::kLargeSizeThreshold;
+         allocation_size++) {
+      FillThreadCacheAndReturnIndex(allocation_size, batch);
+
+      if (ThreadCache::Get()->CachedMemory() >= target_cached_memory)
+        return;
+    }
+  }
+
+  ASSERT_GE(ThreadCache::Get()->CachedMemory(), target_cached_memory);
+}
+
 }  // namespace
 
 class ThreadCacheTest : public ::testing::Test {
@@ -102,7 +117,7 @@
   void SetUp() override {
     ThreadCacheRegistry::Instance().SetThreadCacheMultiplier(
         ThreadCache::kDefaultMultiplier);
-    ThreadCache::SetLargestCachedSize(ThreadCache::kDefaultSizeThreshold);
+    ThreadCache::SetLargestCachedSize(ThreadCache::kLargeSizeThreshold);
     // Make sure that enough slot spans have been touched, otherwise cache fill
     // becomes unpredictable (because it doesn't take slow paths in the
     // allocator), which is an issue for tests.
@@ -461,7 +476,10 @@
   EXPECT_EQ(ThreadCacheRegistry::kDefaultPurgeInterval,
             registry.purge_interval_for_testing());
 
-  // No allocations, the period gets longer.
+  // Small amount of memory, the period gets longer.
+  auto* tcache = ThreadCache::Get();
+  ASSERT_LT(tcache->CachedMemory(),
+            ThreadCacheRegistry::kMinCachedMemoryForPurging);
   task_env_.FastForwardBy(registry.purge_interval_for_testing());
   EXPECT_EQ(2 * ThreadCacheRegistry::kDefaultPurgeInterval,
             registry.purge_interval_for_testing());
@@ -478,33 +496,33 @@
   // There is still a task, even though there are no allocations.
   EXPECT_EQ(1u, task_env_.GetPendingMainThreadTaskCount());
 
-  // Not enough allocations to decrease the interval.
-  FillThreadCacheAndReturnIndex(kSmallSize, 1);
+  // Not enough memory to decrease the interval.
+  FillThreadCacheWithMemory(ThreadCacheRegistry::kMinCachedMemoryForPurging +
+                            1);
   task_env_.FastForwardBy(registry.purge_interval_for_testing());
   EXPECT_EQ(ThreadCacheRegistry::kMaxPurgeInterval,
             registry.purge_interval_for_testing());
 
-  FillThreadCacheAndReturnIndex(
-      kSmallSize, 2 * ThreadCacheRegistry::kMinAllocationsForPurging + 1);
+  FillThreadCacheWithMemory(
+      2 * ThreadCacheRegistry::kMinCachedMemoryForPurging + 1);
   task_env_.FastForwardBy(registry.purge_interval_for_testing());
   EXPECT_EQ(ThreadCacheRegistry::kMaxPurgeInterval / 2,
             registry.purge_interval_for_testing());
 
-  // Enough allocations, interval doesn't change.
-  FillThreadCacheAndReturnIndex(kSmallSize,
-                                ThreadCacheRegistry::kMinAllocationsForPurging);
+  // Enough memory, interval doesn't change.
+  FillThreadCacheWithMemory(ThreadCacheRegistry::kMinCachedMemoryForPurging);
   task_env_.FastForwardBy(registry.purge_interval_for_testing());
   EXPECT_EQ(ThreadCacheRegistry::kMaxPurgeInterval / 2,
             registry.purge_interval_for_testing());
 
-  // No allocations anymore, increase the interval.
+  // No cached memory, increase the interval.
   task_env_.FastForwardBy(registry.purge_interval_for_testing());
   EXPECT_EQ(ThreadCacheRegistry::kMaxPurgeInterval,
             registry.purge_interval_for_testing());
 
-  // Many allocations, directly go to the default interval.
-  FillThreadCacheAndReturnIndex(
-      kSmallSize, 10 * ThreadCacheRegistry::kMinAllocationsForPurging + 1);
+  // A lot of memory, directly go to the default interval.
+  FillThreadCacheWithMemory(
+      10 * ThreadCacheRegistry::kMinCachedMemoryForPurging + 1);
   task_env_.FastForwardBy(registry.purge_interval_for_testing());
   EXPECT_EQ(ThreadCacheRegistry::kDefaultPurgeInterval,
             registry.purge_interval_for_testing());
@@ -517,7 +535,10 @@
   EXPECT_EQ(ThreadCacheRegistry::kDefaultPurgeInterval,
             registry.purge_interval_for_testing());
 
-  // No allocations, the period gets longer.
+  // Small amount of memory, the period gets longer.
+  auto* tcache = ThreadCache::Get();
+  ASSERT_LT(tcache->CachedMemory(),
+            ThreadCacheRegistry::kMinCachedMemoryForPurging);
   task_env_.FastForwardBy(registry.purge_interval_for_testing());
   EXPECT_EQ(2 * ThreadCacheRegistry::kDefaultPurgeInterval,
             registry.purge_interval_for_testing());
@@ -534,8 +555,9 @@
   // There is still a task, even though there are no allocations.
   EXPECT_EQ(1u, task_env_.GetPendingMainThreadTaskCount());
 
-  // Not enough allocations on this thread to decrease the interval.
-  FillThreadCacheAndReturnIndex(kSmallSize, 1);
+  // Not enough memory on this thread to decrease the interval.
+  FillThreadCacheWithMemory(ThreadCacheRegistry::kMinCachedMemoryForPurging /
+                            2);
   task_env_.FastForwardBy(registry.purge_interval_for_testing());
   EXPECT_EQ(ThreadCacheRegistry::kMaxPurgeInterval,
             registry.purge_interval_for_testing());
@@ -543,8 +565,8 @@
   std::atomic<bool> allocations_done{false};
   std::atomic<bool> can_finish{false};
   LambdaThreadDelegate delegate{BindLambdaForTesting([&]() {
-    FillThreadCacheAndReturnIndex(
-        kSmallSize, 10 * ThreadCacheRegistry::kMinAllocationsForPurging + 1);
+    FillThreadCacheWithMemory(10 *
+                              ThreadCacheRegistry::kMinCachedMemoryForPurging);
     allocations_done.store(true, std::memory_order_release);
 
     // This thread needs to be alive when the next periodic purge task runs.
@@ -680,6 +702,7 @@
   DeltaCounter cache_fill_misses_counter{tcache->stats_.cache_fill_misses};
 
   // Default threshold at first.
+  ThreadCache::SetLargestCachedSize(ThreadCache::kDefaultSizeThreshold);
   FillThreadCacheAndReturnIndex(ThreadCache::kDefaultSizeThreshold);
   EXPECT_EQ(0u, alloc_miss_too_large_counter.Delta());
   EXPECT_EQ(1u, cache_fill_counter.Delta());
diff --git a/base/android/java/src/org/chromium/base/ContextUtils.java b/base/android/java/src/org/chromium/base/ContextUtils.java
index 4815f77..6d1625f 100644
--- a/base/android/java/src/org/chromium/base/ContextUtils.java
+++ b/base/android/java/src/org/chromium/base/ContextUtils.java
@@ -18,7 +18,6 @@
 import androidx.annotation.VisibleForTesting;
 
 import org.chromium.base.annotations.JNINamespace;
-import org.chromium.base.annotations.MainDex;
 import org.chromium.base.compat.ApiHelperForM;
 import org.chromium.build.BuildConfig;
 
@@ -62,7 +61,6 @@
      *
      * @param appContext The application context.
      */
-    @MainDex // TODO(agrieve): Could add to whole class if not for ApplicationStatus.initialize().
     public static void initApplicationContext(Context appContext) {
         // Conceding that occasionally in tests, native is loaded before the browser process is
         // started, in which case the browser process re-sets the application context.
diff --git a/base/android/java/src/org/chromium/base/annotations/MainDex.java b/base/android/java/src/org/chromium/base/annotations/MainDex.java
index b0affb7..adc0e75 100644
--- a/base/android/java/src/org/chromium/base/annotations/MainDex.java
+++ b/base/android/java/src/org/chromium/base/annotations/MainDex.java
@@ -10,11 +10,14 @@
 import java.lang.annotation.Target;
 
 /**
- * An annotation that signals that a class should be kept in the main dex file.
+ * Classes with native methods (contain @NativeMethods interfaces) that are used within renderer
+ * processes must be annotated with with @MainDex in order for their native methods work.
  *
- * This generally means it's used by child processes (renderer/utility), which can't load secondary
- * dexes on K and below.
+ * Applies only for Chrome/ChromeModern (not needed for Monochrome+).
+ *
+ * For Cronet builds, which use a default_min_sdk_version of less than 21, this annotation also
+ * causes classes to appear in the main dex file (for "Legacy multidex").
  */
-@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.TYPE})
+@Target(ElementType.TYPE)
 @Retention(RetentionPolicy.CLASS)
 public @interface MainDex {}
diff --git a/base/message_loop/message_pump_win.cc b/base/message_loop/message_pump_win.cc
index 43d3346..745ce92 100644
--- a/base/message_loop/message_pump_win.cc
+++ b/base/message_loop/message_pump_win.cc
@@ -779,6 +779,8 @@
   if (ProcessInternalIOItem(item))
     return true;
 
+  auto scoped_do_native_work = run_state_->delegate->BeginNativeWork();
+
   TRACE_EVENT(
       "base,toplevel", "IOHandler::OnIOCompleted",
       [&](perfetto::EventContext ctx) {
@@ -788,7 +790,6 @@
                           item.handler->io_handler_location())));
       });
 
-  auto scoped_do_native_work = run_state_->delegate->BeginNativeWork();
   item.handler->OnIOCompleted(item.context, item.bytes_transfered, item.error);
 
   return true;
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index e30517a..c48be7a6 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-4.20210422.3.1
+4.20210423.1.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index e30517a..c48be7a6 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-4.20210422.3.1
+4.20210423.1.1
diff --git a/cc/layers/texture_layer.cc b/cc/layers/texture_layer.cc
index 0eba3220..c587252 100644
--- a/cc/layers/texture_layer.cc
+++ b/cc/layers/texture_layer.cc
@@ -15,7 +15,6 @@
 #include "cc/layers/texture_layer_client.h"
 #include "cc/layers/texture_layer_impl.h"
 #include "cc/trees/layer_tree_host.h"
-#include "components/viz/common/resources/single_release_callback.h"
 
 namespace cc {
 
@@ -35,7 +34,7 @@
 }
 
 void TextureLayer::ClearTexture() {
-  SetTransferableResource(viz::TransferableResource(), nullptr);
+  SetTransferableResource(viz::TransferableResource(), viz::ReleaseCallback());
 }
 
 std::unique_ptr<LayerImpl> TextureLayer::CreateLayerImpl(
@@ -89,7 +88,7 @@
 
 void TextureLayer::SetTransferableResourceInternal(
     const viz::TransferableResource& resource,
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback,
+    viz::ReleaseCallback release_callback,
     bool requires_commit) {
   DCHECK(resource.mailbox_holder.mailbox.IsZero() || !holder_ref_ ||
          resource != holder_ref_->holder()->resource());
@@ -114,7 +113,7 @@
 
 void TextureLayer::SetTransferableResource(
     const viz::TransferableResource& resource,
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback) {
+    viz::ReleaseCallback release_callback) {
   bool requires_commit = true;
   SetTransferableResourceInternal(resource, std::move(release_callback),
                                   requires_commit);
@@ -155,7 +154,7 @@
   bool updated = Layer::Update();
   if (client_) {
     viz::TransferableResource resource;
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+    viz::ReleaseCallback release_callback;
     if (client_->PrepareTransferableResource(this, &resource,
                                              &release_callback)) {
       // Already within a commit, no need to do another one immediately.
@@ -195,7 +194,7 @@
   texture_layer->SetForceTextureToOpaque(force_texture_to_opaque_);
   if (needs_set_resource_) {
     viz::TransferableResource resource;
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+    viz::ReleaseCallback release_callback;
     if (holder_ref_) {
       TransferableResourceHolder* holder = holder_ref_->holder();
       resource = holder->resource();
@@ -270,7 +269,7 @@
 
 TextureLayer::TransferableResourceHolder::TransferableResourceHolder(
     const viz::TransferableResource& resource,
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback)
+    viz::ReleaseCallback release_callback)
     : resource_(resource),
       release_callback_(std::move(release_callback)),
       sync_token_(resource.mailbox_holder.sync_token) {}
@@ -291,14 +290,14 @@
     // We run the ReleaseCallback in that case assuming the MessageLoop is being
     // destroyed on the main thread.
     DCHECK(main_thread_checker_.CalledOnValidThread());
-    release_callback_->Run(sync_token_, is_lost_);
+    std::move(release_callback_).Run(sync_token_, is_lost_);
   }
 }
 
 std::unique_ptr<TextureLayer::TransferableResourceHolder::MainThreadReference>
 TextureLayer::TransferableResourceHolder::Create(
     const viz::TransferableResource& resource,
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback) {
+    viz::ReleaseCallback release_callback) {
   return std::make_unique<MainThreadReference>(
       new TransferableResourceHolder(resource, std::move(release_callback)));
 }
@@ -311,16 +310,16 @@
   is_lost_ = is_lost;
 }
 
-std::unique_ptr<viz::SingleReleaseCallback>
+viz::ReleaseCallback
 TextureLayer::TransferableResourceHolder::GetCallbackForImplThread(
     scoped_refptr<base::SequencedTaskRunner> main_thread_task_runner) {
   // We can't call GetCallbackForImplThread if we released the main thread
   // reference.
   DCHECK_GT(internal_references_, 0);
   InternalAddRef();
-  return viz::SingleReleaseCallback::Create(
-      base::BindOnce(&TransferableResourceHolder::ReturnAndReleaseOnImplThread,
-                     this, std::move(main_thread_task_runner)));
+  return base::BindOnce(
+      &TransferableResourceHolder::ReturnAndReleaseOnImplThread, this,
+      std::move(main_thread_task_runner));
 }
 
 void TextureLayer::TransferableResourceHolder::InternalAddRef() {
@@ -336,9 +335,8 @@
   }
 #endif
   if (!--internal_references_) {
-    release_callback_->Run(sync_token_, is_lost_);
+    std::move(release_callback_).Run(sync_token_, is_lost_);
     resource_ = viz::TransferableResource();
-    release_callback_ = nullptr;
   }
 }
 
diff --git a/cc/layers/texture_layer.h b/cc/layers/texture_layer.h
index 7fcf300c7..a9ff111c 100644
--- a/cc/layers/texture_layer.h
+++ b/cc/layers/texture_layer.h
@@ -15,18 +15,14 @@
 #include "cc/layers/layer.h"
 #include "cc/resources/cross_thread_shared_bitmap.h"
 #include "cc/resources/shared_bitmap_id_registrar.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/resources/transferable_resource.h"
 
 namespace gpu {
 struct SyncToken;
 }
 
-namespace viz {
-class SingleReleaseCallback;
-}
-
 namespace cc {
-class SingleReleaseCallback;
 class TextureLayer;
 class TextureLayerClient;
 
@@ -62,7 +58,7 @@
 
     // Gets a viz::ReleaseCallback that can be called from another thread. Note:
     // the caller must ensure the callback is called.
-    std::unique_ptr<viz::SingleReleaseCallback> GetCallbackForImplThread(
+    viz::ReleaseCallback GetCallbackForImplThread(
         scoped_refptr<base::SequencedTaskRunner> main_thread_task_runner);
 
    protected:
@@ -71,7 +67,7 @@
     // Protected visiblity so only TextureLayer and unit tests can create these.
     static std::unique_ptr<MainThreadReference> Create(
         const viz::TransferableResource& resource,
-        std::unique_ptr<viz::SingleReleaseCallback> release_callback);
+        viz::ReleaseCallback release_callback);
     virtual ~TransferableResourceHolder();
 
    private:
@@ -79,7 +75,7 @@
     friend class MainThreadReference;
     explicit TransferableResourceHolder(
         const viz::TransferableResource& resource,
-        std::unique_ptr<viz::SingleReleaseCallback> release_callback);
+        viz::ReleaseCallback release_callback);
 
     void InternalAddRef();
     void InternalRelease();
@@ -98,7 +94,7 @@
     int posted_internal_derefs_ = 0;
 #endif
     viz::TransferableResource resource_;
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback_;
+    viz::ReleaseCallback release_callback_;
 
     // This lock guards the sync_token_ and is_lost_ fields because they can be
     // accessed on both the impl and main thread. We do this to ensure that the
@@ -150,9 +146,8 @@
   void SetForceTextureToOpaque(bool opaque);
 
   // Code path for plugins which supply their own mailbox.
-  void SetTransferableResource(
-      const viz::TransferableResource& resource,
-      std::unique_ptr<viz::SingleReleaseCallback> release_callback);
+  void SetTransferableResource(const viz::TransferableResource& resource,
+                               viz::ReleaseCallback release_callback);
 
   void SetNeedsDisplayRect(const gfx::Rect& dirty_rect) override;
 
@@ -185,7 +180,7 @@
  private:
   void SetTransferableResourceInternal(
       const viz::TransferableResource& resource,
-      std::unique_ptr<viz::SingleReleaseCallback> release_callback,
+      viz::ReleaseCallback release_callback,
       bool requires_commit);
 
   // Friends to give access to UnregisterSharedBitmapId().
diff --git a/cc/layers/texture_layer_client.h b/cc/layers/texture_layer_client.h
index 71c217e..f19c289a 100644
--- a/cc/layers/texture_layer_client.h
+++ b/cc/layers/texture_layer_client.h
@@ -5,7 +5,7 @@
 #ifndef CC_LAYERS_TEXTURE_LAYER_CLIENT_H_
 #define CC_LAYERS_TEXTURE_LAYER_CLIENT_H_
 
-#include "components/viz/common/resources/single_release_callback.h"
+#include "components/viz/common/resources/release_callback.h"
 
 namespace viz {
 struct TransferableResource;
@@ -22,7 +22,7 @@
   virtual bool PrepareTransferableResource(
       SharedBitmapIdRegistrar* bitmap_registar,
       viz::TransferableResource* transferable_resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* release_callback) = 0;
+      viz::ReleaseCallback* release_callback) = 0;
 
  protected:
   virtual ~TextureLayerClient() {}
diff --git a/cc/layers/texture_layer_impl.cc b/cc/layers/texture_layer_impl.cc
index 569643a..133ab41 100644
--- a/cc/layers/texture_layer_impl.cc
+++ b/cc/layers/texture_layer_impl.cc
@@ -20,7 +20,6 @@
 #include "components/viz/common/quads/texture_draw_quad.h"
 #include "components/viz/common/resources/bitmap_allocation.h"
 #include "components/viz/common/resources/platform_color.h"
-#include "components/viz/common/resources/single_release_callback.h"
 
 namespace cc {
 
@@ -233,7 +232,7 @@
 
 void TextureLayerImpl::SetTransferableResource(
     const viz::TransferableResource& resource,
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback) {
+    viz::ReleaseCallback release_callback) {
   DCHECK_EQ(resource.mailbox_holder.mailbox.IsZero(), !release_callback);
   FreeTransferableResource();
   transferable_resource_ = resource;
@@ -282,11 +281,10 @@
     if (release_callback_) {
       // We didn't use the resource, but the client might need the SyncToken
       // before it can use the resource with its own GL context.
-      release_callback_->Run(transferable_resource_.mailbox_holder.sync_token,
-                             false);
+      std::move(release_callback_)
+          .Run(transferable_resource_.mailbox_holder.sync_token, false);
     }
     transferable_resource_ = viz::TransferableResource();
-    release_callback_ = nullptr;
   } else if (resource_id_) {
     DCHECK(!own_resource_);
     auto* resource_provider = layer_tree_impl()->resource_provider();
diff --git a/cc/layers/texture_layer_impl.h b/cc/layers/texture_layer_impl.h
index 6ab05573..17fc753 100644
--- a/cc/layers/texture_layer_impl.h
+++ b/cc/layers/texture_layer_impl.h
@@ -15,12 +15,9 @@
 #include "cc/cc_export.h"
 #include "cc/layers/layer_impl.h"
 #include "cc/resources/cross_thread_shared_bitmap.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/resources/transferable_resource.h"
 
-namespace viz {
-class SingleReleaseCallback;
-}
-
 namespace cc {
 
 class CC_EXPORT TextureLayerImpl : public LayerImpl {
@@ -60,9 +57,8 @@
   void SetUVTopLeft(const gfx::PointF& top_left);
   void SetUVBottomRight(const gfx::PointF& bottom_right);
 
-  void SetTransferableResource(
-      const viz::TransferableResource& resource,
-      std::unique_ptr<viz::SingleReleaseCallback> release_callback);
+  void SetTransferableResource(const viz::TransferableResource& resource,
+                               viz::ReleaseCallback release_callback);
 
   // These methods notify the display compositor, through the
   // CompositorFrameSink, of the existence of a SharedBitmapId and its
@@ -103,7 +99,7 @@
   // compositor's viz::ClientResourceProvider in order to refer to the
   // TransferableResource given to it.
   viz::ResourceId resource_id_ = viz::kInvalidResourceId;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback_;
+  viz::ReleaseCallback release_callback_;
 
   // As a pending layer, the set of SharedBitmapIds and the underlying
   // base::SharedMemory that must be notified to the display compositor through
diff --git a/cc/layers/texture_layer_impl_unittest.cc b/cc/layers/texture_layer_impl_unittest.cc
index 0e46ca0..5ba92ea 100644
--- a/cc/layers/texture_layer_impl_unittest.cc
+++ b/cc/layers/texture_layer_impl_unittest.cc
@@ -63,9 +63,8 @@
   TextureLayerImpl* texture_layer_impl = impl.AddLayer<TextureLayerImpl>();
   texture_layer_impl->SetBounds(layer_size);
   texture_layer_impl->SetDrawsContent(true);
-  texture_layer_impl->SetTransferableResource(
-      resource,
-      viz::SingleReleaseCallback::Create(base::BindOnce(&IgnoreCallback)));
+  texture_layer_impl->SetTransferableResource(resource,
+                                              base::BindOnce(&IgnoreCallback));
   CopyProperties(impl.root_layer(), texture_layer_impl);
 
   impl.CalcDrawProps(viewport_size);
diff --git a/cc/layers/texture_layer_unittest.cc b/cc/layers/texture_layer_unittest.cc
index 3044ea34..94d4e308 100644
--- a/cc/layers/texture_layer_unittest.cc
+++ b/cc/layers/texture_layer_unittest.cc
@@ -261,13 +261,11 @@
     layer->SetIsDrawable(true);
     layer->SetBounds(gfx::Size(10, 10));
     if (gpu) {
-      layer->SetTransferableResource(
-          test_data_.resource1_,
-          viz::SingleReleaseCallback::Create(test_data_.release_callback1_));
+      layer->SetTransferableResource(test_data_.resource1_,
+                                     test_data_.release_callback1_);
     } else {
-      layer->SetTransferableResource(
-          test_data_.sw_resource_,
-          viz::SingleReleaseCallback::Create(test_data_.sw_release_callback_));
+      layer->SetTransferableResource(test_data_.sw_resource_,
+                                     test_data_.sw_release_callback_);
     }
 
     viz::ParentLocalSurfaceIdAllocator allocator;
@@ -339,9 +337,8 @@
   Mock::VerifyAndClearExpectations(layer_tree_host_.get());
 
   EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AtLeast(1));
-  test_layer->SetTransferableResource(
-      test_data_.resource1_,
-      viz::SingleReleaseCallback::Create(test_data_.release_callback1_));
+  test_layer->SetTransferableResource(test_data_.resource1_,
+                                      test_data_.release_callback1_);
   Mock::VerifyAndClearExpectations(layer_tree_host_.get());
 
   EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AtLeast(1));
@@ -349,9 +346,8 @@
       test_data_.mock_callback_,
       Release(test_data_.mailbox_name1_, test_data_.sync_token1_, false))
       .Times(1);
-  test_layer->SetTransferableResource(
-      test_data_.resource2_,
-      viz::SingleReleaseCallback::Create(test_data_.release_callback2_));
+  test_layer->SetTransferableResource(test_data_.resource2_,
+                                      test_data_.release_callback2_);
   Mock::VerifyAndClearExpectations(layer_tree_host_.get());
   Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
 
@@ -365,9 +361,8 @@
   Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
 
   EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AtLeast(1));
-  test_layer->SetTransferableResource(
-      test_data_.sw_resource_,
-      viz::SingleReleaseCallback::Create(test_data_.sw_release_callback_));
+  test_layer->SetTransferableResource(test_data_.sw_resource_,
+                                      test_data_.sw_release_callback_);
   Mock::VerifyAndClearExpectations(layer_tree_host_.get());
   Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
 
@@ -381,9 +376,8 @@
 
   // Test destructor.
   EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AtLeast(1));
-  test_layer->SetTransferableResource(
-      test_data_.resource1_,
-      viz::SingleReleaseCallback::Create(test_data_.release_callback1_));
+  test_layer->SetTransferableResource(test_data_.resource1_,
+                                      test_data_.release_callback1_);
 }
 
 class TextureLayerMailboxHolderTest : public TextureLayerTest {
@@ -403,15 +397,14 @@
   }
 
   void CreateMainRef() {
-    main_ref_ = TestMailboxHolder::Create(
-        test_data_.resource1_,
-        viz::SingleReleaseCallback::Create(test_data_.release_callback1_));
+    main_ref_ = TestMailboxHolder::Create(test_data_.resource1_,
+                                          test_data_.release_callback1_);
   }
 
   void ReleaseMainRef() { main_ref_ = nullptr; }
 
   void CreateImplRef(
-      std::unique_ptr<viz::SingleReleaseCallback>* impl_ref,
+      viz::ReleaseCallback* impl_ref,
       scoped_refptr<base::SequencedTaskRunner> main_thread_task_runner) {
     *impl_ref = main_ref_->holder()->GetCallbackForImplThread(
         std::move(main_thread_task_runner));
@@ -435,7 +428,7 @@
 
   // The texture layer is attached to compositor1, and passes a reference to its
   // impl tree.
-  std::unique_ptr<viz::SingleReleaseCallback> compositor1;
+  viz::ReleaseCallback compositor1;
   main_thread_.task_runner()->PostTask(
       FROM_HERE, base::BindOnce(&TextureLayerMailboxHolderTest::CreateImplRef,
                                 base::Unretained(this), &compositor1,
@@ -443,7 +436,7 @@
 
   // Then the texture layer is removed and attached to compositor2, and passes a
   // reference to its impl tree.
-  std::unique_ptr<viz::SingleReleaseCallback> compositor2;
+  viz::ReleaseCallback compositor2;
   main_thread_.task_runner()->PostTask(
       FROM_HERE, base::BindOnce(&TextureLayerMailboxHolderTest::CreateImplRef,
                                 base::Unretained(this), &compositor2,
@@ -454,8 +447,8 @@
 
   // The compositors both destroy their impl trees before the main thread layer
   // is destroyed.
-  compositor1->Run(SyncTokenFromUInt(100), false);
-  compositor2->Run(SyncTokenFromUInt(200), false);
+  std::move(compositor1).Run(SyncTokenFromUInt(100), false);
+  std::move(compositor2).Run(SyncTokenFromUInt(200), false);
 
   Wait(main_thread_);
 
@@ -488,7 +481,7 @@
 
   // The texture layer is attached to compositor1, and passes a reference to its
   // impl tree.
-  std::unique_ptr<viz::SingleReleaseCallback> compositor1;
+  viz::ReleaseCallback compositor1;
   main_thread_.task_runner()->PostTask(
       FROM_HERE, base::BindOnce(&TextureLayerMailboxHolderTest::CreateImplRef,
                                 base::Unretained(this), &compositor1,
@@ -496,7 +489,7 @@
 
   // Then the texture layer is removed and attached to compositor2, and passes a
   // reference to its impl tree.
-  std::unique_ptr<viz::SingleReleaseCallback> compositor2;
+  viz::ReleaseCallback compositor2;
   main_thread_.task_runner()->PostTask(
       FROM_HERE, base::BindOnce(&TextureLayerMailboxHolderTest::CreateImplRef,
                                 base::Unretained(this), &compositor2,
@@ -506,7 +499,7 @@
   Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
 
   // One compositor destroys their impl tree.
-  compositor1->Run(SyncTokenFromUInt(100), false);
+  std::move(compositor1).Run(SyncTokenFromUInt(100), false);
 
   // Then the main thread reference is destroyed.
   main_thread_.task_runner()->PostTask(
@@ -524,7 +517,7 @@
               Release(test_data_.mailbox_name1_, SyncTokenFromUInt(200), true))
       .Times(1);
 
-  compositor2->Run(SyncTokenFromUInt(200), true);
+  std::move(compositor2).Run(SyncTokenFromUInt(200), true);
   Wait(main_thread_);
   Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
 }
@@ -542,7 +535,7 @@
 
   // The texture layer is attached to compositor1, and passes a reference to its
   // impl tree.
-  std::unique_ptr<viz::SingleReleaseCallback> compositor1;
+  viz::ReleaseCallback compositor1;
   main_thread_.task_runner()->PostTask(
       FROM_HERE, base::BindOnce(&TextureLayerMailboxHolderTest::CreateImplRef,
                                 base::Unretained(this), &compositor1,
@@ -550,7 +543,7 @@
 
   // Then the texture layer is removed and attached to compositor2, and passes a
   // reference to its impl tree.
-  std::unique_ptr<viz::SingleReleaseCallback> compositor2;
+  viz::ReleaseCallback compositor2;
   main_thread_.task_runner()->PostTask(
       FROM_HERE, base::BindOnce(&TextureLayerMailboxHolderTest::CreateImplRef,
                                 base::Unretained(this), &compositor2,
@@ -565,7 +558,7 @@
                                 base::Unretained(this)));
 
   // One compositor destroys their impl tree.
-  compositor2->Run(SyncTokenFromUInt(200), false);
+  std::move(compositor2).Run(SyncTokenFromUInt(200), false);
 
   Wait(main_thread_);
 
@@ -578,7 +571,7 @@
               Release(test_data_.mailbox_name1_, SyncTokenFromUInt(100), true))
       .Times(1);
 
-  compositor1->Run(SyncTokenFromUInt(100), true);
+  std::move(compositor1).Run(SyncTokenFromUInt(100), true);
   Wait(main_thread_);
   Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
 }
@@ -688,10 +681,9 @@
 
   void SetMailbox(char mailbox_char) {
     EXPECT_EQ(true, main_thread_.CalledOnValidThread());
-    std::unique_ptr<viz::SingleReleaseCallback> callback =
-        viz::SingleReleaseCallback::Create(base::BindOnce(
-            &TextureLayerImplWithMailboxThreadedCallback::ReleaseCallback,
-            base::Unretained(this), mailbox_char));
+    viz::ReleaseCallback callback = base::BindOnce(
+        &TextureLayerImplWithMailboxThreadedCallback::ReleaseCallback,
+        base::Unretained(this), mailbox_char);
 
     const gfx::Size size(64, 64);
     auto resource = viz::TransferableResource::MakeGL(
@@ -785,49 +777,47 @@
   // Hardware mode.
   {
     std::unique_ptr<TextureLayerImpl> impl_layer = CreateTextureLayer();
-    impl_layer->SetTransferableResource(
-        test_data_.resource1_,
-        viz::SingleReleaseCallback::Create(test_data_.release_callback1_));
+    impl_layer->SetTransferableResource(test_data_.resource1_,
+                                        test_data_.release_callback1_);
     EXPECT_TRUE(WillDraw(impl_layer.get(), DRAW_MODE_HARDWARE));
   }
 
   {
     std::unique_ptr<TextureLayerImpl> impl_layer =
         TextureLayerImpl::Create(host_impl_.active_tree(), 1);
-    impl_layer->SetTransferableResource(viz::TransferableResource(), nullptr);
+    impl_layer->SetTransferableResource(viz::TransferableResource(),
+                                        viz::ReleaseCallback());
     EXPECT_FALSE(WillDraw(impl_layer.get(), DRAW_MODE_HARDWARE));
   }
 
   // Software mode.
   {
     std::unique_ptr<TextureLayerImpl> impl_layer = CreateTextureLayer();
-    impl_layer->SetTransferableResource(
-        test_data_.resource1_,
-        viz::SingleReleaseCallback::Create(test_data_.release_callback1_));
+    impl_layer->SetTransferableResource(test_data_.resource1_,
+                                        test_data_.release_callback1_);
     EXPECT_FALSE(WillDraw(impl_layer.get(), DRAW_MODE_SOFTWARE));
   }
 
   {
     std::unique_ptr<TextureLayerImpl> impl_layer = CreateTextureLayer();
-    impl_layer->SetTransferableResource(viz::TransferableResource(), nullptr);
+    impl_layer->SetTransferableResource(viz::TransferableResource(),
+                                        viz::ReleaseCallback());
     EXPECT_FALSE(WillDraw(impl_layer.get(), DRAW_MODE_SOFTWARE));
   }
 
   {
     // Software resource.
     std::unique_ptr<TextureLayerImpl> impl_layer = CreateTextureLayer();
-    impl_layer->SetTransferableResource(
-        test_data_.sw_resource_,
-        viz::SingleReleaseCallback::Create(test_data_.sw_release_callback_));
+    impl_layer->SetTransferableResource(test_data_.sw_resource_,
+                                        test_data_.sw_release_callback_);
     EXPECT_TRUE(WillDraw(impl_layer.get(), DRAW_MODE_SOFTWARE));
   }
 
   // Resourceless software mode.
   {
     std::unique_ptr<TextureLayerImpl> impl_layer = CreateTextureLayer();
-    impl_layer->SetTransferableResource(
-        test_data_.resource1_,
-        viz::SingleReleaseCallback::Create(test_data_.release_callback1_));
+    impl_layer->SetTransferableResource(test_data_.resource1_,
+                                        test_data_.release_callback1_);
     EXPECT_FALSE(WillDraw(impl_layer.get(), DRAW_MODE_RESOURCELESS_SOFTWARE));
   }
 }
@@ -842,9 +832,8 @@
       pending_layer->CreateLayerImpl(host_impl_.active_tree()));
   ASSERT_TRUE(active_layer);
 
-  pending_layer->SetTransferableResource(
-      test_data_.resource1_,
-      viz::SingleReleaseCallback::Create(test_data_.release_callback1_));
+  pending_layer->SetTransferableResource(test_data_.resource1_,
+                                         test_data_.release_callback1_);
 
   // Test multiple commits without an activation. The resource wasn't used so
   // the original sync token is returned.
@@ -852,9 +841,8 @@
       test_data_.mock_callback_,
       Release(test_data_.mailbox_name1_, test_data_.sync_token1_, false))
       .Times(1);
-  pending_layer->SetTransferableResource(
-      test_data_.resource2_,
-      viz::SingleReleaseCallback::Create(test_data_.release_callback2_));
+  pending_layer->SetTransferableResource(test_data_.resource2_,
+                                         test_data_.release_callback2_);
   Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
 
   // Test callback after activation.
@@ -862,9 +850,8 @@
   active_layer->DidBecomeActive();
 
   EXPECT_CALL(test_data_.mock_callback_, Release(_, _, _)).Times(0);
-  pending_layer->SetTransferableResource(
-      test_data_.resource1_,
-      viz::SingleReleaseCallback::Create(test_data_.release_callback1_));
+  pending_layer->SetTransferableResource(test_data_.resource1_,
+                                         test_data_.release_callback1_);
   Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
 
   EXPECT_CALL(test_data_.mock_callback_,
@@ -878,7 +865,8 @@
   EXPECT_CALL(test_data_.mock_callback_,
               Release(test_data_.mailbox_name1_, _, false))
       .Times(1);
-  pending_layer->SetTransferableResource(viz::TransferableResource(), nullptr);
+  pending_layer->SetTransferableResource(viz::TransferableResource(),
+                                         viz::ReleaseCallback());
   pending_layer->PushPropertiesTo(active_layer.get());
   active_layer->DidBecomeActive();
   Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
@@ -889,9 +877,8 @@
       test_data_.mock_callback_,
       Release(test_data_.mailbox_name1_, test_data_.sync_token1_, false))
       .Times(1);
-  pending_layer->SetTransferableResource(
-      test_data_.resource1_,
-      viz::SingleReleaseCallback::Create(test_data_.release_callback1_));
+  pending_layer->SetTransferableResource(test_data_.resource1_,
+                                         test_data_.release_callback1_);
 }
 
 TEST_F(TextureLayerImplWithResourceTest,
@@ -902,14 +889,14 @@
   EXPECT_CALL(test_data_.mock_callback_,
               Release(test_data_.mailbox_name1_, _, false))
       .Times(1);
-  impl_layer->SetTransferableResource(
-      test_data_.resource1_,
-      viz::SingleReleaseCallback::Create(test_data_.release_callback1_));
+  impl_layer->SetTransferableResource(test_data_.resource1_,
+                                      test_data_.release_callback1_);
   impl_layer->DidBecomeActive();
   EXPECT_TRUE(impl_layer->WillDraw(
       DRAW_MODE_HARDWARE, host_impl_.active_tree()->resource_provider()));
   impl_layer->DidDraw(host_impl_.active_tree()->resource_provider());
-  impl_layer->SetTransferableResource(viz::TransferableResource(), nullptr);
+  impl_layer->SetTransferableResource(viz::TransferableResource(),
+                                      viz::ReleaseCallback());
 }
 
 // Checks that TextureLayer::Update does not cause an extra commit when setting
@@ -922,7 +909,7 @@
   bool PrepareTransferableResource(
       SharedBitmapIdRegistrar* bitmap_registrar,
       viz::TransferableResource* resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* release_callback) override {
+      viz::ReleaseCallback* release_callback) override {
     if (layer_tree_host()->SourceFrameNumber() == 1) {
       // Once this has been committed, the resource will be released.
       *resource = viz::TransferableResource();
@@ -933,9 +920,9 @@
     *resource = viz::TransferableResource::MakeGL(
         MailboxFromChar('1'), GL_LINEAR, GL_TEXTURE_2D,
         SyncTokenFromUInt(0x123), size, false /* is_overlay_candidate */);
-    *release_callback = viz::SingleReleaseCallback::Create(base::BindOnce(
+    *release_callback = base::BindOnce(
         &TextureLayerNoExtraCommitForMailboxTest::ResourceReleased,
-        base::Unretained(this)));
+        base::Unretained(this));
     return true;
   }
 
@@ -1000,15 +987,15 @@
   bool PrepareTransferableResource(
       SharedBitmapIdRegistrar* bitmap_registrar,
       viz::TransferableResource* resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* release_callback) override {
+      viz::ReleaseCallback* release_callback) override {
     ++prepare_called_;
     if (!resource_changed_)
       return false;
     resource_changed_ = false;
     *resource = resource_;
-    *release_callback = viz::SingleReleaseCallback::Create(base::BindOnce(
+    *release_callback = base::BindOnce(
         &TextureLayerChangeInvisibleMailboxTest::ResourceReleased,
-        base::Unretained(this)));
+        base::Unretained(this));
     return true;
   }
 
@@ -1128,14 +1115,14 @@
   bool PrepareTransferableResource(
       SharedBitmapIdRegistrar* bitmap_registrar,
       viz::TransferableResource* resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* release_callback) override {
+      viz::ReleaseCallback* release_callback) override {
     constexpr gfx::Size size(64, 64);
     *resource = viz::TransferableResource::MakeGL(
         MailboxFromChar('1'), GL_LINEAR, GL_TEXTURE_2D, SyncTokenFromUInt(1),
         size, false /* is_overlay_candidate */);
-    *release_callback = viz::SingleReleaseCallback::Create(
+    *release_callback =
         base::BindOnce(&TextureLayerReleaseResourcesBase::ResourceReleased,
-                       base::Unretained(this)));
+                       base::Unretained(this));
     return true;
   }
 
@@ -1204,10 +1191,9 @@
 
   void SetMailbox(char mailbox_char) {
     EXPECT_EQ(true, main_thread_.CalledOnValidThread());
-    std::unique_ptr<viz::SingleReleaseCallback> callback =
-        viz::SingleReleaseCallback::Create(base::BindOnce(
-            &TextureLayerWithResourceMainThreadDeleted::ReleaseCallback,
-            base::Unretained(this)));
+    viz::ReleaseCallback callback = base::BindOnce(
+        &TextureLayerWithResourceMainThreadDeleted::ReleaseCallback,
+        base::Unretained(this));
     constexpr gfx::Size size(64, 64);
     auto resource = viz::TransferableResource::MakeGL(
         MailboxFromChar(mailbox_char), GL_LINEAR, GL_TEXTURE_2D,
@@ -1276,10 +1262,9 @@
 
   void SetMailbox(char mailbox_char) {
     EXPECT_EQ(true, main_thread_.CalledOnValidThread());
-    std::unique_ptr<viz::SingleReleaseCallback> callback =
-        viz::SingleReleaseCallback::Create(base::BindOnce(
-            &TextureLayerWithResourceImplThreadDeleted::ReleaseCallback,
-            base::Unretained(this)));
+    viz::ReleaseCallback callback = base::BindOnce(
+        &TextureLayerWithResourceImplThreadDeleted::ReleaseCallback,
+        base::Unretained(this));
     constexpr gfx::Size size(64, 64);
     auto resource = viz::TransferableResource::MakeGL(
         MailboxFromChar(mailbox_char), GL_LINEAR, GL_TEXTURE_2D,
@@ -1346,7 +1331,7 @@
   bool PrepareTransferableResource(
       SharedBitmapIdRegistrar* bitmap_registrar,
       viz::TransferableResource* resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* release_callback) override {
+      viz::ReleaseCallback* release_callback) override {
     return false;
   }
 };
@@ -1455,8 +1440,7 @@
         texture_layer_->SetTransferableResource(
             viz::TransferableResource::MakeSoftware(id_, gfx::Size(1, 1),
                                                     viz::RGBA_8888),
-            viz::SingleReleaseCallback::Create(
-                base::BindOnce([](const gpu::SyncToken&, bool) {})));
+            base::BindOnce([](const gpu::SyncToken&, bool) {}));
         break;
       case 2:
         // When the layer is removed from the tree, the bitmap should be
@@ -1559,8 +1543,7 @@
         texture_layer_->SetTransferableResource(
             viz::TransferableResource::MakeSoftware(id_, gfx::Size(1, 1),
                                                     viz::RGBA_8888),
-            viz::SingleReleaseCallback::Create(
-                base::BindOnce([](const gpu::SyncToken&, bool) {})));
+            base::BindOnce([](const gpu::SyncToken&, bool) {}));
         break;
       case 2:
         // Draw again after OnPurgeMemory() was called on the impl thread so we
@@ -1644,8 +1627,7 @@
         texture_layer_->SetTransferableResource(
             viz::TransferableResource::MakeSoftware(id1_, gfx::Size(1, 1),
                                                     viz::RGBA_8888),
-            viz::SingleReleaseCallback::Create(
-                base::BindOnce([](const gpu::SyncToken&, bool) {})));
+            base::BindOnce([](const gpu::SyncToken&, bool) {}));
         break;
       case 2:
         // Drop one registration, and force a commit and SubmitCompositorFrame
@@ -1746,8 +1728,7 @@
         texture_layer_->SetTransferableResource(
             viz::TransferableResource::MakeSoftware(id1_, gfx::Size(1, 1),
                                                     viz::RGBA_8888),
-            viz::SingleReleaseCallback::Create(
-                base::BindOnce([](const gpu::SyncToken&, bool) {})));
+            base::BindOnce([](const gpu::SyncToken&, bool) {}));
         break;
       case 2:
         // Drop the other registration.
@@ -1834,9 +1815,9 @@
         texture_layer_->SetTransferableResource(
             viz::TransferableResource::MakeSoftware(id_, gfx::Size(1, 1),
                                                     viz::RGBA_8888),
-            viz::SingleReleaseCallback::Create(base::BindOnce(
+            base::BindOnce(
                 &SoftwareTextureLayerLoseFrameSinkTest::ReleaseCallback,
-                base::Unretained(this))));
+                base::Unretained(this)));
         EXPECT_FALSE(released_);
         break;
       case 2:
@@ -1947,8 +1928,7 @@
         texture_layer_->SetTransferableResource(
             viz::TransferableResource::MakeSoftware(id_, gfx::Size(1, 1),
                                                     viz::RGBA_8888),
-            viz::SingleReleaseCallback::Create(
-                base::BindOnce([](const gpu::SyncToken&, bool) {})));
+            base::BindOnce([](const gpu::SyncToken&, bool) {}));
         break;
       case 2:
         // Release the TransferableResource before shutdown.
diff --git a/cc/layers/video_layer_impl.cc b/cc/layers/video_layer_impl.cc
index 824dd4a..658fbbdd 100644
--- a/cc/layers/video_layer_impl.cc
+++ b/cc/layers/video_layer_impl.cc
@@ -21,7 +21,6 @@
 #include "components/viz/common/quads/stream_video_draw_quad.h"
 #include "components/viz/common/quads/texture_draw_quad.h"
 #include "components/viz/common/quads/yuv_video_draw_quad.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "media/base/video_frame.h"
 #include "media/renderers/video_resource_updater.h"
 #include "ui/gfx/color_space.h"
diff --git a/cc/resources/resource_pool.cc b/cc/resources/resource_pool.cc
index 9b22734..638db6c 100644
--- a/cc/resources/resource_pool.cc
+++ b/cc/resources/resource_pool.cc
@@ -340,9 +340,8 @@
   transferable.color_space = resource->color_space();
   resource->set_resource_id(resource_provider_->ImportResource(
       std::move(transferable),
-      viz::SingleReleaseCallback::Create(base::BindOnce(
-          &ResourcePool::OnResourceReleased, weak_ptr_factory_.GetWeakPtr(),
-          resource->unique_id()))));
+      base::BindOnce(&ResourcePool::OnResourceReleased,
+                     weak_ptr_factory_.GetWeakPtr(), resource->unique_id())));
   return true;
 }
 
diff --git a/cc/test/fake_ui_resource_layer_tree_host_impl.cc b/cc/test/fake_ui_resource_layer_tree_host_impl.cc
index c2d26c5..7efa0827 100644
--- a/cc/test/fake_ui_resource_layer_tree_host_impl.cc
+++ b/cc/test/fake_ui_resource_layer_tree_host_impl.cc
@@ -29,7 +29,7 @@
       viz::TransferableResource::MakeGL(
           gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, gpu::SyncToken(),
           bitmap.GetSize(), false /* is_overlay_candidate */),
-      viz::SingleReleaseCallback::Create(base::DoNothing()));
+      base::DoNothing());
 
   data.opaque = bitmap.GetOpaque();
   fake_ui_resource_map_[uid] = std::move(data);
diff --git a/cc/test/layer_tree_pixel_test.h b/cc/test/layer_tree_pixel_test.h
index ca8954f..c903165 100644
--- a/cc/test/layer_tree_pixel_test.h
+++ b/cc/test/layer_tree_pixel_test.h
@@ -16,7 +16,6 @@
 #include "cc/trees/effect_node.h"
 #include "cc/trees/scroll_node.h"
 #include "cc/trees/transform_node.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "ui/gl/gl_implementation.h"
 
 class SkBitmap;
diff --git a/cc/test/pixel_test.cc b/cc/test/pixel_test.cc
index 78edac9d8..24050baa 100644
--- a/cc/test/pixel_test.cc
+++ b/cc/test/pixel_test.cc
@@ -252,7 +252,7 @@
   return child_resource_provider_->ImportResource(
       viz::TransferableResource::MakeSoftware(shared_bitmap_id, size,
                                               viz::RGBA_8888),
-      viz::SingleReleaseCallback::Create(base::DoNothing()));
+      base::DoNothing());
 }
 
 void PixelTest::SetUpGLWithoutRenderer(
diff --git a/cc/test/render_pass_test_utils.cc b/cc/test/render_pass_test_utils.cc
index 0fb7f2e..f8bc9a68 100644
--- a/cc/test/render_pass_test_utils.cc
+++ b/cc/test/render_pass_test_utils.cc
@@ -44,8 +44,8 @@
       gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, sync_token, size,
       false /* is_overlay_candidate */);
   transfer_resource.color_space = std::move(color_space);
-  return resource_provider->ImportResource(
-      transfer_resource, viz::SingleReleaseCallback::Create(base::DoNothing()));
+  return resource_provider->ImportResource(transfer_resource,
+                                           base::DoNothing());
 }
 
 }  // anonymous namespace
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc
index 2a5cb558..a3106a5 100644
--- a/cc/trees/layer_tree_host.cc
+++ b/cc/trees/layer_tree_host.cc
@@ -1396,6 +1396,16 @@
 
 void LayerTreeHost::SetLocalSurfaceIdFromParent(
     const viz::LocalSurfaceId& local_surface_id_from_parent) {
+  // If the viz::LocalSurfaceId is invalid we will be hitting the early exit.
+  // However creating a hash for tracing of an invalid id throw an error. So
+  // exit here. This is either from unit testing where no ids are being setup,
+  // or from a disconnect in Renderer and Browser startup, in which Renderers
+  // have a partial state before the Browser sends the full visual properties.
+  //
+  // TODO(jonross): Untangle startup so that we don't have this invalid partial
+  // state. (https://crbug.com/1185286) (https://crbug.com/419087)
+  if (local_surface_id_from_parent_ == local_surface_id_from_parent)
+    return;
   const viz::LocalSurfaceId current_local_surface_id_from_parent =
       local_surface_id_from_parent_;
 
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index 0da1130..4a612fc 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -4543,8 +4543,8 @@
       // resource backing will be deleted when the LayerTreeFrameSink is
       // removed before shutdown, so nothing leaks if the WeakPtr is
       // invalidated.
-      viz::SingleReleaseCallback::Create(base::BindOnce(
-          &LayerTreeHostImpl::OnUIResourceReleased, AsWeakPtr(), uid)));
+      base::BindOnce(&LayerTreeHostImpl::OnUIResourceReleased, AsWeakPtr(),
+                     uid));
 
   UIResourceData data;
   data.opaque = bitmap.GetOpaque();
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
index 51afc07..ddf3ef6 100644
--- a/cc/trees/layer_tree_host_impl_unittest.cc
+++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -10285,7 +10285,7 @@
     resource_id_ = resource_provider_->ImportResource(
         viz::TransferableResource::MakeSoftware(
             viz::SharedBitmap::GenerateId(), gfx::Size(1, 1), viz::RGBA_8888),
-        viz::SingleReleaseCallback::Create(base::DoNothing()));
+        base::DoNothing());
     SetBounds(gfx::Size(10, 10));
     SetDrawsContent(true);
   }
diff --git a/cc/trees/layer_tree_host_perftest.cc b/cc/trees/layer_tree_host_perftest.cc
index 2830c97f..e2715896 100644
--- a/cc/trees/layer_tree_host_perftest.cc
+++ b/cc/trees/layer_tree_host_perftest.cc
@@ -23,7 +23,6 @@
 #include "cc/test/layer_tree_test.h"
 #include "cc/test/test_layer_tree_frame_sink.h"
 #include "cc/trees/layer_tree_impl.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "components/viz/test/paths.h"
 #include "gpu/command_buffer/common/mailbox.h"
 #include "gpu/command_buffer/common/sync_token.h"
@@ -324,10 +323,9 @@
     name_stream << "name" << next_fence_sync_;
     gpu_mailbox.SetName(
         reinterpret_cast<const int8_t*>(name_stream.str().c_str()));
-    std::unique_ptr<viz::SingleReleaseCallback> callback =
-        viz::SingleReleaseCallback::Create(base::BindOnce(
-            &BrowserCompositorInvalidateLayerTreePerfTest::ReleaseMailbox,
-            base::Unretained(this)));
+    auto callback = base::BindOnce(
+        &BrowserCompositorInvalidateLayerTreePerfTest::ReleaseMailbox,
+        base::Unretained(this));
 
     gpu::SyncToken next_sync_token(gpu::CommandBufferNamespace::GPU_IO,
                                    gpu::CommandBufferId::FromUnsafeValue(1),
diff --git a/cc/trees/layer_tree_host_pixeltest_readback.cc b/cc/trees/layer_tree_host_pixeltest_readback.cc
index 4a7504c..f52003c 100644
--- a/cc/trees/layer_tree_host_pixeltest_readback.cc
+++ b/cc/trees/layer_tree_host_pixeltest_readback.cc
@@ -120,12 +120,11 @@
     gpu::SyncToken sync_token = result->GetTextureResult()->sync_token;
     gfx::ColorSpace color_space = result->GetTextureResult()->color_space;
     EXPECT_EQ(result->GetTextureResult()->color_space, output_color_space_);
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback =
-        result->TakeTextureOwnership();
+    viz::ReleaseCallback release_callback = result->TakeTextureOwnership();
 
     SkBitmap bitmap =
         CopyMailboxToBitmap(result->size(), mailbox, sync_token, color_space);
-    release_callback->Run(gpu::SyncToken(), false);
+    std::move(release_callback).Run(gpu::SyncToken(), false);
 
     ReadbackResultAsBitmap(std::make_unique<viz::CopyOutputSkBitmapResult>(
         result->rect(), std::move(bitmap)));
diff --git a/cc/trees/layer_tree_host_unittest_context.cc b/cc/trees/layer_tree_host_unittest_context.cc
index 648e80e..8dab341 100644
--- a/cc/trees/layer_tree_host_unittest_context.cc
+++ b/cc/trees/layer_tree_host_unittest_context.cc
@@ -35,7 +35,6 @@
 #include "cc/trees/layer_tree_impl.h"
 #include "cc/trees/single_thread_proxy.h"
 #include "components/viz/client/client_resource_provider.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "components/viz/test/fake_output_surface.h"
 #include "components/viz/test/test_context_provider.h"
 #include "components/viz/test/test_gles2_interface.h"
@@ -922,9 +921,8 @@
         mailbox, GL_LINEAR, GL_TEXTURE_2D, sync_token, size,
         false /* is_overlay_candidate */);
     texture->SetTransferableResource(
-        resource, viz::SingleReleaseCallback::Create(base::BindOnce(
-                      &LayerTreeHostContextTestDontUseLostResources::
-                          EmptyReleaseCallback)));
+        resource, base::BindOnce(&LayerTreeHostContextTestDontUseLostResources::
+                                     EmptyReleaseCallback));
     root->AddChild(texture);
 
     scoped_refptr<PictureLayer> mask = PictureLayer::Create(&client_);
diff --git a/cc/trees/layer_tree_host_unittest_copyrequest.cc b/cc/trees/layer_tree_host_unittest_copyrequest.cc
index 73e69db..5640d14 100644
--- a/cc/trees/layer_tree_host_unittest_copyrequest.cc
+++ b/cc/trees/layer_tree_host_unittest_copyrequest.cc
@@ -1150,14 +1150,14 @@
   }
 
   void AfterTest() override {
-    release_->Run(gpu::SyncToken(), false);
+    std::move(release_).Run(gpu::SyncToken(), false);
 
     // Except the copy to have made a new shared image.
     EXPECT_EQ(num_shared_images_without_readback_ + 1,
               num_shared_images_with_readback_);
   }
 
-  std::unique_ptr<viz::SingleReleaseCallback> release_;
+  viz::ReleaseCallback release_;
 };
 
 INSTANTIATE_TEST_SUITE_P(
diff --git a/cc/trees/occlusion_tracker.cc b/cc/trees/occlusion_tracker.cc
index 2a88893..91f8fefa 100644
--- a/cc/trees/occlusion_tracker.cc
+++ b/cc/trees/occlusion_tracker.cc
@@ -204,7 +204,8 @@
       finished_target_surface->draw_opacity() < 1 ||
       !IsOccludingBlendMode(finished_target_surface->BlendMode()) ||
       target_is_only_for_copy_request_or_force_render_surface ||
-      finished_target_surface->Filters().HasFilterThatAffectsOpacity()) {
+      finished_target_surface->Filters().HasFilterThatAffectsOpacity() ||
+      finished_target_surface->GetDocumentTransitionSharedElementId().valid()) {
     stack_.back().occlusion_from_outside_target.Clear();
     stack_.back().occlusion_from_inside_target.Clear();
   }
diff --git a/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected b/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected
index 1c2291b..c01d991 100644
--- a/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected
+++ b/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected
@@ -628,6 +628,7 @@
         android:windowSoftInputMode="stateAlwaysHidden|adjustResize">
     </activity>  # DIFF-ANCHOR: 66a0be05
     <activity  # DIFF-ANCHOR: a1fac31f
+        android:excludeFromRecents="true"
         android:exported="true"
         android:label="@string/cablev2_activity_title"
         android:launchMode="singleTop"
diff --git a/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected b/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected
index f09990b..9637cc07 100644
--- a/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected
+++ b/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected
@@ -601,6 +601,7 @@
         android:windowSoftInputMode="stateAlwaysHidden|adjustResize">
     </activity>  # DIFF-ANCHOR: 66a0be05
     <activity  # DIFF-ANCHOR: a1fac31f
+        android:excludeFromRecents="true"
         android:exported="true"
         android:label="@string/cablev2_activity_title"
         android:launchMode="singleTop"
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java
index 9b1e85cb3..0df1516 100644
--- a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java
@@ -1090,7 +1090,7 @@
         });
         View surface =
                 mActivityTestRule.getActivity().findViewById(R.id.primary_tasks_surface_view);
-        mRenderTestRule.render(surface, "singlePane_landscape");
+        mRenderTestRule.render(surface, "singlePane_landscapeV2");
     }
 
     @Test
@@ -1182,7 +1182,7 @@
         ViewUtils.onViewWaiting(
                 allOf(withId(R.id.tile_view_title), withText("0 EXPLORE_SITES"), isDisplayed()));
         ChromeRenderTestRule.sanitize(surface);
-        mRenderTestRule.render(surface, "singlePane_MV_withExploreSitesView");
+        mRenderTestRule.render(surface, "singlePane_MV_withExploreSitesViewV2");
 
         // Initializes native.
         startAndWaitNativeInitialization();
diff --git a/chrome/android/features/tab_ui/BUILD.gn b/chrome/android/features/tab_ui/BUILD.gn
index 0d64b06..7d6a0bc 100644
--- a/chrome/android/features/tab_ui/BUILD.gn
+++ b/chrome/android/features/tab_ui/BUILD.gn
@@ -65,6 +65,7 @@
     "java/res/layout/incognito_description_container_layout.xml",
     "java/res/layout/iph_drag_and_drop_dialog_layout.xml",
     "java/res/layout/large_message_card_item.xml",
+    "java/res/layout/mv_tiles_layout.xml",
     "java/res/layout/new_tab_tile_card_item.xml",
     "java/res/layout/price_card.xml",
     "java/res/layout/price_tracking_dialog_layout.xml",
@@ -97,6 +98,7 @@
   sources = [
     "java/src/org/chromium/chrome/browser/tasks/MostVisitedListCoordinator.java",
     "java/src/org/chromium/chrome/browser/tasks/MostVisitedListViewBinder.java",
+    "java/src/org/chromium/chrome/browser/tasks/MvTilesLayout.java",
     "java/src/org/chromium/chrome/browser/tasks/SingleTabSwitcherCoordinator.java",
     "java/src/org/chromium/chrome/browser/tasks/SingleTabSwitcherMediator.java",
     "java/src/org/chromium/chrome/browser/tasks/SingleTabView.java",
diff --git a/chrome/android/features/tab_ui/java/res/layout/mv_tiles_layout.xml b/chrome/android/features/tab_ui/java/res/layout/mv_tiles_layout.xml
new file mode 100644
index 0000000..2942b72
--- /dev/null
+++ b/chrome/android/features/tab_ui/java/res/layout/mv_tiles_layout.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2021 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file. -->
+
+<!-- A site suggestion tile. -->
+<org.chromium.chrome.browser.tasks.MvTilesLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/mv_tiles_layout"
+    android:layout_width="wrap_content"
+    android:layout_height="match_parent"
+    android:orientation="horizontal"
+    android:paddingBottom="@dimen/tasks_view_items_vertical_spacing">
+</org.chromium.chrome.browser.tasks.MvTilesLayout>
diff --git a/chrome/android/features/tab_ui/java/res/layout/tasks_view_layout.xml b/chrome/android/features/tab_ui/java/res/layout/tasks_view_layout.xml
index f9d2c01b..94cec15 100644
--- a/chrome/android/features/tab_ui/java/res/layout/tasks_view_layout.xml
+++ b/chrome/android/features/tab_ui/java/res/layout/tasks_view_layout.xml
@@ -42,11 +42,7 @@
             android:visibility="gone"
             android:scrollbars="none"
             app:layout_scrollFlags="scroll">
-            <LinearLayout android:id="@+id/mv_tiles_layout"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                android:orientation="horizontal"
-                android:paddingBottom="@dimen/tasks_view_items_vertical_spacing" />
+            <include layout="@layout/mv_tiles_layout" />
         </HorizontalScrollView>
         <LinearLayout
             android:id="@+id/tab_switcher_title"
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/MostVisitedListCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/MostVisitedListCoordinator.java
index 4b2ef74..775c69b 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/MostVisitedListCoordinator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/MostVisitedListCoordinator.java
@@ -31,6 +31,7 @@
 import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.chrome.features.start_surface.StartSurfaceConfiguration;
+import org.chromium.components.browser_ui.widget.tile.TileView;
 import org.chromium.components.favicon.LargeIconBridge;
 import org.chromium.content_public.browser.LoadUrlParams;
 import org.chromium.ui.base.DeviceFormFactor;
@@ -53,7 +54,7 @@
     // There's a limit of 12 in {@link MostVisitedSitesBridge#setObserver}.
     private static final int MAX_RESULTS = 12;
     private final Activity mActivity;
-    private final ViewGroup mParent;
+    private final MvTilesLayout mMvTilesLayout;
     private final PropertyModelChangeProcessor mModelChangeProcessor;
     private final Supplier<Tab> mParentTabSupplier;
     private final SnackbarManager mSnackbarManager;
@@ -62,13 +63,13 @@
     private SuggestionsUiDelegate mSuggestionsUiDelegate;
     private boolean mInitializationComplete;
 
-    public MostVisitedListCoordinator(Activity activity, ViewGroup parent,
+    public MostVisitedListCoordinator(Activity activity, MvTilesLayout mvTilesLayout,
             PropertyModel propertyModel, Supplier<Tab> parentTabSupplier,
             SnackbarManager snackbarManager) {
         mActivity = activity;
-        mParent = parent;
+        mMvTilesLayout = mvTilesLayout;
         mModelChangeProcessor = PropertyModelChangeProcessor.create(
-                propertyModel, mParent, MostVisitedListViewBinder::bind);
+                propertyModel, mMvTilesLayout, MostVisitedListViewBinder::bind);
         mParentTabSupplier = parentTabSupplier;
         mSnackbarManager = snackbarManager;
     }
@@ -86,7 +87,7 @@
                 List<Tile> tiles =
                         MostVisitedSitesMetadataUtils.restoreFileToSuggestionListsOnUiThread();
                 if (tiles != null) {
-                    mRenderer.renderTileSection(tiles, mParent, this);
+                    mRenderer.renderTileSection(tiles, mMvTilesLayout, this);
                 }
             } catch (IOException e) {
                 Log.i(TAG, "No cached MV tiles file.");
@@ -121,7 +122,10 @@
 
     private void updateTileIcon(Tile tile) {
         SuggestionsTileView tileView = findTileView(tile);
-        if (tileView != null) tileView.renderIcon(tile);
+        if (tileView != null) {
+            tileView.renderIcon(tile);
+            mMvTilesLayout.updateSingleTileViewLayout(tileView);
+        }
     }
 
     private void updateOfflineBadge(Tile tile) {
@@ -130,8 +134,8 @@
     }
 
     private SuggestionsTileView findTileView(Tile tile) {
-        for (int i = 0; i < mParent.getChildCount(); i++) {
-            View tileView = mParent.getChildAt(i);
+        for (int i = 0; i < mMvTilesLayout.getChildCount(); i++) {
+            View tileView = mMvTilesLayout.getChildAt(i);
 
             assert tileView instanceof SuggestionsTileView : "Tiles must be SuggestionsTileView";
 
@@ -149,8 +153,8 @@
     public void onTileDataChanged() {
         if (mTileGroup.getTileSections().size() < 1) return;
 
-        mRenderer.renderTileSection(
-                mTileGroup.getTileSections().get(TileSectionType.PERSONALIZED), mParent, this);
+        mRenderer.renderTileSection(mTileGroup.getTileSections().get(TileSectionType.PERSONALIZED),
+                mMvTilesLayout, this);
 
         MostVisitedSitesMetadataUtils.getInstance().saveSuggestionListsToFile(
                 mTileGroup.getTileSections().get(TileSectionType.PERSONALIZED));
@@ -194,6 +198,11 @@
         return callback;
     }
 
+    @Override
+    public void updateTileViewLayout(TileView tileView) {
+        mMvTilesLayout.updateSingleTileViewLayout(tileView);
+    }
+
     /** Handle interactions with the Most Visited tiles. */
     private static class MostVisitedTileInteractionDelegate implements TileInteractionDelegate {
         private Tile mTile;
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/MvTilesLayout.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/MvTilesLayout.java
new file mode 100644
index 0000000..5ea63e7
--- /dev/null
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/MvTilesLayout.java
@@ -0,0 +1,89 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.tasks;
+
+import android.content.Context;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.util.AttributeSet;
+import android.widget.LinearLayout;
+
+import org.chromium.components.browser_ui.widget.tile.TileView;
+
+/**
+ * The layout for the container of MV tiles on the Start surface.
+ */
+public class MvTilesLayout extends LinearLayout {
+    private final Context mContext;
+    private final int mTileViewPaddingPortrait;
+    private final int mTileViewPaddingLandscape;
+    private int mScreenOrientation;
+
+    public MvTilesLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        mContext = context;
+
+        Resources resources = mContext.getResources();
+        mTileViewPaddingPortrait = resources.getDimensionPixelSize(
+                org.chromium.chrome.R.dimen.tile_view_padding_portrait);
+        mTileViewPaddingLandscape = resources.getDimensionPixelSize(
+                org.chromium.chrome.R.dimen.tile_view_padding_landscape);
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        updateTilesViewLayout(mContext.getResources().getConfiguration().orientation);
+    }
+
+    @Override
+    protected void onConfigurationChanged(Configuration newConfig) {
+        super.onConfigurationChanged(newConfig);
+        updateTilesViewLayout(newConfig.orientation);
+    }
+
+    /**
+     * Updates the paddings of all of the MV tiles according to the current screen orientation.
+     * @param orientation The new orientation that paddings should be adjusted to.
+     */
+    private void updateTilesViewLayout(int orientation) {
+        if (mScreenOrientation == orientation) return;
+
+        mScreenOrientation = orientation;
+        int childCount = getChildCount();
+        if (childCount == 0) return;
+
+        int newMargin = mScreenOrientation == Configuration.ORIENTATION_PORTRAIT
+                ? mTileViewPaddingPortrait
+                : mTileViewPaddingLandscape;
+        for (int i = 0; i < childCount; i++) {
+            TileView tileView = (TileView) getChildAt(i);
+            updateSingleTileViewLayout(tileView, newMargin);
+        }
+    }
+
+    /**
+     * Updates the given TileView's layout according to the current screen orientation.
+     * @param tileView The TileView to update.
+     */
+    void updateSingleTileViewLayout(TileView tileView) {
+        if (tileView == null) return;
+
+        // Updates the spacing between tiles according to the screen orientation.
+        int newPadding = mScreenOrientation == Configuration.ORIENTATION_PORTRAIT
+                ? mTileViewPaddingPortrait
+                : mTileViewPaddingLandscape;
+        updateSingleTileViewLayout(tileView, newPadding);
+    }
+
+    private void updateSingleTileViewLayout(TileView tileView, int newMarginStart) {
+        MarginLayoutParams layoutParams = (MarginLayoutParams) tileView.getLayoutParams();
+
+        if (newMarginStart != layoutParams.getMarginStart()) {
+            layoutParams.setMarginStart(newMarginStart);
+            tileView.setLayoutParams(layoutParams);
+        }
+    }
+}
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceCoordinator.java
index 8d12ef9..842f46d 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceCoordinator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceCoordinator.java
@@ -8,7 +8,6 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.LinearLayout;
 
 import androidx.annotation.Nullable;
 
@@ -84,7 +83,7 @@
                 incognitoCookieControlsManager, tabSwitcherType == TabSwitcherType.CAROUSEL);
 
         if (hasMVTiles) {
-            LinearLayout mvTilesLayout = mView.findViewById(R.id.mv_tiles_layout);
+            MvTilesLayout mvTilesLayout = mView.findViewById(R.id.mv_tiles_layout);
             mMostVisitedList = new MostVisitedListCoordinator(activity, mvTilesLayout,
                     mPropertyModel, parentTabSupplier, activity.getSnackbarManager());
             mMostVisitedList.initialize();
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
index e2093d9..a9c8193 100644
--- a/chrome/android/java/AndroidManifest.xml
+++ b/chrome/android/java/AndroidManifest.xml
@@ -874,6 +874,7 @@
             android:label="@string/cablev2_activity_title"
             android:permission="com.google.android.gms.auth.cryptauth.permission.CABLEV2_SERVER_LINK"
             android:exported="true"
+            android:excludeFromRecents="true"
             android:launchMode="singleTop">
             <!-- This activity can be started by GMSCore, and is thus exported
             with a permission set, or can be started by the Android system in
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplicationImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplicationImpl.java
index 4509475..0e9a188 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplicationImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplicationImpl.java
@@ -12,7 +12,6 @@
 import androidx.annotation.Nullable;
 
 import org.chromium.base.ApplicationStatus;
-import org.chromium.base.annotations.MainDex;
 import org.chromium.base.library_loader.LibraryLoader;
 import org.chromium.chrome.browser.background_task_scheduler.ChromeBackgroundTaskFactory;
 import org.chromium.chrome.browser.base.SplitCompatApplication;
@@ -82,7 +81,6 @@
         }
     }
 
-    @MainDex
     @Override
     public void onTrimMemory(int level) {
         super.onTrimMemory(level);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java
index e52e5b8..006b419 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java
@@ -812,7 +812,7 @@
      * @param session The session with invalid callback.
      */
     public synchronized void cleanupSession(CustomTabsSessionToken session) {
-        if (session.hasId()) {
+        if (session.hasId() && mSessionParams.containsKey(session)) {
             // Leave session parameters, so client might update callback later.
             // The session will be completely removed when system runs low on memory.
             // {@see #cleanupUnusedSessions}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaUtils.java
index 2c7e4a0..4c3acf9e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaUtils.java
@@ -9,7 +9,6 @@
 
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
-import org.chromium.base.annotations.MainDex;
 import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.compat.ApiHelperForN;
 
@@ -29,7 +28,6 @@
      * Record the time in the application lifecycle at which Chrome code first runs
      * (Application.attachBaseContext()).
      */
-    @MainDex
     public static void recordMainEntryPointTime() {
         // We can't simply pass this down through a JNI call, since the JNI for chrome
         // isn't initialized until we start the native content browser component, and we
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFactory.java
index 8564165..7f807d7a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFactory.java
@@ -26,10 +26,10 @@
     // PaymentAppFactoryInterface implementation.
     @Override
     public void create(PaymentAppFactoryDelegate delegate) {
-        AndroidPaymentAppFinder finder =
-                new AndroidPaymentAppFinder(new PaymentManifestWebDataService(),
-                        new PaymentManifestDownloader(), new PaymentManifestParser(),
-                        new PackageManagerDelegate(), delegate, /*factory=*/this);
+        AndroidPaymentAppFinder finder = new AndroidPaymentAppFinder(
+                new PaymentManifestWebDataService(delegate.getParams().getWebContents()),
+                new PaymentManifestDownloader(), new PaymentManifestParser(),
+                new PackageManagerDelegate(), delegate, /*factory=*/this);
         finder.findAndroidPaymentApps();
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentManifestWebDataService.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentManifestWebDataService.java
index 35ee5ae..d872ffd8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentManifestWebDataService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentManifestWebDataService.java
@@ -8,6 +8,7 @@
 import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.annotations.NativeMethods;
 import org.chromium.components.payments.WebAppManifestSection;
+import org.chromium.content_public.browser.WebContents;
 
 /** Java wrapper of the payment manifest web data service. */
 @JNINamespace("payments")
@@ -36,15 +37,24 @@
     /** Holds the native counterpart of this class object. */
     private long mManifestWebDataServiceAndroid;
 
-    public PaymentManifestWebDataService() {
-        mManifestWebDataServiceAndroid =
-                PaymentManifestWebDataServiceJni.get().init(PaymentManifestWebDataService.this);
+    /**
+     * Creates a new PaymentManifestWebDataService.
+     *
+     * @param webContents The web contents where the payment is being requested.
+     */
+    public PaymentManifestWebDataService(WebContents webContents) {
+        if (webContents == null || webContents.isDestroyed()) return;
+
+        mManifestWebDataServiceAndroid = PaymentManifestWebDataServiceJni.get().init(
+                PaymentManifestWebDataService.this, webContents);
     }
 
     /**
      * Destroy this class object. It destroys the native counterpart.
      */
     public void destroy() {
+        if (mManifestWebDataServiceAndroid == 0) return;
+
         PaymentManifestWebDataServiceJni.get().destroy(
                 mManifestWebDataServiceAndroid, PaymentManifestWebDataService.this);
         mManifestWebDataServiceAndroid = 0;
@@ -59,6 +69,8 @@
      */
     public boolean getPaymentMethodManifest(
             String methodName, PaymentManifestWebDataServiceCallback callback) {
+        if (mManifestWebDataServiceAndroid == 0) return false;
+
         return PaymentManifestWebDataServiceJni.get().getPaymentMethodManifest(
                 mManifestWebDataServiceAndroid, PaymentManifestWebDataService.this, methodName,
                 callback);
@@ -73,6 +85,8 @@
      */
     public boolean getPaymentWebAppManifest(
             String appPackageName, PaymentManifestWebDataServiceCallback callback) {
+        if (mManifestWebDataServiceAndroid == 0) return false;
+
         return PaymentManifestWebDataServiceJni.get().getPaymentWebAppManifest(
                 mManifestWebDataServiceAndroid, PaymentManifestWebDataService.this, appPackageName,
                 callback);
@@ -86,6 +100,8 @@
      *                         applicable.
      */
     public void addPaymentMethodManifest(String methodName, String[] appIdentifiers) {
+        if (mManifestWebDataServiceAndroid == 0) return;
+
         PaymentManifestWebDataServiceJni.get().addPaymentMethodManifest(
                 mManifestWebDataServiceAndroid, PaymentManifestWebDataService.this, methodName,
                 appIdentifiers);
@@ -97,6 +113,8 @@
      * @param manifest The manifest.
      */
     public void addPaymentWebAppManifest(WebAppManifestSection[] manifest) {
+        if (mManifestWebDataServiceAndroid == 0) return;
+
         PaymentManifestWebDataServiceJni.get().addPaymentWebAppManifest(
                 mManifestWebDataServiceAndroid, PaymentManifestWebDataService.this, manifest);
     }
@@ -135,7 +153,7 @@
 
     @NativeMethods
     interface Natives {
-        long init(PaymentManifestWebDataService caller);
+        long init(PaymentManifestWebDataService caller, WebContents webContents);
         void destroy(long nativePaymentManifestWebDataServiceAndroid,
                 PaymentManifestWebDataService caller);
         boolean getPaymentMethodManifest(long nativePaymentManifestWebDataServiceAndroid,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandler.java
index 5bec93bd..ef5b10f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandler.java
@@ -103,11 +103,12 @@
      */
     private static void displayNotification(String phoneNumber) {
         Context context = ContextUtils.getApplicationContext();
+        String contentTitle = Uri.decode(phoneNumber);
         SharingNotificationUtil.showNotification(
                 NotificationUmaTracker.SystemNotificationType.CLICK_TO_CALL,
                 NotificationConstants.GROUP_CLICK_TO_CALL,
                 NotificationConstants.NOTIFICATION_ID_CLICK_TO_CALL,
-                getContentIntentProvider(phoneNumber), /*deleteIntent=*/null, phoneNumber,
+                getContentIntentProvider(phoneNumber), /*deleteIntent=*/null, contentTitle,
                 context.getResources().getString(R.string.click_to_call_notification_text),
                 R.drawable.ic_devices_16dp, R.drawable.ic_dialer_icon_blue_40dp,
                 R.color.default_icon_color_blue, /*startsActivity=*/true);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileGroup.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileGroup.java
index 4678d49..d73fa898 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileGroup.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileGroup.java
@@ -30,6 +30,7 @@
 import org.chromium.chrome.browser.suggestions.SuggestionsOfflineModelObserver;
 import org.chromium.chrome.browser.suggestions.SuggestionsUiDelegate;
 import org.chromium.chrome.browser.suggestions.mostvisited.MostVisitedSites;
+import org.chromium.components.browser_ui.widget.tile.TileView;
 import org.chromium.components.favicon.IconType;
 import org.chromium.components.favicon.LargeIconBridge;
 import org.chromium.ui.mojom.WindowOpenDisposition;
@@ -122,6 +123,12 @@
          * be responsible for updating the tile data and triggering the visual refresh.
          */
         LargeIconBridge.LargeIconCallback createIconLoadCallback(Tile tile);
+
+        /**
+         * Updates the layout of the TileView if it isn't null. This method is called when a tile is
+         * build.
+         */
+        default void updateTileViewLayout(TileView tileView) {}
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java
index 8b10c05..a7d1c86 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java
@@ -172,6 +172,7 @@
         }
 
         tileView.initialize(tile, mTitleLinesCount);
+        setupDelegate.updateTileViewLayout(tileView);
 
         if (!LibraryLoader.getInstance().isInitialized()) {
             return tileView;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoViewDarkModeTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoViewDarkModeTest.java
index 53824f2..2aabf7a3 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoViewDarkModeTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoViewDarkModeTest.java
@@ -31,10 +31,8 @@
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
-import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.components.page_info.PageInfoController;
 import org.chromium.components.page_info.PageInfoController.OpenedFromSource;
-import org.chromium.components.page_info.PageInfoFeatures;
 import org.chromium.content_public.browser.test.util.TestThreadUtils;
 import org.chromium.content_public.common.ContentSwitches;
 import org.chromium.net.test.EmbeddedTestServerRule;
@@ -69,7 +67,7 @@
 
     @Rule
     public RenderTestRule mRenderTestRule =
-            RenderTestRule.Builder.withPublicCorpus().setRevision(4).build();
+            RenderTestRule.Builder.withPublicCorpus().setRevision(5).build();
 
     private void loadUrlAndOpenPageInfo(String url) {
         mActivityTestRule.loadUrl(url);
@@ -84,12 +82,7 @@
                     activity.getModalDialogManagerSupplier(), null, OpenedFromSource.TOOLBAR)
                     .show(tab, PageInfoController.NO_HIGHLIGHTED_PERMISSION);
         });
-
-        if (PageInfoFeatures.PAGE_INFO_V2.isEnabled()) {
-            onViewWaiting(allOf(withId(R.id.page_info_url_wrapper), isDisplayed()));
-        } else {
-            onViewWaiting(allOf(withId(R.id.page_info_url), isDisplayed()));
-        }
+        onViewWaiting(allOf(withId(R.id.page_info_url_wrapper), isDisplayed()));
     }
 
     private View getPageInfoView() {
@@ -108,20 +101,19 @@
     }
 
     /**
-     * Tests the new PageInfo UI on a secure website in dark mode.
+     * Tests the PageInfo UI on a secure website in dark mode.
      */
     @Test
     @MediumTest
     @Feature({"RenderTest"})
-    @Features.EnableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
-    public void testShowOnSecureWebsiteDarkV2() throws IOException {
+    public void testShowOnSecureWebsiteDark() throws IOException {
         TestThreadUtils.runOnUiThreadBlocking(() -> {
             ChromeNightModeTestUtils.setUpNightModeForChromeActivity(/*nightModeEnabled=*/true);
         });
 
         mActivityTestRule.startMainActivityOnBlankPage();
         loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(sSimpleHtml));
-        mRenderTestRule.render(getPageInfoView(), "PageInfo_SecureWebsiteDarkV2");
+        mRenderTestRule.render(getPageInfoView(), "PageInfo_SecureWebsiteDark");
 
         TestThreadUtils.runOnUiThreadBlocking(() -> {
             ChromeNightModeTestUtils.setUpNightModeForChromeActivity(/*nightModeEnabled=*/false);
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 65573577..ac36c004 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
@@ -118,7 +118,7 @@
 
     @Rule
     public RenderTestRule mRenderTestRule =
-            RenderTestRule.Builder.withPublicCorpus().setRevision(4).build();
+            RenderTestRule.Builder.withPublicCorpus().setRevision(5).build();
 
     private boolean mIsSystemLocationSettingEnabled = true;
 
@@ -147,12 +147,7 @@
                     PageInfoController.OpenedFromSource.TOOLBAR)
                     .show(tab, highlightedPermission);
         });
-
-        if (PageInfoFeatures.PAGE_INFO_V2.isEnabled()) {
-            onViewWaiting(allOf(withId(R.id.page_info_url_wrapper), isDisplayed()));
-        } else {
-            onViewWaiting(allOf(withId(R.id.page_info_url), isDisplayed()));
-        }
+        onViewWaiting(allOf(withId(R.id.page_info_url_wrapper), isDisplayed()));
     }
 
     private View getPageInfoView() {
@@ -265,12 +260,11 @@
      */
     @Test
     @MediumTest
-    @Feature({"RenderTest"})
-    @Features.DisableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
     public void testShowOnInsecureHttpWebsite() throws IOException {
         mTestServerRule.setServerUsesHttps(false);
         loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(sSimpleHtml));
-        mRenderTestRule.render(getPageInfoView(), "PageInfo_HttpWebsite");
+        onViewWaiting(allOf(withId(R.id.page_info_connection_row), isDisplayed()));
+        onView(withText("Connection is not secure")).check(matches(isDisplayed()));
     }
 
     /**
@@ -278,11 +272,10 @@
      */
     @Test
     @MediumTest
-    @Feature({"RenderTest"})
-    @Features.DisableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
     public void testShowOnSecureWebsite() throws IOException {
         loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(sSimpleHtml));
-        mRenderTestRule.render(getPageInfoView(), "PageInfo_SecureWebsite");
+        onViewWaiting(allOf(withId(R.id.page_info_connection_row), isDisplayed()));
+        onView(withText("Connection is secure")).check(matches(isDisplayed()));
     }
 
     /**
@@ -290,12 +283,11 @@
      */
     @Test
     @MediumTest
-    @Feature({"RenderTest"})
-    @Features.DisableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
     public void testShowOnExpiredCertificateWebsite() throws IOException {
         mTestServerRule.setCertificateType(ServerCertificate.CERT_EXPIRED);
         loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(sSimpleHtml));
-        mRenderTestRule.render(getPageInfoView(), "PageInfo_ExpiredCertWebsite");
+        onViewWaiting(allOf(withId(R.id.page_info_connection_row), isDisplayed()));
+        onView(withText("Connection is not secure")).check(matches(isDisplayed()));
     }
 
     /**
@@ -304,7 +296,6 @@
     @Test
     @MediumTest
     @Feature({"RenderTest"})
-    @Features.DisableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
     public void testChromePage() throws IOException {
         loadUrlAndOpenPageInfo("chrome://version/");
         mRenderTestRule.render(getPageInfoView(), "PageInfo_InternalSite");
@@ -317,25 +308,11 @@
     @Test
     @MediumTest
     @Feature({"RenderTest"})
-    @Features.DisableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
-    public void testShowWithPermissions() throws IOException {
+    public void testShowWithPermissionsTurnedOffForDevice() throws IOException {
         mIsSystemLocationSettingEnabled = false;
         addSomePermissions(mTestServerRule.getServer().getURL("/"));
         loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(sSimpleHtml));
-        mRenderTestRule.render(getPageInfoView(), "PageInfo_Permissions");
-    }
-
-    /**
-     * Tests PageInfo on a website with cookie controls enabled.
-     */
-    @Test
-    @MediumTest
-    @Feature({"RenderTest"})
-    @Features.DisableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
-    public void testShowWithCookieBlocking() throws IOException {
-        setThirdPartyCookieBlocking(CookieControlsMode.BLOCK_THIRD_PARTY);
-        loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(sSimpleHtml));
-        mRenderTestRule.render(getPageInfoView(), "PageInfo_CookieBlocking");
+        mRenderTestRule.render(getPageInfoView(), "PageInfo_PermissionsTurnedOffForDevice");
     }
 
     /**
@@ -344,12 +321,10 @@
     @Test
     @MediumTest
     @Feature({"RenderTest"})
-    @Features.DisableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
     public void testShowWithPermissionsAndCookieBlocking() throws IOException {
         addSomePermissions(mTestServerRule.getServer().getURL("/"));
-        setThirdPartyCookieBlocking(CookieControlsMode.BLOCK_THIRD_PARTY);
         loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(sSimpleHtml));
-        mRenderTestRule.render(getPageInfoView(), "PageInfo_PermissionsAndCookieBlocking");
+        mRenderTestRule.render(getPageInfoView(), "PageInfo_Permissions");
     }
 
     /**
@@ -358,7 +333,6 @@
     @Test
     @MediumTest
     @Feature({"RenderTest"})
-    @Features.DisableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
     public void testShowWithDefaultSettingPermissions() throws IOException {
         addDefaultSettingPermissions(mTestServerRule.getServer().getURL("/"));
         loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(sSimpleHtml));
@@ -366,40 +340,57 @@
     }
 
     /**
-     * Tests the new PageInfo UI on a secure website.
+     * Tests the connection info page of the PageInfo UI - insecure website.
      */
     @Test
     @MediumTest
     @Feature({"RenderTest"})
-    @Features.EnableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
-    public void testShowOnSecureWebsiteV2() throws IOException {
+    public void testShowConnectionInfoSubpageInsecure() throws IOException {
+        mTestServerRule.setServerUsesHttps(false);
         loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(sSimpleHtml));
-        mRenderTestRule.render(getPageInfoView(), "PageInfo_SecureWebsiteV2");
+        onView(withId(R.id.page_info_connection_row)).perform(click());
+        onViewWaiting(allOf(
+                withText(containsString("The identity of this website has not been verified.")),
+                isDisplayed()));
+        mRenderTestRule.render(getPageInfoView(), "PageInfo_ConnectionInfoSubpageInsecure");
     }
 
     /**
-     * Tests the connection info page of the new PageInfo UI.
+     * Tests the connection info page of the PageInfo UI - secure website.
      */
     @Test
     @MediumTest
     @Feature({"RenderTest"})
-    @Features.EnableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
-    public void testShowConnectionInfoSubpage() throws IOException {
+    public void testShowConnectionInfoSubpageSecure() throws IOException {
         loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(sSimpleHtml));
         onView(withId(R.id.page_info_connection_row)).perform(click());
         onViewWaiting(
                 allOf(withText(containsString("Test Root CA issued this website's certificate.")),
                         isDisplayed()));
-        mRenderTestRule.render(getPageInfoView(), "PageInfo_ConnectionInfoSubpage");
+        mRenderTestRule.render(getPageInfoView(), "PageInfo_ConnectionInfoSubpageSecure");
     }
 
     /**
-     * Tests the permissions page of the new PageInfo UI with permissions.
+     * Tests the connection info page of the PageInfo UI - expired certificate.
      */
     @Test
     @MediumTest
     @Feature({"RenderTest"})
-    @Features.EnableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
+    public void testShowConnectionInfoSubpageExpiredCert() throws IOException {
+        mTestServerRule.setCertificateType(ServerCertificate.CERT_EXPIRED);
+        loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(sSimpleHtml));
+        onView(withId(R.id.page_info_connection_row)).perform(click());
+        onViewWaiting(allOf(
+                withText(containsString("Server's certificate has expired.")), isDisplayed()));
+        mRenderTestRule.render(getPageInfoView(), "PageInfo_ConnectionInfoSubpageExpiredCert");
+    }
+
+    /**
+     * Tests the permissions page of the PageInfo UI with permissions.
+     */
+    @Test
+    @MediumTest
+    @Feature({"RenderTest"})
     public void testShowPermissionsSubpage() throws IOException {
         addSomePermissions(mTestServerRule.getServer().getURL("/"));
         loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(sSimpleHtml));
@@ -409,16 +400,14 @@
     }
 
     /**
-     * Tests the permissions page of the new PageInfo UI with permissions and actionable flag
+     * Tests the permissions page of the PageInfo UI with permissions and actionable flag
      * enabled.
      */
     @Test
     @MediumTest
     @Feature({"RenderTest"})
-    @Features.EnableFeatures({PageInfoFeatures.PAGE_INFO_V2_NAME,
-            SiteSettingsFeatureList.ACTIONABLE_CONTENT_SETTINGS})
-    public void
-    testShowPermissionsActionableSubpage() throws IOException {
+    @Features.EnableFeatures(SiteSettingsFeatureList.ACTIONABLE_CONTENT_SETTINGS)
+    public void testShowPermissionsActionableSubpage() throws IOException {
         addSomePermissions(mTestServerRule.getServer().getURL("/"));
         loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(sSimpleHtml));
         onView(withId(R.id.page_info_permissions_row)).perform(click());
@@ -427,12 +416,11 @@
     }
 
     /**
-     * Tests the cookies page of the new PageInfo UI.
+     * Tests the cookies page of the PageInfo UI.
      */
     @Test
     @MediumTest
     @Feature({"RenderTest"})
-    @Features.EnableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
     public void testShowCookiesSubpage() throws IOException {
         setThirdPartyCookieBlocking(CookieControlsMode.BLOCK_THIRD_PARTY);
         loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(sSimpleHtml));
@@ -443,12 +431,11 @@
     }
 
     /**
-     * Tests that the permissions page of the new PageInfo UI is gone when there are no permissions
+     * Tests that the permissions page of the PageInfo UI is gone when there are no permissions
      * set.
      */
     @Test
     @MediumTest
-    @Features.EnableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
     public void testNoPermissionsSubpage() throws IOException {
         loadUrlAndOpenPageInfo(mTestServerRule.getServer().getURL(sSimpleHtml));
         onView(withId(R.id.page_info_permissions_row))
@@ -456,11 +443,10 @@
     }
 
     /**
-     * Tests clearing cookies on the cookies page of the new PageInfo UI.
+     * Tests clearing cookies on the cookies page of the PageInfo UI.
      */
     @Test
     @MediumTest
-    @Features.EnableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
     public void testClearCookiesOnSubpage() throws Exception {
         sActivityTestRule.loadUrl(mTestServerRule.getServer().getURL(sSiteDataHtml));
         // Create cookies.
@@ -481,11 +467,10 @@
     }
 
     /**
-     * Tests resetting permissions on the permissions page of the new PageInfo UI.
+     * Tests resetting permissions on the permissions page of the PageInfo UI.
      */
     @Test
     @MediumTest
-    @Features.EnableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
     public void testResetPermissionsOnSubpage() throws Exception {
         sActivityTestRule.loadUrl(mTestServerRule.getServer().getURL(sSiteDataHtml));
         String url = mTestServerRule.getServer().getURL("/");
@@ -512,7 +497,6 @@
      */
     @Test
     @MediumTest
-    @Features.EnableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
     public void testPaintPreview() {
         TestThreadUtils.runOnUiThreadBlocking(() -> {
             final ChromeActivity activity = sActivityTestRule.getActivity();
@@ -539,10 +523,8 @@
      */
     @Test
     @MediumTest
-    @Features.EnableFeatures(
-            {PageInfoFeatures.PAGE_INFO_V2_NAME, PageInfoFeatures.PAGE_INFO_DISCOVERABILITY_NAME})
-    public void
-    testShowWithPermissionsAndWithoutHighlight() throws IOException {
+    @Features.EnableFeatures(PageInfoFeatures.PAGE_INFO_DISCOVERABILITY_NAME)
+    public void testShowWithPermissionsAndWithoutHighlight() throws IOException {
         addSomePermissions(mTestServerRule.getServer().getURL("/"));
         loadUrlAndOpenPageInfoWithPermission(mTestServerRule.getServer().getURL(sSimpleHtml),
                 PageInfoController.NO_HIGHLIGHTED_PERMISSION);
@@ -556,10 +538,8 @@
      */
     @Test
     @MediumTest
-    @Features.EnableFeatures(
-            {PageInfoFeatures.PAGE_INFO_V2_NAME, PageInfoFeatures.PAGE_INFO_DISCOVERABILITY_NAME})
-    public void
-    testShowWithPermissionsAndHighlight() throws IOException {
+    @Features.EnableFeatures(PageInfoFeatures.PAGE_INFO_DISCOVERABILITY_NAME)
+    public void testShowWithPermissionsAndHighlight() throws IOException {
         addSomePermissions(mTestServerRule.getServer().getURL("/"));
         loadUrlAndOpenPageInfoWithPermission(
                 mTestServerRule.getServer().getURL(sSimpleHtml), ContentSettingsType.GEOLOCATION);
@@ -568,14 +548,13 @@
     }
 
     /**
-     * Tests the permissions page of the new PageInfo UI with permissions and a particular
+     * Tests the permissions page of the PageInfo UI with permissions and a particular
      * permission row highlight.
      */
     @Test
     @MediumTest
-    @Features.EnableFeatures(
-            {PageInfoFeatures.PAGE_INFO_V2_NAME, PageInfoFeatures.PAGE_INFO_DISCOVERABILITY_NAME,
-                    SiteSettingsFeatureList.ACTIONABLE_CONTENT_SETTINGS})
+    @Features.EnableFeatures({PageInfoFeatures.PAGE_INFO_DISCOVERABILITY_NAME,
+            SiteSettingsFeatureList.ACTIONABLE_CONTENT_SETTINGS})
     public void
     testShowPermissionsSubpageWithHighlight() throws IOException {
         addSomePermissions(mTestServerRule.getServer().getURL("/"));
@@ -596,7 +575,6 @@
      */
     @Test
     @MediumTest
-    @Features.EnableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
     public void testCloseButton() {
         TestThreadUtils.runOnUiThreadBlocking(
                 () -> { ChromeAccessibilityUtil.get().setAccessibilityEnabledForTesting(true); });
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java
index 19b3954..70f6bd81 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java
@@ -1552,8 +1552,8 @@
         mMethodData = buildMethodData(methodNames);
         mActivityTestRule.runOnUiThread(() -> {
             AndroidPaymentAppFinder finder =
-                    new AndroidPaymentAppFinder(new PaymentManifestWebDataService(), mDownloader,
-                            new PaymentManifestParser(), mPackageManager,
+                    new AndroidPaymentAppFinder(new PaymentManifestWebDataService(getWebContents()),
+                            mDownloader, new PaymentManifestParser(), mPackageManager,
                             /*delegate=*/AndroidPaymentAppFinderTest.this, /*factory=*/null);
             finder.bypassIsReadyToPayServiceInTest();
             if (appStorePackageName != null) {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/ExpandablePaymentHandlerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/ExpandablePaymentHandlerTest.java
index 18bfea5d..6ef75fa 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/ExpandablePaymentHandlerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/ExpandablePaymentHandlerTest.java
@@ -44,7 +44,6 @@
 import org.chromium.chrome.browser.payments.handler.PaymentHandlerCoordinator.PaymentHandlerUiObserver;
 import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetTestSupport;
-import org.chromium.components.page_info.PageInfoFeatures;
 import org.chromium.content_public.browser.LoadUrlParams;
 import org.chromium.content_public.browser.WebContents;
 import org.chromium.content_public.browser.test.util.TestTouchUtils;
@@ -353,10 +352,8 @@
         String paymentAppUrl = mServer.getURL(
                 "/components/test/data/payments/maxpay.com/payment_handler_window.html");
 
-        if (PageInfoFeatures.PAGE_INFO_V2.isEnabled()) {
-            // The new UI only shows a hostname by default. Expand to full URL.
-            onView(withId(R.id.page_info_url_wrapper)).perform(click());
-        }
+        // The UI only shows a hostname by default. Expand to full URL.
+        onView(withId(R.id.page_info_url_wrapper)).perform(click());
         onView(withId(R.id.page_info_url))
                 .check(matches(isDisplayed()))
                 .check(matches(withText(paymentAppUrl)));
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandlerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandlerTest.java
index 7753e3c7a8..2c7a059 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandlerTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandlerTest.java
@@ -5,22 +5,33 @@
 package org.chromium.chrome.browser.sharing.click_to_call;
 
 import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
 import static org.robolectric.Shadows.shadowOf;
 
+import android.app.Notification;
 import android.app.NotificationManager;
 import android.content.Context;
+import android.content.Intent;
 import android.os.Build;
 
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowNotification;
 import org.robolectric.shadows.ShadowNotificationManager;
 
+import org.chromium.base.ContextUtils;
 import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.chrome.browser.device.DeviceConditions;
 import org.chromium.chrome.browser.device.ShadowDeviceConditions;
+import org.chromium.chrome.browser.notifications.NotificationConstants;
 import org.chromium.net.ConnectionType;
 
 /**
@@ -30,6 +41,15 @@
 @RunWith(BaseRobolectricTestRunner.class)
 @Config(manifest = Config.NONE, shadows = {ShadowDeviceConditions.class})
 public class ClickToCallMessageHandlerTest {
+    @Spy
+    private Context mContext = RuntimeEnvironment.application.getApplicationContext();
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ContextUtils.initApplicationContextForTests(mContext);
+    }
+
     /**
      * Android Q+ should always display a notification to open the dialer.
      */
@@ -71,6 +91,25 @@
         ClickToCallMessageHandler.handleMessage("18004444444");
 
         assertEquals(0, getShadowNotificationManager().size());
+        verify(mContext, times(1)).startActivity(any(Intent.class));
+    }
+
+    @Test
+    @Feature({"Browser", "Sharing", "ClickToCall"})
+    @Config(sdk = Build.VERSION_CODES.Q)
+    public void testHandleMessage_decodesUrlForNotification() {
+        setIsScreenOnAndUnlocked(true);
+
+        ClickToCallMessageHandler.handleMessage("%2B44%201234");
+
+        ShadowNotificationManager manager = getShadowNotificationManager();
+        assertEquals(1, manager.size());
+
+        Notification notification =
+                manager.getNotification(NotificationConstants.GROUP_CLICK_TO_CALL,
+                        NotificationConstants.NOTIFICATION_ID_CLICK_TO_CALL);
+        ShadowNotification shadowNotification = shadowOf(notification);
+        assertEquals("+44 1234", shadowNotification.getContentTitle());
     }
 
     private void setIsScreenOnAndUnlocked(boolean isScreenOnAndUnlocked) {
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt
index a49b2d7..1ad2a24e 100644
--- a/chrome/android/profiles/newest.txt
+++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-91.0.4464.0_rc-r1-merged.afdo.bz2
+chromeos-chrome-amd64-91.0.4472.21_rc-r1-merged.afdo.bz2
diff --git a/chrome/app/resources/chromium_strings_fa.xtb b/chrome/app/resources/chromium_strings_fa.xtb
index 29d09f7..27e9f088 100644
--- a/chrome/app/resources/chromium_strings_fa.xtb
+++ b/chrome/app/resources/chromium_strings_fa.xtb
@@ -95,7 +95,7 @@
 <translation id="4050175100176540509">بهبودهای امنیتی مهم و ویژگی‌های جدید در جدیدترین نسخه در دسترس است.</translation>
 <translation id="419998258129752635">‏<ph name="PAGE_TITLE" /> - ورود به سیستم شبکه - Chromium</translation>
 <translation id="421369550622382712">‏برنامه‌ها، بازی‌ها، افزونه‌ها و طرح‌های زمینه Chromium را کشف کنید.</translation>
-<translation id="4216212958613226427">‏از این زبان برای نمایش رابط کاربری Chromium استفاده می‌شود</translation>
+<translation id="4216212958613226427">‏از این زبان برای نمایش میانای کاربر Chromium استفاده می‌شود</translation>
 <translation id="4230135487732243613">‏داده‌های Chromium به این حساب مرتبط شود؟</translation>
 <translation id="4264410486868823224">‏<ph name="MANAGER" /> لازم می‌داند که شما شرایط خدمات زیر را قبل‌از استفاده از دستگاه بخوانید و بپذیرید. این شرایط بسط داده نمی‌شوند، اصلاح نمی‌شوند، و شرایط Chromium OS را محدود نمی‌کنند.</translation>
 <translation id="4271805377592243930">‏دریافت کمک برای Chromium</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb
index 0b6a085..64de9db 100644
--- a/chrome/app/resources/generated_resources_af.xtb
+++ b/chrome/app/resources/generated_resources_af.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">Wysig die opstellinglêer</translation>
 <translation id="4394049700291259645">Deaktiveer</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{Maak almal &amp;oop}=1{Maak boekmerk &amp;oop}other{Maak almal ({COUNT}) &amp;oop}}</translation>
+<translation id="4398131717714042083">Vee geskiedenis en outovoltooi in die soekkassie uit</translation>
 <translation id="439817266247065935">Jou toestel het nie reg afgeskakel nie. Herbegin Linux om Linux-programme te gebruik.</translation>
 <translation id="4400367121200150367">Werwe wat nooit wagwoorde stoor nie, sal hier verskyn</translation>
 <translation id="4400632832271803360">Hou die Lanseerder-sleutel in om te verander wat die boonste ry sleutels doen</translation>
@@ -5063,6 +5064,7 @@
 <translation id="6651237644330755633">Vertrou hierdie sertifikaat om webwerwe te identifiseer</translation>
 <translation id="6651495917527016072">Sinkroniseer wi-fi-netwerke met jou foon. <ph name="LINK_BEGIN" />Kom meer te wete<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> se integrasie word net op x86_64-platforms gesteun. Chromebooks wat bo-op 'n ARM of x86-platform gebou is, steun nie hierdie funksionaliteit nie.</translation>
+<translation id="66537479323396140">Vee geskiedenis en outovoltooi in die soekkassie uit. Jou Google-rekening kan dalk ander vorme van blaaigeskiedenis hê by <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Verkies netwerk</translation>
 <translation id="6655190889273724601">Ontwikkelaarmodus</translation>
 <translation id="6655458902729017087">Versteek rekeninge</translation>
@@ -5929,6 +5931,7 @@
 <translation id="7636919061354591437">Installeer op hierdie toestel</translation>
 <translation id="7637593984496473097">Te min skyfspasie</translation>
 <translation id="7638605456503525968">Reekspoorte</translation>
+<translation id="7639914187072011620">Kon nie die SAML-herlei-URL by die bediener gaan haal nie</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> meld jou outomaties by geskikte werwe aan met wagwoorde wat jy gestoor het.</translation>
 <translation id="7642778300616172920">Versteek sensitiewe inhoud</translation>
 <translation id="7643842463591647490">{0,plural, =1{# oop venster}other{# oop vensters}}</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index 312a7623..410bc8cb 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -3078,6 +3078,7 @@
 <translation id="4392896746540753732">የውቅረት ፋይሉን ያርትዑ</translation>
 <translation id="4394049700291259645">አሰናክል</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;ሁሉንም ክፈት}=1{&amp;ዕልባት ክፈት}one{&amp;ሁሉንም ({COUNT}) ክፈት}other{&amp;ሁሉንም ({COUNT}) ክፈት}}</translation>
+<translation id="4398131717714042083">በፍለጋ ሳጥኑ ውስጥ ታሪክን እና ራስሰር አጠናቃቂዎችን ያጸዳል</translation>
 <translation id="439817266247065935">የእርስዎ መሣሪያ በአግባቡ አልተዘጋም። የLinux መተግበሪያዎችን ለመጠቀም Linuxን ዳግም ያስነሱት።</translation>
 <translation id="4400367121200150367">የይለፍ ቃላትን በጭራሽ የማያስቀምጡ ድር ጣቢያዎች እዚህ ይታያሉ</translation>
 <translation id="4400632832271803360">የላይኛው ረድፍ ቁልፎች ባህሪን ለመቀየር የማስጀመሪያ ቁልፉን ይያዙ</translation>
@@ -5060,6 +5061,7 @@
 <translation id="6651237644330755633">ድር ጣቢያዎችን ለመለየት ይህን የዕውቅና ማረጋገጫ ይመኑ</translation>
 <translation id="6651495917527016072">የWi-Fi አውታረ መረቦችን ከስልክዎ ጋር ያስምሩ። <ph name="LINK_BEGIN" />የበለጠ ለመረዳት<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">የChrome <ph name="MS_AD_NAME" /> ውህደት በx86_64 የመሣሪያ ስርዓቶች ላይ ብቻ ነው የሚደገፈው። በARM ወይም x86 የመሣሪያ ስርዓቶች ላይ የተገነቡ Chromebooks ይህን ትግብራ አይደግፉም።</translation>
+<translation id="66537479323396140">በፍለጋ ሳጥኑ ውስጥ ታሪክን እና ራስሰር አጠናቃቂዎችን ያጸዳል። የእርስዎ Google መለያ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> ላይ ሌሎች የአሰሳ ታሪክ ዓይነቶች ሊኖረው ይችላል።</translation>
 <translation id="6654509035557065241">ተመራጭ አውታረ መረብ</translation>
 <translation id="6655190889273724601">የገንቢ ሁነት</translation>
 <translation id="6655458902729017087">መለያዎችን ደብቅ</translation>
@@ -5926,6 +5928,7 @@
 <translation id="7636919061354591437">በዚህ መሣሪያ ላይ ጫን</translation>
 <translation id="7637593984496473097">በቂ የዲስክ ቦታ የለም</translation>
 <translation id="7638605456503525968">ተከታታይ ወደቦች</translation>
+<translation id="7639914187072011620">የSAML አዙር ዩአርኤልን ከአገልጋዩ ማምጣት አልተሳካም</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> እርስዎን ባስቀመጧቸው ይለፍ ቃላት ወደ ብቁ ጣቢያዎች ያስገባዎታል።</translation>
 <translation id="7642778300616172920">አደጋ ሊያስከትል የሚችል ይዘትን ደብቅ</translation>
 <translation id="7643842463591647490">{0,plural, =1{# ክፍት መስኮት}one{# ክፍት መስኮቶች}other{# ክፍት መስኮቶች}}</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb
index f396ddf..2226ba9 100644
--- a/chrome/app/resources/generated_resources_as.xtb
+++ b/chrome/app/resources/generated_resources_as.xtb
@@ -751,6 +751,7 @@
 <translation id="1794791083288629568">আমাক এই সমস্যা সামাধান কৰাত সহায় কৰিবলৈ মতামত পঠিয়াওক।</translation>
 <translation id="1795214765651529549">ক্লাছিক থীম ব্যৱহাৰ কৰক</translation>
 <translation id="1799071797295057738">এক্সটেনশ্বনটো "<ph name="EXTENSION_NAME" />" স্বয়ংক্ৰিয়ভাৱে অক্ষম কৰা হ’ল।</translation>
+<translation id="1800973090344019061">এক্সটেনশ্বন "<ph name="APP_NAME" />"এ আপোনাৰ স্ক্ৰীনত থকা সমল শ্বেয়াৰ কৰিব বিচাৰে।</translation>
 <translation id="1802624026913571222">ক’ভাৰটো বন্ধ কৰিলে সুপ্ত অৱস্থালৈ নিয়ক</translation>
 <translation id="1802687198411089702">এই পৃষ্ঠাটোৱে সঁহাৰি জনোৱা নাই। আপুনি পৃষ্ঠাটোৱে সঁহাৰি জনোৱালৈ অপেক্ষা কৰিব পাৰে বা বাহিৰ হ’ব পাৰে।</translation>
 <translation id="1803531841600994172">যি ভাষালৈ অনুবাদ কৰা হ'ব</translation>
@@ -1350,6 +1351,7 @@
 <translation id="2464089476039395325">HTTP প্ৰক্সি</translation>
 <translation id="2465237718053447668"><ph name="DOMAIN" />ৰ বাবে আপুনি এতিয়াই এটা ৱাই-ফাই নেটৱৰ্কৰ সৈতে সংযোগ কৰিব লাগিব আৰু এটা আপডে’ট ডাউনল’ড কৰিব লাগিব। অথবা, এটা নিৰিখ-নিৰ্দিষ্ট সংযোগৰ পৰা ডাউনল’ড কৰক (দৰ প্ৰযোজ্য হ’ব পাৰে)।</translation>
 <translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> নেটৱৰ্ক, অফ কৰা আছে</translation>
+<translation id="2467755475704469005">কোনো ডিভাইচ চিনাক্ত কৰা হোৱা নাই। <ph name="BEGIN_LINK" />অধিক জানক<ph name="END_LINK" /></translation>
 <translation id="2468178265280335214">টাচ্‌পেড স্ক্ৰ’লৰ এক্সিলাৰেশ্বন</translation>
 <translation id="2468205691404969808">আপুনি সেই পৃষ্ঠাবোৰলৈ নগ'লেও আপোনাৰ পচন্দসমূহ মনত ৰাখিবলৈ কুকি ব্যৱহাৰ কৰে</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
@@ -2377,6 +2379,7 @@
 <translation id="3608576286259426129">ব্যৱহাৰকাৰীৰ প্ৰতিচ্ছবিৰ পূৰ্বদৰ্শন</translation>
 <translation id="3610369246614755442">ড’ক ফেনখন ছাৰ্ভিছিং কৰাৰ প্ৰয়োজন হৈছে</translation>
 <translation id="361106536627977100">Flashৰ ডেটা</translation>
+<translation id="3611655097742243705">অধিক এপ্ বিচাৰিবলৈ Play Storeলৈ যাওক</translation>
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;এ ডাউনল’ড কৰিছে</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> দেখুৱাওক</translation>
 <translation id="3613422051106148727">&amp;নতুন টেবত খোলক</translation>
@@ -2710,6 +2713,7 @@
 <translation id="3942420633017001071">ডায়েগনষ্টিক্স</translation>
 <translation id="3943494825379372497">এপ্‌ আৰু পৃষ্ঠা পুনঃস্থাপন কৰিবনে?</translation>
 <translation id="3943582379552582368">&amp;উভতি যাওক</translation>
+<translation id="3945513714196326460">এটা চুটি নাম দি চাওক</translation>
 <translation id="3948116654032448504"><ph name="SEARCH_ENGINE" />ত প্ৰতিচ্ছবিৰ &amp;সন্ধান কৰক</translation>
 <translation id="3948507072814225786"><ph name="ORIGIN" />এ তলৰ ফ’ল্ডাৰসমূহত থকা ফাইলসমূহ সম্পাদনা কৰিব পাৰে</translation>
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
@@ -3094,6 +3098,7 @@
 <translation id="4415245286584082850">কোনো ডিভাইচ বিচাৰি পোৱা নগ’ল। এটা নতুন টেবত এটা সহায় কেন্দ্ৰৰ প্ৰবন্ধ খোলক।</translation>
 <translation id="4415276339145661267">আপোনাৰ Google একাউণ্ট পৰিচালনা কৰক</translation>
 <translation id="4415748029120993980">SECG উপবৃত্তাকাৰ লেখ secp384r1 (aka NIST P-384)</translation>
+<translation id="4416450511678320850">এই সমলটোৰ বাবে কোনো এপ্ উপলব্ধ নহয়</translation>
 <translation id="4416582610654027550">কোনো মান্য URL টাইপ কৰক</translation>
 <translation id="4419409365248380979">সদায় <ph name="HOST" />ক কুকিসমূহ ছেট কৰিবলৈ অনুমতি দিয়ক</translation>
 <translation id="4421932782753506458">নোমাল</translation>
@@ -3385,6 +3390,7 @@
 <translation id="473936925429402449">অতিৰিক্ত <ph name="TOTAL_ELEMENTS" /> টা সমলৰ <ph name="CURRENT_ELEMENT" /> নম্বৰটো বাছনি কৰা হৈছে</translation>
 <translation id="4739639199548674512">টিকেটবোৰ</translation>
 <translation id="4742334355511750246">প্ৰতিচ্ছবি দেখুওৱাৰ অনুমতি নাই</translation>
+<translation id="4742970037960872810">হাইলাইট আঁতৰাওক</translation>
 <translation id="4743260470722568160"><ph name="BEGIN_LINK" />এপ্লিকেশ্বনসমূহ কেনেদৰে আপডে’ট কৰে সেয়া জানক<ph name="END_LINK" /></translation>
 <translation id="4744981231093950366">{NUM_TABS,plural, =1{ছাইট আনমিউট কৰক}one{ছাইটসমূহ আনমিউট কৰক}other{ছাইটসমূহ আনমিউট কৰক}}</translation>
 <translation id="4746351372139058112">Messages</translation>
@@ -4591,6 +4597,7 @@
 <translation id="6136114942382973861">ডাউনল’ডৰ বাৰডাল বন্ধ কৰক</translation>
 <translation id="6136287496450963112">আপোনাৰ সুৰক্ষা সম্পৰ্কীয় চাবি এটা পিনৰ দ্বাৰা সুৰক্ষিত নহয়। ফিংগাৰপ্ৰিণ্ট পৰিচালনা কৰিবলৈ, প্ৰথমে এটা পিন সৃষ্টি কৰক।</translation>
 <translation id="6138680304137685902">SHA-384ৰ সৈতে X9.62 ECDSA স্বাক্ষৰ</translation>
+<translation id="6138774640412545950">এক্সটেনশ্বন "<ph name="APP_NAME" />"এ <ph name="TARGET_NAME" />ৰ সৈতে আপোনাৰ স্ক্ৰীনত থকা সমল শ্বেয়াৰ কৰিব বিচাৰে।</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, কোনো নেটৱৰ্ক নাই</translation>
 <translation id="6141988275892716286">ডাউনল’ড নিশ্চিত কৰক</translation>
 <translation id="6143186082490678276">সহায় লওক</translation>
@@ -5377,6 +5384,7 @@
 <translation id="7009709314043432820"><ph name="APP_NAME" />এ আপোনাৰ কেমেৰা ব্যৱহাৰ কৰি আছে</translation>
 <translation id="701080569351381435">উৎস চাওক</translation>
 <translation id="7014174261166285193">ইনষ্টল কৰিব পৰা নগ’ল।</translation>
+<translation id="7014480873681694324">হাইলাইট আঁতৰাওক</translation>
 <translation id="7017004637493394352">পুনৰ "Ok Google" বুলি কওক</translation>
 <translation id="7017219178341817193">কোনো নতুন পৃষ্ঠা যোগ কৰক</translation>
 <translation id="7017354871202642555">ৱিণ্ড’ ছেট কৰা হোৱাৰ পিছত ম’ড ছেট কৰিব নোৱাৰি।</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb
index 5dd2b53e..044f9c2 100644
--- a/chrome/app/resources/generated_resources_be.xtb
+++ b/chrome/app/resources/generated_resources_be.xtb
@@ -3082,6 +3082,7 @@
 <translation id="4392896746540753732">Рэдагаванне файла канфігурацыі</translation>
 <translation id="4394049700291259645">Выключыць</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Адкрыць усе}=1{&amp;Адкрыць закладку}one{&amp;Адкрыць усе ({COUNT})}few{&amp;Адкрыць усе ({COUNT})}many{&amp;Адкрыць усе ({COUNT})}other{&amp;Адкрыць усе ({COUNT})}}</translation>
+<translation id="4398131717714042083">Будуць выдалены гісторыя і падказкі аўтазапаўнення ў полі пошуку</translation>
 <translation id="439817266247065935">Работа прылады была завершана няправільна. Каб карыстацца праграмамі Linux, перазапусціце Linux.</translation>
 <translation id="4400367121200150367">Тут будуць паказвацца сайты, якія ніколі не захоўваюць паролі</translation>
 <translation id="4400632832271803360">Утрымлівайце клавішу запуску, каб змяніць значэнні клавіш верхняга рада</translation>
@@ -5064,6 +5065,7 @@
 <translation id="6651237644330755633">Давяраць гэтаму сертыфікату пры ідэнтыфікацыі вэб-сайтаў</translation>
 <translation id="6651495917527016072">Сінхранізуйце параметры сетак Wi-Fi са сваім тэлефонам. <ph name="LINK_BEGIN" />Даведацца больш<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Інтэграцыя <ph name="MS_AD_NAME" /> з Chrome падтрымліваецца толькі на платформах архітэктуры x86_64. Прылады Chromebook, пабудаваныя на платформах архітэктуры ARM або x86, не падтрымліваюць гэту функцыянальнасць.</translation>
+<translation id="66537479323396140">Будуць выдалены гісторыя і падказкі аўтазапаўнення ў полі пошуку. На сайце <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> размешчаны іншыя формы запісу гісторыі прагляду сайтаў для вашага Уліковага запісу Google.</translation>
 <translation id="6654509035557065241">Прыярытэтная сетка</translation>
 <translation id="6655190889273724601">Рэжым распрацоўшчыка</translation>
 <translation id="6655458902729017087">Схаваць уліковыя запісы</translation>
@@ -5930,6 +5932,7 @@
 <translation id="7636919061354591437">Усталяваць на гэту прыладу</translation>
 <translation id="7637593984496473097">Недастаткова месца на дыску</translation>
 <translation id="7638605456503525968">Паслядоўныя парты</translation>
+<translation id="7639914187072011620">Не ўдалося атрымаць з сервера URL-адрас перанакіравання SAML</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> аўтаматычна выконвае для вас уваход на прыдатныя сайты, выкарыстоўваючы захаваныя вамі паролі.</translation>
 <translation id="7642778300616172920">Схаваць канфідэнцыяльнае змесціва</translation>
 <translation id="7643842463591647490">{0,plural, =1{# адкрытае акно}one{# адкрытае акно}few{# адкрытыя акны}many{# адкрытых вокнаў}other{# адкрытага акна}}</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index cfe7c3a3..b0c25f73 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -3649,7 +3649,6 @@
 <translation id="5051836348807686060">Проверката на правописа не се поддържа за избраните от вас езици</translation>
 <translation id="5052499409147950210">Редактиране на сайта</translation>
 <translation id="5053962746715621840">Търсене на изображението с Google Обектив</translation>
-<translation id="5056950756634735043">Установява се връзка с контейнера</translation>
 <translation id="5057110919553308744">При кликване върху разширението</translation>
 <translation id="5057403786441168405">Управлявайте профилите, в които сте влезли. В зависимост от разрешенията уебсайтовете, приложенията и разширенията в Chrome и Google Play може да използват тези профили, за да персонализират практическата ви работа. <ph name="LINK_BEGIN" />Научете повече<ph name="LINK_END" /></translation>
 <translation id="5059241099014281248">Ограничаване на влизането в профил</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index 268f91d5..562a1035 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -754,6 +754,7 @@
 <translation id="1794791083288629568">এই সমস্যা সমাধানে আমাদের সাহায্য করতে প্রতিবার্তা পাঠান।</translation>
 <translation id="1795214765651529549">ক্লাসিক ব্যবহার করুন</translation>
 <translation id="1799071797295057738">"<ph name="EXTENSION_NAME" />" এক্সটেনশনটি অটোমেটিক বন্ধ করা হয়েছে।</translation>
+<translation id="1800973090344019061">"<ph name="APP_NAME" />" এক্সটেনশনটি আপনার স্ক্রিনের কন্টেন্ট শেয়ার করতে চায়।</translation>
 <translation id="1802624026913571222">ডিভাইসের কভার বন্ধ করলে স্লিপ মোডে চলে যাবে</translation>
 <translation id="1802687198411089702">পৃষ্ঠাটি সাড়া দিচ্ছে না। আপনি অপেক্ষা করতে পারেন অথবা পৃষ্ঠা ছেড়ে যেতে পারেন।</translation>
 <translation id="1803531841600994172">যে ভাষায় অনুবাদ করতে হবে</translation>
@@ -1352,6 +1353,7 @@
 <translation id="2464089476039395325">HTTP প্রক্সী</translation>
 <translation id="2465237718053447668"><ph name="DOMAIN" />-এর প্রয়োজন অনুযায়ী, আপনাকে এখনই ওয়াই-ফাই নেটওয়ার্কে কানেক্ট করতে হবে এবং একটি আপডেট ডাউনলোড করতে হবে। অথবা, মিটার্ড ইন্টারনেট কানেকশন ব্যবহার করে ডাউনলোড করুন (ডেটার উর্দ্ধসীমা ছাড়িয়ে গেলে, অতিরিক্ত চার্জ দিতে হতে পারে)।</translation>
 <translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> নেটওয়ার্ক, বন্ধ আছে</translation>
+<translation id="2467755475704469005">কোনও ডিভাইস শনাক্ত করা যায়নি। <ph name="BEGIN_LINK" />আরও জানুন<ph name="END_LINK" /></translation>
 <translation id="2468178265280335214">টাচপ্যাডের মাধ্যমে স্ক্রল করার অ্যাক্সিলারেশন</translation>
 <translation id="2468205691404969808">আপনার পছন্দ মনে রাখার জন্য কুকি ব্যবহার করুন, সেই সমস্ত পৃষ্ঠায় যদি না যান, তাহলেও</translation>
 <translation id="2468402215065996499">তামাগচি</translation>
@@ -2379,6 +2381,7 @@
 <translation id="3608576286259426129">ব্যবহারকারীর ছবির পূর্বদৃশ্য</translation>
 <translation id="3610369246614755442">ডকিং স্টেশনের ফ্যান সার্ভিসিং করতে হবে</translation>
 <translation id="361106536627977100">ফ্ল্যাশ ডেটা</translation>
+<translation id="3611655097742243705">অ্যাপ ডাউনলোড করতে Play Store দেখুন</translation>
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; এর দ্বারা ডাউনলোড হয়েছে</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> দেখান</translation>
 <translation id="3613422051106148727">&amp;নতুন ট্যাবে খুলুন</translation>
@@ -2713,6 +2716,7 @@
 <translation id="3943494825379372497">অ্যাপ ও পৃষ্ঠা ফিরিয়ে আনতে চান?</translation>
 <translation id="3943582379552582368">&amp;ফিরুন</translation>
 <translation id="3943857333388298514">পেস্ট করুন</translation>
+<translation id="3945513714196326460">আরও ছোট নাম লিখে দেখুন</translation>
 <translation id="3948116654032448504">&amp;ইমেজের জন্য <ph name="SEARCH_ENGINE" /> সার্চ করুন</translation>
 <translation id="3948507072814225786"><ph name="ORIGIN" /> নিচে উল্লেখ করা ফোল্ডারের ফাইলগুলি এডিট করতে পারবে</translation>
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
@@ -3098,6 +3102,7 @@
 <translation id="4415245286584082850">কোনও ডিভাইস খুঁজে পাওয়া যায় নি। একটি নতুন ট্যাবে সহায়তা কেন্দ্রের একটি নিবন্ধ খুলুন।</translation>
 <translation id="4415276339145661267">আপনার Google অ্যাকাউন্ট ম্যানেজ করুন</translation>
 <translation id="4415748029120993980">SECG এলিপ্টিক কার্ভ secp384r1 (ওরফে NIST P-384)</translation>
+<translation id="4416450511678320850">এই কন্টেন্টের জন্য কোনও অ্যাপ উপলভ্য নেই</translation>
 <translation id="4416582610654027550">একটি সঠিক URL লিখুন</translation>
 <translation id="4419409365248380979">কুকিজ সেট করতে <ph name="HOST" />-কে সব সময় অনুমতি দিন</translation>
 <translation id="4421932782753506458">ফুঁয়োফুঁয়ো</translation>
@@ -3390,6 +3395,7 @@
 <translation id="473936925429402449">বেছে নেওয়া ও অতিরিক্ত কন্টেন্ট থাকা মোট <ph name="TOTAL_ELEMENTS" />টি এলিমেন্টের মধ্যে <ph name="CURRENT_ELEMENT" /> নম্বর এলিমেন্ট</translation>
 <translation id="4739639199548674512">টিকিট</translation>
 <translation id="4742334355511750246">ছবি দেখানোর অনুমতি দেওয়া হয়নি</translation>
+<translation id="4742970037960872810">হাইলাইট সরিয়ে দিন</translation>
 <translation id="4743260470722568160"><ph name="BEGIN_LINK" />অ্যাপ্লিকেশন কীভাবে আপডেট করতে হয় তা জানুন<ph name="END_LINK" /></translation>
 <translation id="4744981231093950366">{NUM_TABS,plural, =1{সাইট আনমিউট করুন}one{সাইট আনমিউট করুন}other{সাইট আনমিউট করুন}}</translation>
 <translation id="4746351372139058112">Messages</translation>
@@ -4599,6 +4605,7 @@
 <translation id="6136114942382973861">ডাউনলোড বার বন্ধ করুন</translation>
 <translation id="6136287496450963112">আপনার নিরাপত্তা কী কোনও পিন দ্বারা সুরক্ষিত নেই। আঙ্গুলের ছাপ ম্যানেজ করতে, প্রথমে পিন তৈরি করুন।</translation>
 <translation id="6138680304137685902">SHA-384 সহ X9.62 ECDSA স্বাক্ষর</translation>
+<translation id="6138774640412545950">"<ph name="APP_NAME" />" এক্সটেনশনটি আপনার স্ক্রিনের কন্টেন্ট <ph name="TARGET_NAME" />-এর সাথে শেয়ার করতে চায়।</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, কোনও নেটওয়ার্ক নেই</translation>
 <translation id="6141988275892716286">ডাউনলোড নিশ্চিত করুন</translation>
 <translation id="6143186082490678276">সাহায্য পান</translation>
@@ -5388,6 +5395,7 @@
 <translation id="7009709314043432820"><ph name="APP_NAME" /> আপনার ক্যামেরা ব্যবহার করছে</translation>
 <translation id="701080569351381435">উৎস দেখান</translation>
 <translation id="7014174261166285193">ইনস্টলেশান ব্যর্থ হয়েছে৷</translation>
+<translation id="7014480873681694324">হাইলাইট সরিয়ে দিন</translation>
 <translation id="7017004637493394352">আবার "Ok Google" বলুন</translation>
 <translation id="7017219178341817193">একটি নতুন পৃষ্ঠা যুক্ত করুন</translation>
 <translation id="7017354871202642555">উইন্ডো সেট করার পরে মোড সেট করা যায় না৷</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb
index e44294b2..87b1ba2 100644
--- a/chrome/app/resources/generated_resources_bs.xtb
+++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -3081,6 +3081,7 @@
 <translation id="4392896746540753732">Uredite fajl za konfiguraciju</translation>
 <translation id="4394049700291259645">Onemogući</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Otvori sve}=1{&amp;Otvori oznaku}one{&amp;Otvori sve ({COUNT})}few{&amp;Otvori sve ({COUNT})}other{&amp;Otvori sve ({COUNT})}}</translation>
+<translation id="4398131717714042083">Briše historiju i automatska popunjavanja u okviru za pretraživanje</translation>
 <translation id="439817266247065935">Vaš uređaj se nije pravilno isključio. Ponovo pokrenite Linux da koristite Linux aplikacije.</translation>
 <translation id="4400367121200150367">Web lokacije koje nikada ne pohranjuju lozinke će se pojaviti ovdje.</translation>
 <translation id="4400632832271803360">Držite tipku Pokretač da promijenite ponašanje tipki u gornjem redu</translation>
@@ -5063,6 +5064,7 @@
 <translation id="6651237644330755633">Vjeruj ovoj potvrdi za identifikaciju web lokacija</translation>
 <translation id="6651495917527016072">Sinhroniziranje WiFi mreža s telefonom. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Integracija<ph name="MS_AD_NAME" /> Chromea podržana je samo na x86_64 platformama. Chromebook uređaji izrađeni na platformama ARM ili x86 ne podržavaju ovu funkcionalnost.</translation>
+<translation id="66537479323396140">Briše historiju i automatska popunjavanja u okviru za pretraživanje. Vaš Google račun može imati druge oblike historije pregledanja na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Preferirana mreža</translation>
 <translation id="6655190889273724601">Način rada za programere</translation>
 <translation id="6655458902729017087">Sakrij račune</translation>
@@ -5929,6 +5931,7 @@
 <translation id="7636919061354591437">Instaliraj na ovom uređaju</translation>
 <translation id="7637593984496473097">Nema dovoljno prostora na disku</translation>
 <translation id="7638605456503525968">Serijski priključci</translation>
+<translation id="7639914187072011620">Dohvatanje URL-a za preusmjeravanje SAML-a sa servera nije uspjelo</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> vas automatski prijavljuje na odgovarajuće web lokacije pomoću sačuvanih lozinki.</translation>
 <translation id="7642778300616172920">Sakrij osjetljivi sadržaj</translation>
 <translation id="7643842463591647490">{0,plural, =1{# otvoreni prozor}one{# otvoreni prozor}few{# otvorena prozora}other{# otvorenih prozora}}</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index d3f29a7..597f14a 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -2963,7 +2963,7 @@
 <translation id="4252899949534773101">El Bluetooth està desactivat</translation>
 <translation id="4252996741873942488"><ph name="WINDOW_TITLE" />: el contingut de les pestanyes es comparteix</translation>
 <translation id="4253183225471855471">No s'ha trobat cap xarxa. Insereix la SIM i reinicia el dispositiu abans de tornar-ho a provar.</translation>
-<translation id="4254813446494774748">Idioma de la traducció:</translation>
+<translation id="4254813446494774748">Idioma de traducció:</translation>
 <translation id="425573743389990240">Velocitat de descàrrega de la bateria en watts (un valor negatiu significa que la bateria s'està carregant)</translation>
 <translation id="4256316378292851214">De&amp;sa el vídeo com a...</translation>
 <translation id="4258348331913189841">Sistemes de fitxers</translation>
@@ -3078,6 +3078,7 @@
 <translation id="4392896746540753732">Edita el fitxer de configuració</translation>
 <translation id="4394049700291259645">Desactiva</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Obre-les totes}=1{&amp;Obre l'adreça d'interès}other{&amp;Obre-les totes ({COUNT})}}</translation>
+<translation id="4398131717714042083">Esborra l'historial i les complecions automàtiques del quadre de cerca</translation>
 <translation id="439817266247065935">El dispositiu no s'ha apagat correctament. Reinicia Linux per fer servir les aplicacions de Linux.</translation>
 <translation id="4400367121200150367">Els llocs que no desen contrasenyes mai es mostraran aquí</translation>
 <translation id="4400632832271803360">Mantén premuda la tecla del menú d'aplicacions per canviar el comportament de les tecles de la fila superior</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">Confia en aquest certificat per identificar llocs web</translation>
 <translation id="6651495917527016072">Sincronitza les xarxes Wi‑Fi amb el teu telèfon. <ph name="LINK_BEGIN" />Més informació<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">La integració de Chrome amb <ph name="MS_AD_NAME" /> només s'admet en plataformes x86_64. Els dispositius Chromebook equipats amb una plataforma ARM o x86 no admeten aquesta funció.</translation>
+<translation id="66537479323396140">Esborra l'historial i les complecions automàtiques del quadre de cerca. A <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> trobaràs altres maneres d'explorar l'historial de navegació del Compte de Google.</translation>
 <translation id="6654509035557065241">Estableix una xarxa com a preferida</translation>
 <translation id="6655190889273724601">Mode de desenvolupador </translation>
 <translation id="6655458902729017087">Amaga els comptes</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">Instal·la en aquest dispositiu</translation>
 <translation id="7637593984496473097">No hi ha prou espai de disc</translation>
 <translation id="7638605456503525968">Ports en sèrie</translation>
+<translation id="7639914187072011620">L'URL de redirecció de SAML no s'ha pogut recuperar del servidor</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> us inicia la sessió automàticament als llocs que compleixen els requisits amb les contrasenyes que heu desat.</translation>
 <translation id="7642778300616172920">Amaga el contingut sensible</translation>
 <translation id="7643842463591647490">{0,plural, =1{# finestra oberta}other{# finestres obertes}}</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index 7bb3b52..f0a20bb 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -3076,6 +3076,7 @@
 <translation id="4392896746540753732">Upravit konfigurační soubor</translation>
 <translation id="4394049700291259645">Deaktivovat</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Otevřít vše}=1{&amp;Otevřít záložku}few{&amp;Otevřít vše ({COUNT})}many{&amp;Otevřít vše ({COUNT})}other{&amp;Otevřít vše ({COUNT})}}</translation>
+<translation id="4398131717714042083">Vymaže historii a automatické doplňování ve vyhledávacím poli</translation>
 <translation id="439817266247065935">Zařízení nebylo řádně vypnuto. Pokud chcete používat aplikace pro Linux, restartujte Linux.</translation>
 <translation id="4400367121200150367">Zde se zobrazí weby, které nikdy neukládají heslo</translation>
 <translation id="4400632832271803360">Podržením tlačítka spouštěče přepnete chování tlačítek v horním řádku</translation>
@@ -5056,6 +5057,7 @@
 <translation id="6651237644330755633">Důvěřovat tomuto certifikátu k identifikaci webových stránek</translation>
 <translation id="6651495917527016072">Synchronizace sítí Wi-Fi s vaším telefonem. <ph name="LINK_BEGIN" />Další informace<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Integrace Chromu se službou <ph name="MS_AD_NAME" /> je podporována pouze na platformách x86_64. Chromebooky založené na platformě ARM nebo x86 ji nepodporují.</translation>
+<translation id="66537479323396140">Vymaže historii a automatické doplňování ve vyhledávacím poli. 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="6654509035557065241">Preferovat síť</translation>
 <translation id="6655190889273724601">Režim pro vývojáře</translation>
 <translation id="6655458902729017087">Skrýt účty</translation>
@@ -5920,6 +5922,7 @@
 <translation id="7636919061354591437">Nainstalovat na toto zařízení</translation>
 <translation id="7637593984496473097">Nedostatek místa na disku</translation>
 <translation id="7638605456503525968">Sériové porty</translation>
+<translation id="7639914187072011620">Přesměrování SAML se ze serveru nepodařilo načíst</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> vás automaticky přihlásí na vhodných webech, ke kterým máte uložená hesla.</translation>
 <translation id="7642778300616172920">Skrýt citlivý obsah</translation>
 <translation id="7643842463591647490">{0,plural, =1{# otevřené okno}few{# otevřená okna}many{# otevřeného okna}other{# otevřených oken}}</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index 881abd5..37b7ea0 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -3081,6 +3081,7 @@
 <translation id="4392896746540753732">Rediger konfigurationsfilen</translation>
 <translation id="4394049700291259645">Deaktiver</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Åbn alle}=1{&amp;Åbn bogmærke}one{&amp;Åbn ({COUNT})}other{&amp;Åbn alle ({COUNT})}}</translation>
+<translation id="4398131717714042083">Rydder historikken og autofuldførelser i søgefeltet</translation>
 <translation id="439817266247065935">Din enhed blev ikke lukket korrekt ned. Genstart Linux for at bruge Linux-apps.</translation>
 <translation id="4400367121200150367">Websites, som aldrig gemmer adgangskoder, vises her</translation>
 <translation id="4400632832271803360">Hold tasten Appliste nede for at skifte funktion for den øverste række taster</translation>
@@ -4816,7 +4817,7 @@
 <translation id="6374077068638737855">Iceweasel</translation>
 <translation id="6374469231428023295">Prøv igen</translation>
 <translation id="6377268785556383139">1 resultat for "<ph name="SEARCH_TEXT" />"</translation>
-<translation id="6380143666419481200">Godkend og fortsæt</translation>
+<translation id="6380143666419481200">Acceptér og fortsæt</translation>
 <translation id="6384275966486438344">Skifte dine søgeindstillinger til: <ph name="SEARCH_HOST" /></translation>
 <translation id="63849924261838903">{NUM_TABS,plural, =1{Unavngivet gruppe – 1 fane}one{Unavngivet gruppe – # fane}other{Unavngivet gruppe – # faner}}</translation>
 <translation id="6385149369087767061">Opret forbindelse til internettet, og prøv igen</translation>
@@ -5063,6 +5064,7 @@
 <translation id="6651237644330755633">Hav tillid til dette certifikat i forbindelse med identificering af websites</translation>
 <translation id="6651495917527016072">Synkroniser Wi-Fi-netværk med din telefon. <ph name="LINK_BEGIN" />Få flere oplysninger<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" />-integration understøttes kun på x86_64-platforme. Chromebooks, der er bygget på en ARM- eller x86-platform, understøtter ikke denne funktionalitet.</translation>
+<translation id="66537479323396140">Rydder historikken og autofuldførelser i søgefeltet. Din Google-konto kan have andre former for browserhistorik på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Foretræk netværk</translation>
 <translation id="6655190889273724601">Udviklertilstand</translation>
 <translation id="6655458902729017087">Skjul konti</translation>
@@ -5929,6 +5931,7 @@
 <translation id="7636919061354591437">Installer på denne enhed</translation>
 <translation id="7637593984496473097">Der er ikke nok diskplads</translation>
 <translation id="7638605456503525968">Serieporte</translation>
+<translation id="7639914187072011620">SAML-omdirigeringen kunne ikke hentes fra serveren</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> logger dig automatisk ind på kvalificerede websites med adgangskoder, du har gemt.</translation>
 <translation id="7642778300616172920">Skjul følsomt indhold</translation>
 <translation id="7643842463591647490">{0,plural, =1{# åbent vindue}one{# åbent vindue}other{# åbne vinduer}}</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb
index fb41693..1ea9e01 100644
--- a/chrome/app/resources/generated_resources_de.xtb
+++ b/chrome/app/resources/generated_resources_de.xtb
@@ -750,6 +750,7 @@
 <translation id="1794791083288629568">Helfen Sie uns, dieses Problem zu beheben, indem Sie uns Feedback senden.</translation>
 <translation id="1795214765651529549">Klassisches Design verwenden</translation>
 <translation id="1799071797295057738">Die Erweiterung "<ph name="EXTENSION_NAME" />" wurde automatisch deaktiviert.</translation>
+<translation id="1800973090344019061">Die Erweiterung „<ph name="APP_NAME" />“ möchte den Inhalt Ihres Bildschirms teilen.</translation>
 <translation id="1802624026913571222">Beim Zuklappen in den Ruhemodus wechseln</translation>
 <translation id="1802687198411089702">Die Seite reagiert nicht. Sie können warten, bis sie wieder reagiert, oder sie schließen.</translation>
 <translation id="1803531841600994172">Sprache, in die übersetzt wird</translation>
@@ -1348,6 +1349,7 @@
 <translation id="2464089476039395325">HTTP-Proxy</translation>
 <translation id="2465237718053447668"><ph name="DOMAIN" /> erfordert, sich jetzt mit dem WLAN zu verbinden und ein Update herunterzuladen. Das Update kann auch über eine kostenpflichtige Verbindung heruntergeladen werden (hierfür können zusätzliche Gebühren anfallen).</translation>
 <translation id="2467267713099745100">Netzwerk: <ph name="NETWORK_TYPE" />, deaktiviert</translation>
+<translation id="2467755475704469005">Kein Gerät erkannt. <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation>
 <translation id="2468178265280335214">Scroll-Beschleunigung für Touchpad</translation>
 <translation id="2468205691404969808">Zum Speichern Ihrer Einstellungen werden Cookies verwendet, auch wenn Sie diese Seiten nicht besuchen</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
@@ -2376,6 +2378,7 @@
 <translation id="3608576286259426129">Vorschau für Nutzerbild</translation>
 <translation id="3610369246614755442">Lüfter des Docks muss repariert werden</translation>
 <translation id="361106536627977100">Flash-Daten</translation>
+<translation id="3611655097742243705">Im Play Store finden Sie weitere Apps</translation>
 <translation id="3612673635130633812">Heruntergeladen von &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">"<ph name="FOLDER_NAME" />" anzeigen</translation>
 <translation id="3613422051106148727">In &amp;neuem Tab öffnen</translation>
@@ -2711,6 +2714,7 @@
 <translation id="3943494825379372497">Apps und Seiten wiederherstellen?</translation>
 <translation id="3943582379552582368">&amp;Zurück</translation>
 <translation id="3943857333388298514">Einfügen</translation>
+<translation id="3945513714196326460">Bitte kürzeren Namen verwenden</translation>
 <translation id="3948116654032448504">Mit <ph name="SEARCH_ENGINE" /> nach Bild &amp;suchen</translation>
 <translation id="3948507072814225786"><ph name="ORIGIN" /> kann Dateien in den folgenden Ordnern bearbeiten</translation>
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
@@ -3072,6 +3076,7 @@
 <translation id="4392896746540753732">Konfigurationsdatei bearbeiten</translation>
 <translation id="4394049700291259645">Deaktivieren</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{Alle &amp;öffnen}=1{Lesezeichen &amp;öffnen}other{Alle ({COUNT}) &amp;öffnen}}</translation>
+<translation id="4398131717714042083">Löscht den Verlauf und Autovervollständigungen im Suchfeld</translation>
 <translation id="439817266247065935">Ihr Gerät wurde nicht ordnungsgemäß heruntergefahren. Starten Sie Linux neu, um Linux-Apps zu verwenden.</translation>
 <translation id="4400367121200150367">Hier werden Websites angezeigt, für die keine Passwörter gespeichert werden</translation>
 <translation id="4400632832271803360">Halten Sie die Taste "Suche" gedrückt, um die Funktion der Tasten in der obersten Reihe zu ändern</translation>
@@ -3096,6 +3101,7 @@
 <translation id="4415245286584082850">Keine Geräte gefunden. Durch Klicken wird ein Hilfe-Artikel in einem neuen Tab geöffnet.</translation>
 <translation id="4415276339145661267">Google-Konto verwalten</translation>
 <translation id="4415748029120993980">Elliptische SECG-Kurve secp384r1 (NIST P-384)</translation>
+<translation id="4416450511678320850">Für diesen Inhalt sind keine Apps verfügbar</translation>
 <translation id="4416582610654027550">Geben Sie eine gültige URL ein</translation>
 <translation id="4419409365248380979"><ph name="HOST" /> darf immer Cookies setzen</translation>
 <translation id="4421932782753506458">Miez</translation>
@@ -3388,6 +3394,7 @@
 <translation id="473936925429402449">Ausgewählt, zusätzlicher Inhalt <ph name="CURRENT_ELEMENT" /> von <ph name="TOTAL_ELEMENTS" /></translation>
 <translation id="4739639199548674512">Tickets</translation>
 <translation id="4742334355511750246">Dürfen keine Bilder anzeigen</translation>
+<translation id="4742970037960872810">Markierung entfernen</translation>
 <translation id="4743260470722568160"><ph name="BEGIN_LINK" />Hier finden Sie Informationen zum Aktualisieren von Anwendungen<ph name="END_LINK" /></translation>
 <translation id="4744981231093950366">{NUM_TABS,plural, =1{Stummschaltung für Website aufheben}other{Stummschaltung für Websites aufheben}}</translation>
 <translation id="4746351372139058112">Messages</translation>
@@ -4596,6 +4603,7 @@
 <translation id="6136114942382973861">Downloadleiste schließen</translation>
 <translation id="6136287496450963112">Ihr Sicherheitsschlüssel ist nicht durch eine PIN geschützt. Erstellen Sie zuerst eine PIN, um Fingerabdrücke zu verwalten.</translation>
 <translation id="6138680304137685902">X9.62-ECDSA-Signatur mit SHA-384</translation>
+<translation id="6138774640412545950">Die Erweiterung „<ph name="APP_NAME" />“ möchte den Inhalt Ihres Bildschirms mit <ph name="TARGET_NAME" /> teilen.</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, nicht verbunden</translation>
 <translation id="6141988275892716286">Download bestätigen</translation>
 <translation id="6143186082490678276">Hilfe</translation>
@@ -5051,6 +5059,7 @@
 <translation id="6651237644330755633">Diesem Zertifikat zur Identifizierung von Websites vertrauen</translation>
 <translation id="6651495917527016072">WLAN-Netzwerke mit Smartphone synchronisieren. <ph name="LINK_BEGIN" />Weitere Informationen<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Die <ph name="MS_AD_NAME" />-Integration von Chrome wird nur auf x86_64-Plattformen unterstützt. Chromebooks, die auf einer ARM- oder x86-Plattform basieren, unterstützen diese Funktion nicht.</translation>
+<translation id="66537479323396140">Löscht den Verlauf und Autovervollständigungen im Suchfeld. Unter <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> sind möglicherweise weitere Arten von Browserverlaufsdaten für Ihr Google-Konto gespeichert.</translation>
 <translation id="6654509035557065241">Netzwerk als bevorzugt festlegen</translation>
 <translation id="6655190889273724601">Entwicklermodus</translation>
 <translation id="6655458902729017087">Konten ausblenden</translation>
@@ -5385,6 +5394,7 @@
 <translation id="7009709314043432820"><ph name="APP_NAME" /> verwendet deine Kamera</translation>
 <translation id="701080569351381435">Quelltext anzeigen</translation>
 <translation id="7014174261166285193">Installation fehlgeschlagen</translation>
+<translation id="7014480873681694324">Markierung entfernen</translation>
 <translation id="7017004637493394352">Sagen Sie noch einmal "Ok Google".</translation>
 <translation id="7017219178341817193">Neue Seite hinzufügen</translation>
 <translation id="7017354871202642555">Nach Erstellung des Fensters kann der Modus nicht mehr festgelegt werden.</translation>
@@ -5916,6 +5926,7 @@
 <translation id="7636919061354591437">Auf diesem Gerät installieren</translation>
 <translation id="7637593984496473097">Nicht genügend Festplattenspeicher</translation>
 <translation id="7638605456503525968">Serielle Schnittstellen</translation>
+<translation id="7639914187072011620">Die SAML-Weiterleitungs-URL konnte nicht vom Server abgerufen werden</translation>
 <translation id="764017888128728">Mit <ph name="PASSWORD_MANAGER_BRAND" /> werden Sie mit Ihren gespeicherten Passwörtern automatisch auf allen entsprechenden Websites angemeldet.</translation>
 <translation id="7642778300616172920">Vertrauliche Inhalte ausblenden</translation>
 <translation id="7643842463591647490">{0,plural, =1{# offenes Fenster}other{# offene Fenster}}</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index 026f68b..0d247cd 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">Επεξεργαστείτε το αρχείο διαμόρφωσης.</translation>
 <translation id="4394049700291259645">Απενεργοποίηση</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Άνοιγμα όλων}=1{&amp;Άνοιγμα σελιδοδείκτη}other{&amp;Άνοιγμα όλων ({COUNT})}}</translation>
+<translation id="4398131717714042083">Διαγράφει το ιστορικό και τα στοιχεία αυτόματης συμπλήρωσης στο πλαίσιο αναζήτησης.</translation>
 <translation id="439817266247065935">Η συσκευή σας δεν απενεργοποιήθηκε σωστά. Επανεκκινήστε το Linux για να χρησιμοποιήσετε το Linux.</translation>
 <translation id="4400367121200150367">Οι ιστότοποι που δεν αποθηκεύουν ποτέ κωδικούς πρόσβασης θα εμφανίζονται εδώ</translation>
 <translation id="4400632832271803360">Πατήστε παρατεταμένα το πλήκτρο Εφαρμογής εκκίνησης, για να αλλάξετε τη συμπεριφορά των πλήκτρων της επάνω σειράς</translation>
@@ -5063,6 +5064,7 @@
 <translation id="6651237644330755633">Να θεωρείται αξιόπιστο αυτό το πιστοποιητικό για τον προσδιορισμό ιστοτόπων</translation>
 <translation id="6651495917527016072">Συγχρονίστε τα δίκτυα Wi-Fi με το τηλέφωνό σας. <ph name="LINK_BEGIN" />Μάθετε περισσότερα<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Η ενοποίηση του Chrome <ph name="MS_AD_NAME" /> υποστηρίζεται μόνο σε πλατφόρμες x86_64. Τα Chromebook που έχουν κατασκευαστεί σε πλατφόρμα ARM ή x86 δεν υποστηρίζουν αυτήν τη λειτουργία.</translation>
+<translation id="66537479323396140">Διαγράφει το ιστορικό και τα στοιχεία αυτόματης συμπλήρωσης στο πλαίσιο αναζήτησης. Ο Λογαριασμός σας Google ενδέχεται να διαθέτει άλλες μορφές ιστορικού περιήγησης στη διεύθυνση <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Προτίμηση δικτύου</translation>
 <translation id="6655190889273724601">Λειτουργία για προγραμματιστές</translation>
 <translation id="6655458902729017087">Απόκρυψη λογαριασμών</translation>
@@ -5929,6 +5931,7 @@
 <translation id="7636919061354591437">Εγκατάσταση σε αυτήν τη συσκευή</translation>
 <translation id="7637593984496473097">Δεν υπάρχει αρκετός χώρος στον δίσκο</translation>
 <translation id="7638605456503525968">Σειριακές θύρες</translation>
+<translation id="7639914187072011620">Η λήψη του URL ανακατεύθυνσης SAML από τον διακομιστή απέτυχε.</translation>
 <translation id="764017888128728">Το <ph name="PASSWORD_MANAGER_BRAND" /> σάς συνδέει αυτόματα σε κατάλληλους ιστότοπους, χρησιμοποιώντας τους κωδικούς πρόσβασης που έχετε αποθηκεύσει.</translation>
 <translation id="7642778300616172920">Απόκρυψη ευαίσθητου περιεχομένου</translation>
 <translation id="7643842463591647490">{0,plural, =1{# ανοιχτό παράθυρο}other{# ανοιχτά παράθυρα}}</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index 4d9cf65..18b1e78e 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">Edit the configuration file</translation>
 <translation id="4394049700291259645">Disable</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Open all}=1{&amp;Open bookmark}other{&amp;Open all ({COUNT})}}</translation>
+<translation id="4398131717714042083">Clears history and auto-completions in the search box</translation>
 <translation id="439817266247065935">Your device didn't shut down properly. Restart Linux to use Linux apps.</translation>
 <translation id="4400367121200150367">Sites which never save passwords will appear here</translation>
 <translation id="4400632832271803360">Hold the Launcher key to switch the behaviour of the top-row keys</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">Trust this certificate for identifying websites</translation>
 <translation id="6651495917527016072">Sync Wi-Fi networks with your phone. <ph name="LINK_BEGIN" />Learn more<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> integration is only supported on x86_64 platforms. Chromebooks built on top of an ARM or x86 platform do not support this functionality.</translation>
+<translation id="66537479323396140">Clears history and auto-completions in the search box. Your Google Account may have other forms of browsing history at <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Prefer network</translation>
 <translation id="6655190889273724601">Developer mode</translation>
 <translation id="6655458902729017087">Hide Accounts</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">Install on this device</translation>
 <translation id="7637593984496473097">Not enough disk space</translation>
 <translation id="7638605456503525968">Serial ports</translation>
+<translation id="7639914187072011620">Failed to fetch the SAML redirect URL from the server</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> automatically signs you in to eligible sites with passwords that you saved.</translation>
 <translation id="7642778300616172920">Hide sensitive content</translation>
 <translation id="7643842463591647490">{0,plural, =1{# open window}other{# open windows}}</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index 94eeb8fb..9e03897c 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -3077,6 +3077,7 @@
 <translation id="4392896746540753732">Edita el archivo de configuración</translation>
 <translation id="4394049700291259645">Inhabilitar</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Abrir todo}=1{&amp;Abrir favorito}other{&amp;Abrir todo ({COUNT})}}</translation>
+<translation id="4398131717714042083">Borra el historial y las sugerencias de autocompletado del cuadro de búsqueda.</translation>
 <translation id="439817266247065935">El dispositivo no se apagó correctamente. Reinicia Linux para usar las apps de este sistema operativo.</translation>
 <translation id="4400367121200150367">Aquí aparecerán los sitios que nunca guardan las contraseñas</translation>
 <translation id="4400632832271803360">Mantén presionada la tecla de Launcher para cambiar el comportamiento de las teclas en la fila superior</translation>
@@ -5059,6 +5060,7 @@
 <translation id="6651237644330755633">Confía en este certificado para identificar sitios web</translation>
 <translation id="6651495917527016072">Sincroniza las redes Wi-Fi con tu teléfono. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">La integración de <ph name="MS_AD_NAME" /> en Chrome solo es compatible en plataformas x86_64. Las Chromebooks creadas a partir de una plataforma ARM o x86 no son compatibles con esta funcionalidad.</translation>
+<translation id="66537479323396140">Borra el historial y las sugerencias de autocompletado del cuadro de búsqueda. Es posible que tu Cuenta de Google tenga otros formularios del historial de navegación en <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Configurar una red preferida</translation>
 <translation id="6655190889273724601">Modo de desarrollador</translation>
 <translation id="6655458902729017087">Ocultar cuentas</translation>
@@ -5925,6 +5927,7 @@
 <translation id="7636919061354591437">Instalar en este dispositivo</translation>
 <translation id="7637593984496473097">No hay espacio suficiente en el disco</translation>
 <translation id="7638605456503525968">Puertos en serie</translation>
+<translation id="7639914187072011620">No se pudo obtener la URL de redireccionamiento para SAML del servidor.</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> te permite acceder automáticamente a los sitios aptos con las contraseñas que guardaste.</translation>
 <translation id="7642778300616172920">Ocultar contenido confidencial</translation>
 <translation id="7643842463591647490">{0,plural, =1{# ventana abierta}other{# ventanas abiertas}}</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index c2a1811..f23bb84a 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -3078,6 +3078,7 @@
 <translation id="4392896746540753732">Edita el archivo de configuración.</translation>
 <translation id="4394049700291259645">Inhabilitar</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Abrir todas}=1{&amp;Abrir marcador}other{&amp;Abrir todas ({COUNT})}}</translation>
+<translation id="4398131717714042083">Borra el historial y los autocompletados del cuadro de búsqueda.</translation>
 <translation id="439817266247065935">Tu dispositivo no se apagó correctamente. Reinicia Linux para usar sus aplicaciones.</translation>
 <translation id="4400367121200150367">Los sitios de los que nunca se guarda la contraseña aparecerán aquí</translation>
 <translation id="4400632832271803360">Mantén pulsado el menú de aplicaciones para cambiar el comportamiento de las teclas de la fila superior</translation>
@@ -5060,6 +5061,7 @@
 <translation id="6651237644330755633">Confiar en este certificado para identificar sitios web</translation>
 <translation id="6651495917527016072">Sincroniza redes Wi‑Fi con tu teléfono. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">La integración de <ph name="MS_AD_NAME" /> con Chrome solo se admite en plataformas x86_64. Los Chromebooks basados en una plataforma ARM o x86 no admiten esta función.</translation>
+<translation id="66537479323396140">Borra el historial y los autocompletados del cuadro de búsqueda. Es posible que tu cuenta de Google tenga otro tipo de historial de navegación en <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Establecer como red preferida</translation>
 <translation id="6655190889273724601">Modo de desarrollador</translation>
 <translation id="6655458902729017087">Ocultar cuentas</translation>
@@ -5926,6 +5928,7 @@
 <translation id="7636919061354591437">Instalar en este dispositivo</translation>
 <translation id="7637593984496473097">No hay suficiente espacio en disco</translation>
 <translation id="7638605456503525968">Puertos serie</translation>
+<translation id="7639914187072011620">No se ha podido obtener del servidor la URL de redirección basada en SAML</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> inicia sesión automáticamente en los sitios en los que se pueda iniciar sesión con las contraseñas que hayas guardado.</translation>
 <translation id="7642778300616172920">Ocultar contenido sensible</translation>
 <translation id="7643842463591647490">{0,plural, =1{# ventana abierta}other{# ventanas abiertas}}</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index a4eac87d..8b47319 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">Konfiguratsioonifaili muutmine</translation>
 <translation id="4394049700291259645">Keela</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Ava kõik}=1{&amp;Ava järjehoidja}other{&amp;Ava kõik ({COUNT})}}</translation>
+<translation id="4398131717714042083">Kustutab otsingukasti ajaloo ja automaatse täitmise teabe</translation>
 <translation id="439817266247065935">Seade ei lülitunud õigesti välja. Taaskäivitage Linux, et Linuxi rakendusi kasutada.</translation>
 <translation id="4400367121200150367">Siin kuvatakse saidid, millel paroole kunagi ei salvestata</translation>
 <translation id="4400632832271803360">Ülemise rea klahvide toimingu vahetamiseks hoidke all käivitajaklahvi</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">Usaldatakse seda sertifikaati veebisaitide tuvastamiseks</translation>
 <translation id="6651495917527016072">Sünkroonige WiFi-võrke oma telefoniga. <ph name="LINK_BEGIN" />Lisateave<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome'i teenuse <ph name="MS_AD_NAME" /> integreerimist toetatakse ainult x86_64-põhistel platvormidel. ARM-ile või x86-põhisele platvormile ehitatud Chromebookid seda funktsiooni ei toeta.</translation>
+<translation id="66537479323396140">Kustutab otsingukasti ajaloo ja automaatse täitmise teabe. Aadressil <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> võib teie Google'i kontol olla muus vormis sirvimisajalugu.</translation>
 <translation id="6654509035557065241">Eelista võrku</translation>
 <translation id="6655190889273724601">Arendaja režiim</translation>
 <translation id="6655458902729017087">Peida kontod</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">Installi sellesse seadmesse</translation>
 <translation id="7637593984496473097">Pole piisavalt kettaruumi</translation>
 <translation id="7638605456503525968">Jadapordid</translation>
+<translation id="7639914187072011620">Serverist ei õnnestunud SAML-i ümbersuunamise URL-i tuua</translation>
 <translation id="764017888128728">Teenus <ph name="PASSWORD_MANAGER_BRAND" /> logib teid salvestatud paroolidega automaatselt sisse sobilikele saitidele.</translation>
 <translation id="7642778300616172920">Peida tundlik sisu</translation>
 <translation id="7643842463591647490">{0,plural, =1{# avatud aken}other{# avatud akent}}</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb
index b1edc5ad8..00b08ac 100644
--- a/chrome/app/resources/generated_resources_eu.xtb
+++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -3079,6 +3079,7 @@
 <translation id="4392896746540753732">Editatu konfigurazio-fitxategia</translation>
 <translation id="4394049700291259645">Desgaitu</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Ireki guztiak}=1{&amp;Ireki laster-marka}other{&amp;Ireki guztiak ({COUNT})}}</translation>
+<translation id="4398131717714042083">Bilaketa-koadroko historia eta osatze automatikoak garbitzen ditu</translation>
 <translation id="439817266247065935">Gailua ez da behar bezala itzali. Linux-erako aplikazioak erabiltzeko, berrabiarazi Linux.</translation>
 <translation id="4400367121200150367">Hemen agertuko dira pasahitzak inoiz gordetzen ez dituzten webguneak</translation>
 <translation id="4400632832271803360">Goiko errenkadako teklen portaera aldatzeko, eduki sakatuta Abiarazlea tekla</translation>
@@ -5061,6 +5062,7 @@
 <translation id="6651237644330755633">Jo fidagarritzat webguneak identifikatzeko ziurtagiri hau</translation>
 <translation id="6651495917527016072">Sinkronizatu wifi-sareak telefonoarekin. <ph name="LINK_BEGIN" />Lortu informazio gehiago<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">x86_64 plataformetan soilik onartzen da Chrome <ph name="MS_AD_NAME" /> integrazioa. ARM eta x86 plataformak erabiltzen dituzten Chromebook gailuek ez dute onartzen funtzio hori.</translation>
+<translation id="66537479323396140">Bilaketa-koadroko historia eta osatze automatikoak garbitzen ditu. Google-ko kontuko historia arakatzeko beste modu batzuk aurki zenitzake <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> webgunean.</translation>
 <translation id="6654509035557065241">Sare hobetsia</translation>
 <translation id="6655190889273724601">Garatzaile modua</translation>
 <translation id="6655458902729017087">Ezkutatu kontuak</translation>
@@ -5927,6 +5929,7 @@
 <translation id="7636919061354591437">Instalatu gailu honetan</translation>
 <translation id="7637593984496473097">Ez dago nahikoa tokirik memorian</translation>
 <translation id="7638605456503525968">Serieko atakak</translation>
+<translation id="7639914187072011620">Ezin izan da eskuratu SAMLko birbideratze URLa zerbitzaritik</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> arakatzaileak automatikoki hasten du saioa webguneetan, gorde dituzun pasahitzak erabilita.</translation>
 <translation id="7642778300616172920">Ezkutatu kontuzko edukia</translation>
 <translation id="7643842463591647490">{0,plural, =1{# leiho dago irekita}other{# leiho daude irekita}}</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index 8b7e1bab3..b6664fb 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -248,7 +248,7 @@
 <translation id="1263490604593716556">حساب را <ph name="FIRST_PARENT_EMAIL" /> و <ph name="SECOND_PARENT_EMAIL" /> مدیریت می‌کنند. برای خروج از حساب اصلی در این دستگاه، روی زمان صفحه‌نمایش کلیک کنید. در منویی که نمایش داده می‌شود، روی «خروج از سیستم» کلیک کنید.</translation>
 <translation id="1263733306853729545">استفاده از کلیدهای <ph name="MINUS" /> و <ph name="EQUAL" /> برای پی‌جویی فهرست کاندیداها</translation>
 <translation id="126387934568812801">این نماگرفت و عنوان برگه‌های باز اضافه شوند</translation>
-<translation id="1264337193001759725">برای مشاهده گزارش‌های رابط کاربری شبکه، <ph name="DEVICE_LOG_LINK" /> را ببینید</translation>
+<translation id="1264337193001759725">برای مشاهده گزارش‌های میانای کاربر شبکه، <ph name="DEVICE_LOG_LINK" /> را ببینید</translation>
 <translation id="126710816202626562">زبان ترجمه:</translation>
 <translation id="126768002343224824">۱۶ برابر</translation>
 <translation id="1272079795634619415">توقف</translation>
@@ -1613,7 +1613,7 @@
 <translation id="274029851662193272">فرورفته</translation>
 <translation id="2740531572673183784">تأیید</translation>
 <translation id="2741713322780029189">باز کردن پایانه بازیابی</translation>
-<translation id="2741912629735277980">نمایش رابط کاربری در صفحه ورود به سیستم</translation>
+<translation id="2741912629735277980">نمایش میانای کاربر در صفحه ورود به سیستم</translation>
 <translation id="274290345632688601">‏بازیابی برنامه‌ها و فایل‌های Linux</translation>
 <translation id="274318651891194348">درحال جستجوی صفحه‌کلید</translation>
 <translation id="2743387203779672305">کپی در بریده‌دان</translation>
@@ -2849,7 +2849,7 @@
 <translation id="4093865285251893588">تصویر نمایه</translation>
 <translation id="4093955363990068916">فایل محلی:</translation>
 <translation id="4094647278880271855">از متغیر محیطی پشتیبانی‌نشده‌ای استفاده می‌کنید: <ph name="BAD_VAR" />. ثبات و امنیت دچار مشکل می‌شود.</translation>
-<translation id="4095264805865317199">باز کردن رابط کاربری فعال‌سازی شبکه داده تلفن همراه</translation>
+<translation id="4095264805865317199">باز کردن میانای کاربر فعال‌سازی شبکه داده تلفن همراه</translation>
 <translation id="4095507791297118304">نمایشگر اصلی</translation>
 <translation id="409579654357498729">‏افزودن به Cloud Print</translation>
 <translation id="4096508467498758490">غیرفعال کردن افزونه‌های حالت برنامه‌نویس</translation>
@@ -3078,6 +3078,7 @@
 <translation id="4392896746540753732">ویرایش فایل پیکربندی</translation>
 <translation id="4394049700291259645">غیر فعال کردن</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{باز کردن همه}=1{باز کردن نشانک}one{باز کردن همه ({COUNT})}other{باز کردن همه ({COUNT})}}</translation>
+<translation id="4398131717714042083">سابقه و تکمیل خودکار در چارگوش جستجو را پاک می‌کند</translation>
 <translation id="439817266247065935">‏دستگاه‌تان درست خاموش نشد. برای استفاده از برنامه‌های Linux، آن را بازراه‌اندازی کنید.</translation>
 <translation id="4400367121200150367">سایت‌هایی که هرگز گذرواژه را ذخیره نمی‌کنند در اینجا نشان داده نخواهند شد</translation>
 <translation id="4400632832271803360">برای تغییر عملکرد کلیدهای ردیف بالا، کلید «راه‌انداز» را نگه‌دارید</translation>
@@ -3788,7 +3789,7 @@
 <translation id="520621735928254154">خطا در وارد کردن گواهی</translation>
 <translation id="5206787458656075734">{COUNT,plural, =1{‏گذرواژه لورفته باموفقیت تغییر کرد. # گذرواژه لورفته دیگر دارید. Chrome توصیه می‌کند این گذرواژه را اکنون بررسی کنید.}one{‏گذرواژه لورفته باموفقیت تغییر کرد. # گذرواژه لورفته دیگر دارید. Chrome توصیه می‌کند این گذرواژه را اکنون بررسی کنید.}other{‏گذرواژه لورفته باموفقیت تغییر کرد. # گذرواژه لورفته دیگر دارید. Chrome توصیه می‌کند این گذرواژه‌ها را اکنون بررسی کنید.}}</translation>
 <translation id="5207949376430453814">برجسته کردن هشتک نوشتار</translation>
-<translation id="520902706163766447">‏حبابک بالاپری در رابط کاربری بالای Chrome فعال می‌شود تا بتوانید در برگه‌هایی که اکنون باز هستند جستجو کنید.</translation>
+<translation id="520902706163766447">‏حبابک بالاپری در میانای کاربر بالای Chrome فعال می‌شود تا بتوانید در برگه‌هایی که اکنون باز هستند جستجو کنید.</translation>
 <translation id="5209320130288484488">دستگاهی یافت نشد</translation>
 <translation id="5210365745912300556">بستن برگه</translation>
 <translation id="5213114823401215820">باز کردن مجدد گروه بسته‌شده</translation>
@@ -5060,6 +5061,7 @@
 <translation id="6651237644330755633">برای شناسایی وب‌سایت‌ها به این گواهی اطمینان شود</translation>
 <translation id="6651495917527016072">‏همگام‌سازی شبکه‌های Wi-Fi با تلفن. <ph name="LINK_BEGIN" />بیشتر بدانید<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">‏یکپارچه‌سازی <ph name="MS_AD_NAME" /> Chrome فقط در پلتفورم‌های x86_64 پشتیبانی می‌شود. دستگاه‌های Chromebook ساخته‌شده در بالای پلتفورم ARM یا x86 این عملکرد را پشتیبانی نمی‌کنند.</translation>
+<translation id="66537479323396140">‏سابقه و تکمیل خودکار در چارگوش جستجو را پاک می‌کند. ممکن است «حساب Google» شما شکل دیگری از سابقه مرور در <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> داشته باشد.</translation>
 <translation id="6654509035557065241">شبکه انتخابی</translation>
 <translation id="6655190889273724601">حالت برنامه‌نویس</translation>
 <translation id="6655458902729017087">پنهان‌سازی حساب‌ها</translation>
@@ -5118,7 +5120,7 @@
 <translation id="672208878794563299">دفعه بعدی، این سایت دوباره سؤال می‌پرسد.</translation>
 <translation id="6723661294526996303">وارد کردن نشانک‌ها و تنظیمات...</translation>
 <translation id="6723839937902243910">نیرو</translation>
-<translation id="6725073593266469338">سرویس رابط کاربری</translation>
+<translation id="6725073593266469338">سرویس میانای کاربر</translation>
 <translation id="6725206449694821596">‏پروتکل چاپ اینترنتی (IPP)</translation>
 <translation id="672609503628871915">مشاهده تازه‌ها</translation>
 <translation id="67269783048918309">‏داده‌های استفاده و عیب‌یابی را ارسال کنید. این دستگاه درحال‌حاضر به‌صورت‌ خودکار داده‌های عیب‌یابی و داده‌های استفاده از دستگاه و برنامه را برای Google ارسال می‌کند. این داده‌ها برای شناسایی فرزندتان استفاده نخواهند شد و به بهبود پایداری سیستم و برنامه و موارد دیگر کمک خواهد کرد. بعضی داده‌های انبوهشی نیز به برنامه‌ها و شرکای Google (مانند برنامه‌نویس‌های Android) کمک می‌کند. این <ph name="BEGIN_LINK1" />تنظیم<ph name="END_LINK1" /> توسط مالک اعمال می‌شود. اگر تنظیم «فعالیت وب و برنامه» تکمیلی برای فرزندتان روشن باشد، ممکن است این داده‌ها در حساب Google او ذخیره شود. <ph name="BEGIN_LINK2" />بیشتر بدانید<ph name="END_LINK2" /></translation>
@@ -5926,6 +5928,7 @@
 <translation id="7636919061354591437">نصب در این دستگاه</translation>
 <translation id="7637593984496473097">فضای دیسک کافی نیست</translation>
 <translation id="7638605456503525968">درگاه‌های سریال</translation>
+<translation id="7639914187072011620">‏نشانی وب هدایت SAML از سرور واکشی نشد</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> شما را به‌صورت خودکار در سایت‌های واجد شرایط با گذرواژه‌هایی که ذخیره کرده‌اید ثبت ورود می‌کند.</translation>
 <translation id="7642778300616172920">پنهان کردن محتوای حساس</translation>
 <translation id="7643842463591647490">{0,plural, =1{# پنجره باز}one{# پنجره باز}other{# پنجره باز}}</translation>
@@ -6673,7 +6676,7 @@
 <translation id="845702320058262034">اتصال برقرار نشد. مطمئن شوید که بلوتوث تلفن روشن است.</translation>
 <translation id="8457451314607652708">وارد کردن نشانک‌ها</translation>
 <translation id="8458627787104127436">باز کردن همه (<ph name="URL_COUNT" /> مورد) در پنجره جدید</translation>
-<translation id="84613761564611563">رابط کاربری پیکربندی شبکه درخواست شد، لطفاً صبر کنید…</translation>
+<translation id="84613761564611563">میانای کاربر پیکربندی شبکه درخواست شد، لطفاً صبر کنید…</translation>
 <translation id="8461914792118322307">پراکسی</translation>
 <translation id="8463215747450521436">این کاربر نظارت شده ممکن است حذف یا توسط مدیر غیرفعال شده باشد. اگر می‌خواهید با نام این کاربر به ورود به سیستم ادامه دهید، لطفاً با مدیر تماس بگیرید.</translation>
 <translation id="846374874681391779">نوار بارگیری‌ها</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index 4c914c3c..f8e395a 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -3077,6 +3077,7 @@
 <translation id="4392896746540753732">Muokkaa määritystiedostoa</translation>
 <translation id="4394049700291259645">Poista käytöstä</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{Avaa (&amp;O) kaikki}=1{Avaa (&amp;O) kirjanmerkki}other{Avaa (&amp;O) kaikki ({COUNT})}}</translation>
+<translation id="4398131717714042083">Tyhjentää historian ja automaattiset täydennykset hakukentästä</translation>
 <translation id="439817266247065935">Laitetta ei suljettu oikein. Käynnistä Linux uudelleen käyttääksesi Linux-sovelluksia.</translation>
 <translation id="4400367121200150367">Tässä näytetään sivustot, jotka eivät koskaan tallenna salasanoja.</translation>
 <translation id="4400632832271803360">Pidä Käynnistysohjelma-näppäintä pohjassa, niin voit vaihtaa ylärivin näppäinten toimintaa.</translation>
@@ -5059,6 +5060,7 @@
 <translation id="6651237644330755633">Luota tähän varmenteeseen tunnistettaessa verkkosivustoja.</translation>
 <translation id="6651495917527016072">Synkronoi Wi-Fi-verkot puhelimesi kanssa. <ph name="LINK_BEGIN" />Lue lisää<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> ‑integraatiota tuetaan vain x86_64-alustoilla. ARM- tai x86-alustoille rakennetut Chromebookit eivät tue tätä toimintoa.</translation>
+<translation id="66537479323396140">Tyhjentää historian ja automaattiset täydennykset hakukentästä. Google-tililläsi voi olla muita selaushistoriatietoja osoitteessa <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Valitse ensisijainen verkko</translation>
 <translation id="6655190889273724601">Kehittäjätila</translation>
 <translation id="6655458902729017087">Piilota tilit</translation>
@@ -5925,6 +5927,7 @@
 <translation id="7636919061354591437">Asenna tälle laitteelle</translation>
 <translation id="7637593984496473097">Levytila ei riitä</translation>
 <translation id="7638605456503525968">Sarjaportit</translation>
+<translation id="7639914187072011620">SAML-uudelleenohjauksen URL-osoitetta ei voitu noutaa palvelimelta</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> kirjaa sinut automaattisesti kelvollisille sivustoille, joiden salasanat olet tallentanut.</translation>
 <translation id="7642778300616172920">Piilota arkaluontoinen sisältö</translation>
 <translation id="7643842463591647490">{0,plural, =1{# avoin ikkuna}other{# avointa ikkunaa}}</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index 2a5587b..c13d9b1f 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -3081,6 +3081,7 @@
 <translation id="4392896746540753732">I-edit ang file ng configuration</translation>
 <translation id="4394049700291259645">Huwag paganahin</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Buksan lahat}=1{&amp;Buksan ang bookmark}one{&amp;Buksan lahat ({COUNT})}other{&amp;Buksan lahat ({COUNT})}}</translation>
+<translation id="4398131717714042083">Kini-clear ang history at mga awtomatikong pagkumpleto sa box para sa paghahanap</translation>
 <translation id="439817266247065935">Hindi na-shut down nang tama ang iyong device. I-restart ang Linux para magamit ang mga Linux app.</translation>
 <translation id="4400367121200150367">Lalabas dito ang mga site na hindi kailanman nagse-save ng mga password</translation>
 <translation id="4400632832271803360">Pindutin nang matagal ang key ng Launcher upang mapalitan ang gawi ng mga key sa itaas na row</translation>
@@ -5063,6 +5064,7 @@
 <translation id="6651237644330755633">Pagkatiwalaan ang certificate na ito para sa pagtukoy ng mga website</translation>
 <translation id="6651495917527016072">Mag-sync ng mga Wi-Fi network sa iyong telepono. <ph name="LINK_BEGIN" />Matuto pa<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Ang pagsasama ng <ph name="MS_AD_NAME" /> ng Chrome ay sinusuportahan lang sa mga platform na x86_64. Ang functionality na ito ay hindi sinusuportahan ng mga Chromebook na ginawa batay sa platform na ARM o x86.</translation>
+<translation id="66537479323396140">Kini-clear ang history at mga awtomatikong pagkumpleto sa box para sa paghahanap. Posibleng may iba pang anyo ng history ng pag-browse ang iyong Google Account sa <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Magtakda ng gustong network</translation>
 <translation id="6655190889273724601">Developer mode</translation>
 <translation id="6655458902729017087">Itago ang Mga Account</translation>
@@ -5929,6 +5931,7 @@
 <translation id="7636919061354591437">I-install sa Device na ito</translation>
 <translation id="7637593984496473097">Hindi sapat ang espasyo sa disk</translation>
 <translation id="7638605456503525968">Mga serial port</translation>
+<translation id="7639914187072011620">Hindi na-fetch ang URL sa pag-redirect ng SAML mula sa server</translation>
 <translation id="764017888128728">Awtomatiko kang sina-sign in ng <ph name="PASSWORD_MANAGER_BRAND" /> sa mga kwalipikadong site gamit ang mga password na na-save mo.</translation>
 <translation id="7642778300616172920">Itago ang sensitibong content</translation>
 <translation id="7643842463591647490">{0,plural, =1{# bukas na window}one{# bukas na window}other{# na bukas na window}}</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb
index 861ef6f4..fc09e564 100644
--- a/chrome/app/resources/generated_resources_fr-CA.xtb
+++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -3081,6 +3081,7 @@
 <translation id="4392896746540753732">Modifier le fichier de configuration</translation>
 <translation id="4394049700291259645">Désactiver</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Tout ouvrir}=1{&amp;Ouvrir le favori}one{&amp;Tout ouvrir ({COUNT})}other{&amp;Tout ouvrir ({COUNT})}}</translation>
+<translation id="4398131717714042083">Efface l'historique et les éléments de saisie semi-automatique du champ de recherche</translation>
 <translation id="439817266247065935">Votre appareil ne s'est pas éteint correctement. Redémarrez Linux pour utiliser les applications Linux.</translation>
 <translation id="4400367121200150367">Les sites pour lesquels vos mots de passe ne seront jamais enregistrés s'afficheront ici</translation>
 <translation id="4400632832271803360">Maintenez la touche Lanceur d'applications enfoncée pour modifier la fonction des touches de la rangée supérieure</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">Considérer ce certificat comme fiable pour identifier les sites Web</translation>
 <translation id="6651495917527016072">Synchronisez les réseaux Wi-Fi avec votre téléphone. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">L'intégration <ph name="MS_AD_NAME" /> Chrome est prise en charge par les plateformes x86_64 uniquement. Les Chromebook basés sur les plateformes ARM ou x86 ne prennent pas en charge cette fonctionnalité.</translation>
+<translation id="66537479323396140">Efface l'historique et les saisies semi-automatiques dans le champ de recherche. D'autres formes d'historique de navigation peuvent exister dans votre compte Google, à l'adresse <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Choisir ce réseau par défaut</translation>
 <translation id="6655190889273724601">Mode développeur</translation>
 <translation id="6655458902729017087">Masquer les comptes</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">Installer sur cet appareil</translation>
 <translation id="7637593984496473097">Pas assez d'espace disque</translation>
 <translation id="7638605456503525968">Ports série</translation>
+<translation id="7639914187072011620">Échec de la récupération de l'URL de redirection SAML auprès du serveur</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> vous connecte automatiquement à des sites admissibles avec les mots de passe que vous avez enregistrés.</translation>
 <translation id="7642778300616172920">Masquer le contenu sensible</translation>
 <translation id="7643842463591647490">{0,plural, =1{# fenêtre ouverte}one{# fenêtre ouverte}other{# fenêtres ouvertes}}</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index 28dbbd0..a4d3c64 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -754,6 +754,7 @@
 <translation id="1794791083288629568">Envoyer des commentaires pour nous aider à résoudre ce problème.</translation>
 <translation id="1795214765651529549">Utiliser le thème classique</translation>
 <translation id="1799071797295057738">L'extension "<ph name="EXTENSION_NAME" />" a été désactivée automatiquement.</translation>
+<translation id="1800973090344019061">L'extension "<ph name="APP_NAME" />" souhaite partager le contenu de votre écran.</translation>
 <translation id="1802624026913571222">Mettre en veille lorsque l'appareil est refermé</translation>
 <translation id="1802687198411089702">La page ne répond plus. Vous pouvez attendre qu'elle soit de nouveau accessible ou la fermer.</translation>
 <translation id="1803531841600994172">Langue cible</translation>
@@ -1353,6 +1354,7 @@
 <translation id="2464089476039395325">Proxy HTTP</translation>
 <translation id="2465237718053447668"><ph name="DOMAIN" /> vous demande de vous connecter au Wi-Fi et de télécharger une mise à jour. Vous pouvez aussi la télécharger sur une connexion facturée à l'usage (susceptible d'entraîner des frais).</translation>
 <translation id="2467267713099745100">Réseau <ph name="NETWORK_TYPE" />, désactivé</translation>
+<translation id="2467755475704469005">Aucun appareil détecté. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation>
 <translation id="2468178265280335214">Accélération du défilement avec le pavé tactile</translation>
 <translation id="2468205691404969808">Utiliser des cookies pour mémoriser vos préférences, même si vous n'accédez pas à ces pages</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
@@ -2381,6 +2383,7 @@
 <translation id="3608576286259426129">Aperçu de l'image de l'utilisateur</translation>
 <translation id="3610369246614755442">Le ventilateur de la station doit être réparé</translation>
 <translation id="361106536627977100">Données Flash</translation>
+<translation id="3611655097742243705">Accédez au Play Store pour trouver des applis</translation>
 <translation id="3612673635130633812">Téléchargé par &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Afficher "<ph name="FOLDER_NAME" />"</translation>
 <translation id="3613422051106148727">&amp;Ouvrir dans un nouvel onglet</translation>
@@ -2716,6 +2719,7 @@
 <translation id="3943494825379372497">Restaurer les applis et les pages ?</translation>
 <translation id="3943582379552582368">R&amp;etour</translation>
 <translation id="3943857333388298514">Coller</translation>
+<translation id="3945513714196326460">Saisissez un nom plus court</translation>
 <translation id="3948116654032448504">&amp;Rechercher une image avec <ph name="SEARCH_ENGINE" /></translation>
 <translation id="3948507072814225786">Le site <ph name="ORIGIN" /> peut modifier les fichiers des dossiers suivants</translation>
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
@@ -3077,6 +3081,7 @@
 <translation id="4392896746540753732">Modifier le fichier de configuration</translation>
 <translation id="4394049700291259645">Désactiver</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{Tout &amp;ouvrir}=1{&amp;Ouvrir le favori}one{Tout &amp;ouvrir ({COUNT})}other{Tout &amp;ouvrir ({COUNT})}}</translation>
+<translation id="4398131717714042083">Efface l'historique et les saisies semi-automatiques dans le champ de recherche</translation>
 <translation id="439817266247065935">Votre appareil ne s'est arrêté pas correctement. Redémarrez Linux pour utiliser les applications Linux.</translation>
 <translation id="4400367121200150367">Les sites pour lesquels vos mots de passe ne seront jamais enregistrés s'afficheront ici</translation>
 <translation id="4400632832271803360">Maintenir la touche du lanceur d'applications enfoncée pour modifier la fonction des touches de la rangée supérieure</translation>
@@ -3101,6 +3106,7 @@
 <translation id="4415245286584082850">Aucun appareil détecté. Ouvrir un article du centre d'aide dans un nouvel onglet.</translation>
 <translation id="4415276339145661267">Gérer votre compte Google</translation>
 <translation id="4415748029120993980">Courbe elliptique SECG secp384r1 (également appelée "NIST P-384")</translation>
+<translation id="4416450511678320850">Aucune appli disponible pour ce contenu</translation>
 <translation id="4416582610654027550">Saisissez une URL valide</translation>
 <translation id="4419409365248380979">Toujours autoriser <ph name="HOST" /> à paramétrer les cookies</translation>
 <translation id="4421932782753506458">Félix</translation>
@@ -3393,6 +3399,7 @@
 <translation id="473936925429402449">Sélectionné, contenu supplémentaire <ph name="CURRENT_ELEMENT" /> sur <ph name="TOTAL_ELEMENTS" /></translation>
 <translation id="4739639199548674512">Tickets</translation>
 <translation id="4742334355511750246">Non autorisé à afficher des images</translation>
+<translation id="4742970037960872810">Supprimer la surbrillance</translation>
 <translation id="4743260470722568160"><ph name="BEGIN_LINK" />Découvrir comment mettre à jour des applications<ph name="END_LINK" /></translation>
 <translation id="4744981231093950366">{NUM_TABS,plural, =1{Réactiver le son du site}one{Réactiver le son du site}other{Réactiver le son des sites}}</translation>
 <translation id="4746351372139058112">Messages</translation>
@@ -4602,6 +4609,7 @@
 <translation id="6136114942382973861">Fermer la barre de téléchargements</translation>
 <translation id="6136287496450963112">Votre clé de sécurité n'est pas protégée par un code. Pour gérer les empreintes digitales, vous devez d'abord en créer un.</translation>
 <translation id="6138680304137685902">Signature X9.62 ECDSA avec SHA-384</translation>
+<translation id="6138774640412545950">L'extension "<ph name="APP_NAME" />" souhaite partager le contenu de votre écran avec <ph name="TARGET_NAME" />.</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, aucun réseau disponible</translation>
 <translation id="6141988275892716286">Confirmer le téléchargement</translation>
 <translation id="6143186082490678276">Aide</translation>
@@ -5057,6 +5065,7 @@
 <translation id="6651237644330755633">Considérer ce certificat comme fiable pour identifier les sites Web</translation>
 <translation id="6651495917527016072">Synchronisez les réseaux Wi-Fi avec votre téléphone. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">L'intégration Chrome <ph name="MS_AD_NAME" /> n'est compatible qu'avec les plates-formes x86_64. Les Chromebooks qui reposent sur une plate-forme ARM ou x86 n'offrent pas cette fonctionnalité.</translation>
+<translation id="66537479323396140">Efface l'historique et les saisies semi-automatiques dans le champ de recherche. Votre compte Google conserve peut-être d'autres formes d'historique de navigation sur la page <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Définir un réseau favori</translation>
 <translation id="6655190889273724601">Mode développeur</translation>
 <translation id="6655458902729017087">Masquer les comptes</translation>
@@ -5391,6 +5400,7 @@
 <translation id="7009709314043432820"><ph name="APP_NAME" /> utilise votre caméra</translation>
 <translation id="701080569351381435">Code source</translation>
 <translation id="7014174261166285193">Échec de l'installation</translation>
+<translation id="7014480873681694324">Supprimer la surbrillance</translation>
 <translation id="7017004637493394352">Dites une nouvelle fois "Ok Google".</translation>
 <translation id="7017219178341817193">Ajouter une page</translation>
 <translation id="7017354871202642555">Impossible de définir le mode une fois la fenêtre créée.</translation>
@@ -5922,6 +5932,7 @@
 <translation id="7636919061354591437">Installer sur cet appareil</translation>
 <translation id="7637593984496473097">Espace disque insuffisant</translation>
 <translation id="7638605456503525968">Ports série</translation>
+<translation id="7639914187072011620">Échec de la récupération de l'URL de redirection SAML sur le serveur</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> vous connecte automatiquement aux sites éligibles avec les mots de passe que vous avez enregistrés.</translation>
 <translation id="7642778300616172920">Masquer le contenu sensible</translation>
 <translation id="7643842463591647490">{0,plural, =1{# fenêtre ouverte}one{# fenêtre ouverte}other{# fenêtres ouvertes}}</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb
index a8d8210..35081cb 100644
--- a/chrome/app/resources/generated_resources_gl.xtb
+++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -3078,6 +3078,7 @@
 <translation id="4392896746540753732">Edita o ficheiro de configuración</translation>
 <translation id="4394049700291259645">Desactivar</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Abrir todos}=1{&amp;Abrir marcador}other{&amp;Abrir todos ({COUNT})}}</translation>
+<translation id="4398131717714042083">Borra o historial e os completados automáticos na caixa de busca</translation>
 <translation id="439817266247065935">O teu dispositivo non pechou correctamente. Reinicia Linux para usar as súas aplicacións.</translation>
 <translation id="4400367121200150367">Os sitios que nunca gardan contrasinais aparecerán aquí</translation>
 <translation id="4400632832271803360">Mantén premida a tecla do menú de aplicacións para cambiar o comportamento das teclas da fila superior</translation>
@@ -5060,6 +5061,7 @@
 <translation id="6651237644330755633">Confiar neste certificado para identificar sitios web</translation>
 <translation id="6651495917527016072">Sincroniza as redes wifi co teu teléfono. <ph name="LINK_BEGIN" />Máis información<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">A integración de <ph name="MS_AD_NAME" /> con Chrome só é compatible nas plataformas x86_64. Os Chromebook baseados nunha plataforma x86 ou ARC non admiten esta función.</translation>
+<translation id="66537479323396140">Borra o historial e os completados automáticos na caixa de busca. É posible que a túa Conta de Google teña outros tipos de historial de navegación en <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Establecer rede como preferida</translation>
 <translation id="6655190889273724601">Modo de programador</translation>
 <translation id="6655458902729017087">Ocultar contas</translation>
@@ -5926,6 +5928,7 @@
 <translation id="7636919061354591437">Instalar neste dispositivo</translation>
 <translation id="7637593984496473097">Non queda espazo suficiente no disco</translation>
 <translation id="7638605456503525968">Portos de serie</translation>
+<translation id="7639914187072011620">Non se puido obter do servidor o URL de redirección da SAML</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> inicia sesión automaticamente nos sitios aptos cos contrasinais que gardaches.</translation>
 <translation id="7642778300616172920">Ocultar contido confidencial</translation>
 <translation id="7643842463591647490">{0,plural, =1{# ventá aberta}other{# ventás abertas}}</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb
index bf232b7..fa626e8 100644
--- a/chrome/app/resources/generated_resources_gu.xtb
+++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -750,6 +750,7 @@
 <translation id="1794791083288629568">આ સમસ્યાને ઠીક કરવામાં અમારી સહાય કરવા માટે પ્રતિસાદ મોકલો.</translation>
 <translation id="1795214765651529549">ક્લાસિકનો ઉપયોગ કરો</translation>
 <translation id="1799071797295057738">એક્સટેન્શન "<ph name="EXTENSION_NAME" />" ઑટોમૅટિક રીતે બંધ કરવામાં આવ્યું છે.</translation>
+<translation id="1800973090344019061">"<ph name="APP_NAME" />" એક્સ્ટેન્શન તમારી સ્ક્રીનનું કન્ટેન્ટ શેર કરવા માગે છે.</translation>
 <translation id="1802624026913571222">કવર બંધ કરવામાં આવે ત્યારે નિષ્ક્રિય કરો</translation>
 <translation id="1802687198411089702">પેજ પ્રતિસાદ આપી રહ્યું નથી. તમે તેની રાહ જોઈ શકો છો અથવા બહાર નીકળી શકો છો.</translation>
 <translation id="1803531841600994172">જેમાં અનુવાદ કરવો છે તે ભાષા</translation>
@@ -1349,6 +1350,7 @@
 <translation id="2464089476039395325">HTTP પ્રૉક્સી</translation>
 <translation id="2465237718053447668"><ph name="DOMAIN" /> માટે જરૂરી છે કે તમે હમણાં વાઇ-ફાઇથી કનેક્ટ થાઓ અને અપડેટ ડાઉનલોડ કરો. અથવા, મીટર્ડ કનેક્શન પરથી ડાઉનલોડ કરો (શુલ્ક લાગુ થઈ શકે છે).</translation>
 <translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> નેટવર્ક, બંધ</translation>
+<translation id="2467755475704469005">કોઈ ડિવાઇસ મળ્યું નથી. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation>
 <translation id="2468178265280335214">ટચપૅડના સ્ક્રોલની ઝડપના સેટિંગ</translation>
 <translation id="2468205691404969808">તમારી પસંદગીઓ યાદ રાખવા માટે કુકીનો ઉપયોગ કરે છે, પછી ભલે તમે તે પેજની મુલાકાત ન પણ લો</translation>
 <translation id="2468402215065996499">ટેમાગોચી</translation>
@@ -2377,6 +2379,7 @@
 <translation id="3608576286259426129">વપરાશકર્તા ફોટો પ્રીવ્યૂ</translation>
 <translation id="3610369246614755442">ડૉકના પંખાને સર્વિસની જરૂર છે</translation>
 <translation id="361106536627977100">ફ્લૅશ ડેટા</translation>
+<translation id="3611655097742243705">વધુ ઍપ શોધવા માટે, Play સ્ટોરની મુલાકાત લો</translation>
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; એ ડાઉનલોડ કરી</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> ને દર્શાવો</translation>
 <translation id="3613422051106148727">નવા ટૅબમાં &amp;ખોલો</translation>
@@ -2712,6 +2715,7 @@
 <translation id="3943494825379372497">ઍપ અને પેજ રિસ્ટોર કરીએ?</translation>
 <translation id="3943582379552582368">&amp;પાછળ</translation>
 <translation id="3943857333388298514">પેસ્ટ કરો</translation>
+<translation id="3945513714196326460">ટૂંકું નામ અજમાવી જુઓ</translation>
 <translation id="3948116654032448504">છબી માટે <ph name="SEARCH_ENGINE" /> પર &amp;શોધો</translation>
 <translation id="3948507072814225786"><ph name="ORIGIN" /> નીચેના ફોલ્ડરોમાં સાચવેલી ફાઇલોમાં ફેરફાર કરી શકે છે</translation>
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
@@ -3097,6 +3101,7 @@
 <translation id="4415245286584082850">કોઈ ડિવાઇસ મળ્યાં નથી. નવા ટૅબમાં સહાયતા કેન્દ્રનો લેખ ખોલો.</translation>
 <translation id="4415276339145661267">તમારું Google એકાઉન્ટ મેનેજ કરો</translation>
 <translation id="4415748029120993980">SECG એલિપ્ટિક કર્વ secp384r1 (ઉર્ફ NIST P-384)</translation>
+<translation id="4416450511678320850">આ કન્ટેન્ટ માટે કોઈ ઍપ ઉપલબ્ધ નથી</translation>
 <translation id="4416582610654027550">માન્ય URL લખો</translation>
 <translation id="4419409365248380979"><ph name="HOST" /> ને હંમેશા કૂકીઝ સેટ કરવાની મંજૂરી આપો</translation>
 <translation id="4421932782753506458">ફ્લફી</translation>
@@ -3389,6 +3394,7 @@
 <translation id="473936925429402449">પસંદ કરેલા, <ph name="TOTAL_ELEMENTS" />માંથી વધારાના <ph name="CURRENT_ELEMENT" /> કન્ટેન્ટ</translation>
 <translation id="4739639199548674512">ટિકિટ</translation>
 <translation id="4742334355511750246">છબીઓ બતાવવાની મંજૂરી નથી</translation>
+<translation id="4742970037960872810">હાઇલાઇટ કાઢી નાખો</translation>
 <translation id="4743260470722568160"><ph name="BEGIN_LINK" />ઍપ્લિકેશનો કેવી રીતે અપલોડ કરવી તે જાણો<ph name="END_LINK" /></translation>
 <translation id="4744981231093950366">{NUM_TABS,plural, =1{સાઇટને અનમ્યૂટ કરો}one{સાઇટને અનમ્યૂટ કરો}other{સાઇટને અનમ્યૂટ કરો}}</translation>
 <translation id="4746351372139058112">Messages</translation>
@@ -4599,6 +4605,7 @@
 <translation id="6136114942382973861">ડાઉનલોડ બાર બંધ કરો</translation>
 <translation id="6136287496450963112">તમારી 'સિક્યુરિટી કી' પિન વડે સુરક્ષિત નથી. ફિંગરપ્રિન્ટ મેનેજ કરવા માટે, પહેલાં પિન બનાવો.</translation>
 <translation id="6138680304137685902">SHA-384 સાથે X9.62 ECDSA સહી</translation>
+<translation id="6138774640412545950">"<ph name="APP_NAME" />" એક્સ્ટેન્શન તમારી સ્ક્રીનના કન્ટેન્ટને <ph name="TARGET_NAME" /> સાથે શેર કરવા માગે છે.</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, નેટવર્ક નથી</translation>
 <translation id="6141988275892716286">ડાઉનલોડની પુષ્ટિ કરો</translation>
 <translation id="6143186082490678276">સહાય મેળવો</translation>
@@ -5388,6 +5395,7 @@
 <translation id="7009709314043432820"><ph name="APP_NAME" /> તમારા કૅમેરાનો ઉપયોગ કરી રહી છે</translation>
 <translation id="701080569351381435">સ્રોત જુઓ</translation>
 <translation id="7014174261166285193">ઇન્સ્ટોલેશન નિષ્ફળ થયું.</translation>
+<translation id="7014480873681694324">હાઇલાઇટ કાઢી નાખો</translation>
 <translation id="7017004637493394352">ફરીથી "Ok Google" કહો</translation>
 <translation id="7017219178341817193">નવું પૃષ્ઠ ઉમેરો</translation>
 <translation id="7017354871202642555">વિંડો સેટ થઈ જાય પછી મોડને સેટ કરી શકાતો નથી.</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index c3f4c8e..f95a932 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -3079,6 +3079,7 @@
 <translation id="4392896746540753732">कॉन्फ़िगरेशन फ़ाइल में बदलाव करें</translation>
 <translation id="4394049700291259645">बंद करें</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{सभी यूआरएल &amp;खोलें}=1{बुकमार्क &amp;खोलें}one{दिया गया ({COUNT}) यूआरएल &amp;खोलें}other{सभी ({COUNT}) यूआरएल &amp;खोलें}}</translation>
+<translation id="4398131717714042083">खोज बॉक्स में, अपने-आप पूरी होने वाली गतिविधियों और इतिहास को मिटाता है</translation>
 <translation id="439817266247065935">आपका डिवाइस सही तरीके से बंद नहीं हुआ. Linux ऐप्लिकेशन को इस्तेमाल करने के लिए, Linux को रीस्टार्ट करें.</translation>
 <translation id="4400367121200150367">वे साइटें जो कभी पासवर्ड नहीं सेव करती हैं, यहां दिखाई देंगी</translation>
 <translation id="4400632832271803360">शीर्ष-पंक्ति वाली कुंजियों का व्यवहार स्विच करने के लिए Launcher कुंजी दबाए रखें</translation>
@@ -5061,6 +5062,7 @@
 <translation id="6651237644330755633">वेबसाइटों की पहचान करने के लिए इस प्रमाणपत्र पर विश्वास करें</translation>
 <translation id="6651495917527016072">वाई-फ़ाई नेटवर्क को अपने फ़ोन के साथ सिंक करें. <ph name="LINK_BEGIN" />ज़्यादा जानें<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> एकीकरण सिर्फ़ x86_64 प्लैटफ़ॉर्म पर काम करता है. किसी ARM या x86 प्लैटफ़ॉर्म पर बने Chromebook इस काम की क्षमता की सुविधा नहीं देते हैं.</translation>
+<translation id="66537479323396140">खोज बॉक्स में, अपने-आप पूरी होने वाली गतिविधियों और इतिहास को मिटाता है. आपके Google खाते में <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> पर अन्य तरह का ब्राउज़िंग इतिहास हो सकता है.</translation>
 <translation id="6654509035557065241">नेटवर्क चुनें</translation>
 <translation id="6655190889273724601">डेवलपर मोड</translation>
 <translation id="6655458902729017087">खाते छिपाएं</translation>
@@ -5927,6 +5929,7 @@
 <translation id="7636919061354591437">इस डिवाइस पर इंस्टॉल करें</translation>
 <translation id="7637593984496473097">डिस्क में स्टोर करने के लिए जगह नहीं बची है</translation>
 <translation id="7638605456503525968">सीरियल पोर्ट</translation>
+<translation id="7639914187072011620">एसएएमएल के दूसरे वेबलिंक को सर्वर से फ़ेच नहीं किया जा सका</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" />   सहेजे गए पासवर्ड से आपको योग्य साइट में अपने आप प्रवेश करा देता है.</translation>
 <translation id="7642778300616172920">संवेदनशील सामग्री छिपाएं</translation>
 <translation id="7643842463591647490">{0,plural, =1{# खुली विंडो}one{# खुली विंडो}other{# खुली विंडो}}</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index 65299c86..bc77dbe 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -3081,6 +3081,7 @@
 <translation id="4392896746540753732">Uredite konfiguracijsku datoteku</translation>
 <translation id="4394049700291259645">Onemogući</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Otvori sve}=1{&amp;Otvori oznaku}one{&amp;Otvori sve ({COUNT})}few{&amp;Otvori sve ({COUNT})}other{&amp;Otvori sve ({COUNT})}}</translation>
+<translation id="4398131717714042083">Briše povijest i samodovršavanja u okviru za pretraživanje</translation>
 <translation id="439817266247065935">Vaš se uređaj nije ispravno zatvorio. Ponovo pokrenite Linux da biste koristili Linux aplikacije.</translation>
 <translation id="4400367121200150367">Ovdje će se pojaviti web-lokacije koje nikad ne spremaju zaporke</translation>
 <translation id="4400632832271803360">Držite tipku Pokretač da biste izmjenjivali ponašanje tipki u najvišem retku</translation>
@@ -5063,6 +5064,7 @@
 <translation id="6651237644330755633">Vjeruj ovom certifikatu za identificiranje web-lokacija</translation>
 <translation id="6651495917527016072">Sinkronizirajte Wi-Fi mreže s telefonom. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Integracija modela <ph name="MS_AD_NAME" /> s Chromeom podržana je samo na platformama x86_64. Chromebookovi izgrađeni na platformi ARM ili x86 ne podržavaju tu funkciju.</translation>
+<translation id="66537479323396140">Briše povijest i samodovršavanja u okviru za pretraživanje. Na vašem Google računu možda postoje drugi oblici povijesti pregledavanja na stranici <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Preferiranje mreže</translation>
 <translation id="6655190889273724601">Način za razvojne programere</translation>
 <translation id="6655458902729017087">Sakrij račune</translation>
@@ -5929,6 +5931,7 @@
 <translation id="7636919061354591437">Instaliraj na ovom uređaju</translation>
 <translation id="7637593984496473097">Nema dovoljno prostora na disku</translation>
 <translation id="7638605456503525968">Serijski priključci</translation>
+<translation id="7639914187072011620">Dohvaćanje SAML preusmjeravanja s poslužitelja nije uspjelo</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> može upotrijebiti spremljene zaporke kako bi vas automatski prijavio na web-lokacije koje ispunjavaju uvjete.</translation>
 <translation id="7642778300616172920">Sakrij osjetljiv sadržaj</translation>
 <translation id="7643842463591647490">{0,plural, =1{# otvoreni prozor}one{# otvoreni prozor}few{# otvorena prozora}other{# otvorenih prozora}}</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index 107f305..a2c966e2 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -3078,6 +3078,7 @@
 <translation id="4392896746540753732">A konfigurációs fájl szerkesztése</translation>
 <translation id="4394049700291259645">Kikapcsolás</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Összes megnyitása}=1{&amp;Könyvjelző megnyitása}other{&amp;Összes ({COUNT}) megnyitása}}</translation>
+<translation id="4398131717714042083">Törli a keresőmezőben található előzményeket és automatikus kiegészítéseket</translation>
 <translation id="439817266247065935">Az eszköz nem állt le megfelelően. Linuxos alkalmazások használatához indítsa újra a Linuxot.</translation>
 <translation id="4400367121200150367">Itt jelennek meg azok a webhelyek, amelyeknél letiltotta a jelszavak mentését</translation>
 <translation id="4400632832271803360">A legfelső billentyűsor viselkedésének módosításához tartsa lenyomva az Indítót</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">Bízzon meg ebben a tanúsítványban webhelyek azonosításakor</translation>
 <translation id="6651495917527016072">Wi-Fi-hálózatok szinkronizálása a telefonjával. <ph name="LINK_BEGIN" />További információ<ph name="LINK_END" />.</translation>
 <translation id="665355505818177700">A Chrome <ph name="MS_AD_NAME" />-integrációja csak x86_64 platformokon támogatott. Az ARM vagy x86 platformra épített Chromebookok nem támogatják ezt a funkciót.</translation>
+<translation id="66537479323396140">Törli a keresőmezőben található előzményeket és automatikus kiegészítéseket. Előfordulhat, hogy a böngészési előzmények más formái még megtalálhatók Google-fiókjában a <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> webhelyen.</translation>
 <translation id="6654509035557065241">Hálózat előnyben részesítése</translation>
 <translation id="6655190889273724601">Fejlesztői mód</translation>
 <translation id="6655458902729017087">Fiókok elrejtése</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">Telepítés ezen az eszközön</translation>
 <translation id="7637593984496473097">Nincs elég lemezterület</translation>
 <translation id="7638605456503525968">Soros portok</translation>
+<translation id="7639914187072011620">Nem sikerült lekérni a SAML átirányítási URL-jét a szerverről</translation>
 <translation id="764017888128728">A <ph name="PASSWORD_MANAGER_BRAND" /> segítségével automatikusan bejelentkezhet adott webhelyekre a mentett jelszavaival.</translation>
 <translation id="7642778300616172920">Bizalmas tartalom elrejtése</translation>
 <translation id="7643842463591647490">{0,plural, =1{# megnyitott ablak}other{# megnyitott ablak}}</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb
index 51eef80..c46ee99 100644
--- a/chrome/app/resources/generated_resources_hy.xtb
+++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -3081,6 +3081,7 @@
 <translation id="4392896746540753732">Կարգավորման ֆայլի փոփոխում</translation>
 <translation id="4394049700291259645">Անջատել</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Բացել բոլորը}=1{&amp;Բացել էջանիշը}one{&amp;Բացել բոլորը ({COUNT})}other{&amp;Բացել բոլորը ({COUNT})}}</translation>
+<translation id="4398131717714042083">Մաքրում է պատմությունն ու ինքնալրացումները որոնման դաշտում</translation>
 <translation id="439817266247065935">Ձեր սարքը ճիշտ չի անջատվել։ Վերագործարկեք Լինուքսը՝ դրա հավելվածներն օգտագործելու համար։</translation>
 <translation id="4400367121200150367">Կայքերը, որոնք գաղտնաբառեր չեն պահում, կցուցադրվեն այստեղ</translation>
 <translation id="4400632832271803360">Վերևի շարքի ստեղները փոխարկելու համար սեղմած պահեք գործարկիչի ստեղնը</translation>
@@ -5066,6 +5067,7 @@
 <translation id="6651237644330755633">Վստահել այս հավաստագրին կայքերի նույնականացման համար</translation>
 <translation id="6651495917527016072">Համաժամացնել Wi-Fi ցանցերը հեռախոսի հետ։ <ph name="LINK_BEGIN" />Իմանալ ավելին<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome-ի <ph name="MS_AD_NAME" /> ինտեգրումը հասանելի է միայն x86_64 հարթակներում: ARM-ի կամ x86 հարթակի հիման վրա ստեղծված Chromebook սարքերը չեն աջակցում այս գործառույթը:</translation>
+<translation id="66537479323396140">Մաքրում է պատմությունն ու ինքնալրացումները որոնման դաշտում։ Ձեր Google հաշվում կարող են լինել այցելությունների պատմության այլ ձևեր, որոնք կարող եք գտնել <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> էջում։</translation>
 <translation id="6654509035557065241">Ցանցը դարձնել նախընտրած</translation>
 <translation id="6655190889273724601">Մշակողի ռեժիմ</translation>
 <translation id="6655458902729017087">Թաքցնել հաշիվները</translation>
@@ -5932,6 +5934,7 @@
 <translation id="7636919061354591437">Տեղադրել այս սարքում</translation>
 <translation id="7637593984496473097">Սկավառակում բավարար տարածք չկա</translation>
 <translation id="7638605456503525968">Հաջորդական միացքներ</translation>
+<translation id="7639914187072011620">Չհաջողվեց URL-ի SAML վերաուղղորդումները բեռնել սերվերից</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" />-ը թույլ է տալիս ավտոմատ կերպով մուտք գործել աջակցվող կայքեր ձեր պահած գաղտնաբառերով:</translation>
 <translation id="7642778300616172920">Թաքցնել գաղտնի տվյալները</translation>
 <translation id="7643842463591647490">{0,plural, =1{# բաց պատուհան}one{# բաց պատուհան}other{# բաց պատուհան}}</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index ae90a5f3..fa7094a 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">Edit file konfigurasi</translation>
 <translation id="4394049700291259645">Nonaktifkan</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Buka semua}=1{&amp;Buka bookmark}other{&amp;Buka semua ({COUNT})}}</translation>
+<translation id="4398131717714042083">Menghapus histori dan pelengkapan otomatis di kotak penelusuran</translation>
 <translation id="439817266247065935">Perangkat Anda tidak dimatikan dengan benar. Mulai ulang Linux untuk menggunakan aplikasi Linux.</translation>
 <translation id="4400367121200150367">Situs yang tidak pernah menyimpan sandi akan muncul di sini</translation>
 <translation id="4400632832271803360">Tahan tombol Peluncur untuk mengubah perilaku tombol baris atas</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">Percayai sertifikat ini untuk mengidentifikasi situs web</translation>
 <translation id="6651495917527016072">Sinkronkan jaringan Wi-Fi dengan ponsel. <ph name="LINK_BEGIN" />Pelajari lebih lanjut<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Integrasi <ph name="MS_AD_NAME" /> Chrome hanya didukung di platform x86_64. Chromebook yang dibuat di platform ARM atau x86 tidak mendukung fungsi ini.</translation>
+<translation id="66537479323396140">Menghapus histori dan pelengkapan otomatis di kotak penelusuran. Akun Google Anda mungkin memiliki bentuk histori penjelajahan lainnya di <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Jadikan jaringan pilihan</translation>
 <translation id="6655190889273724601">Mode developer</translation>
 <translation id="6655458902729017087">Sembunyikan Akun</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">Instal di Perangkat ini</translation>
 <translation id="7637593984496473097">Ruang disk tidak cukup</translation>
 <translation id="7638605456503525968">Port serial</translation>
+<translation id="7639914187072011620">Gagal mengambil URL alihan SAML dari server</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> otomatis memasukkan Anda ke situs yang memenuhi syarat menggunakan sandi tersimpan.</translation>
 <translation id="7642778300616172920">Sembunyikan konten sensitif</translation>
 <translation id="7643842463591647490">{0,plural, =1{# jendela dibuka}other{# jendela dibuka}}</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb
index cc5ab5cd..273c704 100644
--- a/chrome/app/resources/generated_resources_is.xtb
+++ b/chrome/app/resources/generated_resources_is.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">Breyta stillingaskrá</translation>
 <translation id="4394049700291259645">Slökkva</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Opna allt}=1{&amp;Opna bókamerki}one{&amp;Opna allt ({COUNT})}other{&amp;Opna allt ({COUNT})}}</translation>
+<translation id="4398131717714042083">Hreinsar feril og sjálfvirkar útfyllingar í leitarreitnum</translation>
 <translation id="439817266247065935">Ekki var slökkt á tækinu á réttan hátt. Endurræstu Linux til að nota Linux-forrit.</translation>
 <translation id="4400367121200150367">Vefsvæði sem aldrei vista aðgangsorð munu birtast hér</translation>
 <translation id="4400632832271803360">Haltu ræsihnappinum inni til að breyta hegðun lykla í efstu röðinni</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">Treysta þessu vottorði til að auðkenna vefsvæði</translation>
 <translation id="6651495917527016072">Samstilltu Wi-Fi net við símann þinn. <ph name="LINK_BEGIN" />Frekari upplýsingar<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Samþætting Chrome <ph name="MS_AD_NAME" /> er aðeins studd í x86_64 kerfum. Chromebook tæki sem eru byggð á ARM- eða x86-kerfi styðja ekki þennan eiginleika.</translation>
+<translation id="66537479323396140">Hreinsar ferilinn og sjálfvirkar útfyllingar í leitarreitnum. Google reikningurinn þinn kann að vera með annars konar vefskoðunarferil á <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Kjósa net</translation>
 <translation id="6655190889273724601">Forritarastilling</translation>
 <translation id="6655458902729017087">Fela reikninga</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">Setja upp í þessu tæki</translation>
 <translation id="7637593984496473097">Ekki nægilegt diskpláss</translation>
 <translation id="7638605456503525968">Raðtengi</translation>
+<translation id="7639914187072011620">Ekki tókst að sækja framsendingarslóð SAML hjá þjóninum</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> skráir þig sjálfkrafa inn á vefsvæði með þeim aðgangsorðum sem þú hefur vistað.</translation>
 <translation id="7642778300616172920">Fela viðkvæmt efni</translation>
 <translation id="7643842463591647490">{0,plural, =1{# opinn gluggi}one{# opinn gluggi}other{# opnir gluggar}}</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index f28b7ba..a83db04 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -3079,6 +3079,7 @@
 <translation id="4392896746540753732">Modifica il file di configurazione</translation>
 <translation id="4394049700291259645">Disabilita</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Apri tutti}=1{&amp;Apri preferito}other{&amp;Apri tutti ({COUNT})}}</translation>
+<translation id="4398131717714042083">Vengono cancellati la cronologia e i completamenti automatici nella casella di ricerca</translation>
 <translation id="439817266247065935">Il dispositivo non è stato spento correttamente. Riavvia Linux per usare le relative app.</translation>
 <translation id="4400367121200150367">I siti che non salvano mai le password verranno visualizzati qui</translation>
 <translation id="4400632832271803360">Tieni premuto il tasto Avvio applicazioni per modificare la funzione dei tasti della fila superiore.</translation>
@@ -5061,6 +5062,7 @@
 <translation id="6651237644330755633">Considera attendibile questo certificato per l'identificazione dei siti web</translation>
 <translation id="6651495917527016072">Sincronizza le reti Wi-Fi con il tuo telefono. <ph name="LINK_BEGIN" />Ulteriori informazioni<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">L'integrazione di Chrome <ph name="MS_AD_NAME" /> è supportata soltanto sulle piattaforme x86_64. I Chromebook basati su una piattaforma ARM o x86 non supportano questa funzionalità.</translation>
+<translation id="66537479323396140">Vengono cancellati la cronologia e i completamenti automatici nella casella di ricerca. Il tuo Account Google potrebbe avere altri tipi di cronologia di navigazione all'indirizzo <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Preferenza rete</translation>
 <translation id="6655190889273724601">Modalità sviluppatore</translation>
 <translation id="6655458902729017087">Nascondi account</translation>
@@ -5927,6 +5929,7 @@
 <translation id="7636919061354591437">Installa su questo dispositivo</translation>
 <translation id="7637593984496473097">Spazio su disco insufficiente</translation>
 <translation id="7638605456503525968">Porte seriali</translation>
+<translation id="7639914187072011620">Impossibile recuperare l'URL di reindirizzamento SAML dal server</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> ti consente di accedere automaticamente ai siti idonei con le password salvate.</translation>
 <translation id="7642778300616172920">Nascondi contenuti sensibili</translation>
 <translation id="7643842463591647490">{0,plural, =1{# finestra aperta}other{# finestre aperte}}</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb
index 5ba84ec..69c90d50 100644
--- a/chrome/app/resources/generated_resources_iw.xtb
+++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">עריכת קובץ התצורה</translation>
 <translation id="4394049700291259645">השבתה</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;פתיחת כל הכתובות}=1{&amp;פתיחת הסימנייה}two{&amp;פתיחת כל הכתובות ({COUNT})}many{&amp;פתיחת כל הכתובות ({COUNT})}other{&amp;פתיחת כל הכתובות ({COUNT})}}</translation>
+<translation id="4398131717714042083">ניקוי ההיסטוריה וההשלמות האוטומטיות בתיבת החיפוש</translation>
 <translation id="439817266247065935">‏המכשיר שלך לא כובה כהלכה. כדי להשתמש באפליקציות של Linux, יש להפעיל את Linux מחדש.</translation>
 <translation id="4400367121200150367">כאן יופיעו האתרים שאף פעם אינם שומרים סיסמאות</translation>
 <translation id="4400632832271803360">יש להחזיק את המקש של מרכז האפליקציות כדי לשנות את ההתנהגות של מקשי השורה העליונה</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">לתת אמון באישור זה לזיהוי אתרי אינטרנט</translation>
 <translation id="6651495917527016072">‏סנכרון של רשתות Wi-Fi עם הטלפון שלך. <ph name="LINK_BEGIN" />מידע נוסף<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">‏שילוב של Chrome עם <ph name="MS_AD_NAME" /> נתמך רק בפלטפורמות x86_64. מחשבי Chromebook שמבוססים על פלטפורמת ARM או x86 לא תומכים בפונקציונליות הזו.</translation>
+<translation id="66537479323396140">‏ניקוי ההיסטוריה וההשלמות האוטומטיות בתיבת החיפוש. ייתכן שלחשבון Google שלך יהיו צורות אחרות של היסטוריית גלישה בכתובת <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">העדפת רשת זו</translation>
 <translation id="6655190889273724601">מצב פיתוח</translation>
 <translation id="6655458902729017087">הסתרת חשבונות</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">התקנה במכשיר זה</translation>
 <translation id="7637593984496473097">אין מספיק נפח אחסון בדיסק</translation>
 <translation id="7638605456503525968">יציאות טוריות</translation>
+<translation id="7639914187072011620">‏נכשל הניסיון לאחזר את ההפניה האוטומטית אל SAML מהשרת</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> מכניס אותך באופן אוטומטי לאתרים כשירים באמצעות סיסמאות ששמרת.</translation>
 <translation id="7642778300616172920">הסתרה של תוכן רגיש</translation>
 <translation id="7643842463591647490">{0,plural, =1{חלון אחד פתוח}two{2 חלונות פתוחים}many{# חלונות פתוחים}other{# חלונות פתוחים}}</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index 236d2e95..d915e95 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">設定ファイルを編集します</translation>
 <translation id="4394049700291259645">無効にする</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{すべてを開く(&amp;O)}=1{ブックマークを開く(&amp;O)}other{すべて({COUNT} 個)を開く(&amp;O)}}</translation>
+<translation id="4398131717714042083">検索ボックスの履歴とオートコンプリート データを削除します</translation>
 <translation id="439817266247065935">デバイスは正しく終了しませんでした。Linux アプリを使用するには、Linux を再起動してください。</translation>
 <translation id="4400367121200150367">パスワードを保存していないサイトがここに表示されます</translation>
 <translation id="4400632832271803360">キーボードの最上段にあるキーの動作を切り替えるには、ランチャー キーを押したままにします</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">ウェブサイトの識別でこの証明書を信頼します</translation>
 <translation id="6651495917527016072">Wi-Fi ネットワークをスマートフォンと同期します。<ph name="LINK_BEGIN" />詳細<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome と <ph name="MS_AD_NAME" /> の統合は x86_64 プラットフォームでのみサポートされています。ARM または x86 プラットフォームを使用している Chromebooks では、この機能はサポートされていません。</translation>
+<translation id="66537479323396140">検索ボックスの履歴とオートコンプリート データを削除します。お使いの Google アカウントの <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> に、他の形式の閲覧履歴が記録されている場合があります。</translation>
 <translation id="6654509035557065241">優先するネットワーク</translation>
 <translation id="6655190889273724601">デベロッパー モード</translation>
 <translation id="6655458902729017087">アカウントを非表示にする</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">このデバイスにインストール</translation>
 <translation id="7637593984496473097">ディスクの空き容量が不足しています</translation>
 <translation id="7638605456503525968">シリアルポート</translation>
+<translation id="7639914187072011620">サーバーから SAML リダイレクト URL を取得できませんでした</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> では、保存したパスワードを使って対象となるサイトへの自動ログインが行われます。</translation>
 <translation id="7642778300616172920">プライベートな内容を表示しない</translation>
 <translation id="7643842463591647490">{0,plural, =1{開いているウィンドウ # 個}other{開いているウィンドウ # 個}}</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb
index 7eee84c..d8e19c5 100644
--- a/chrome/app/resources/generated_resources_ka.xtb
+++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -3079,6 +3079,7 @@
 <translation id="4392896746540753732">კონფიგურაციის ფაილის რედაქტირება</translation>
 <translation id="4394049700291259645">გამორთვა</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{ყველას &amp;გახსნა}=1{სანიშნეს &amp;გახსნა}other{{COUNT}-ვეს &amp;გახსნა}}</translation>
+<translation id="4398131717714042083">საძიებო ველში გაასუფთავებს ისტორიასა და ავტომატურ დასრულებებს</translation>
 <translation id="439817266247065935">თქვენი მოწყობილობა სათანადოდ არ გაითიშა. Linux აპების გამოსაყენებლად გადატვირთეთ Linux.</translation>
 <translation id="4400367121200150367">საიტები, რომლებიც არასოდეს იმახსოვრებს პაროლებს, აქ გამოჩნდება</translation>
 <translation id="4400632832271803360">ზედა მწკრივის კლავიშების რეჟიმის გადასართავად ხანგრძლივად დააჭირეთ გამშვების კლავიშს</translation>
@@ -5061,6 +5062,7 @@
 <translation id="6651237644330755633">ამ სერტიფიკატისთვის ვებსაიტების ამოცნობის მინდობა</translation>
 <translation id="6651495917527016072">მოახდინეთ Wi-Fi ქსელების სინქრონიზაცია თქვენს ტელეფონთან. <ph name="LINK_BEGIN" />შეიტყვეთ მეტი<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> ინტეგრაცია მხარდაჭერილია მხოლოდ x86_64 პლატფორმებზე. იმ Chromebook მოწყობილობების მიერ, რომლებიც შექმნილია ARM-ის ბაზაზე ან x86 პლატფორმაზე, ეს ფუნქცია მხარდაჭერილი არ არის.</translation>
+<translation id="66537479323396140">საძიებო ველში გაასუფთავებს ისტორიასა და ავტომატურ დასრულებებს. თქვენს Google ანგარიშში შეიძლება ინახებოდეს სხვა ტიპის დათვალიერების ისტორიაც, რომელიც ხელმისაწვდომია მისამართზე <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">ქსელისთვის უპირატესობის მინიჭება</translation>
 <translation id="6655190889273724601">შემმუშავებლის რეჟიმი</translation>
 <translation id="6655458902729017087">ანგარიშების დამალვა</translation>
@@ -5927,6 +5929,7 @@
 <translation id="7636919061354591437">ინსტალაცია ამ მოწყობილობაზე</translation>
 <translation id="7637593984496473097">დისკზე საკმარისი სივრცე არ არის</translation>
 <translation id="7638605456503525968">თანმიმდევრული პორტები</translation>
+<translation id="7639914187072011620">სერვერიდან SAML გადამისამართების URL-ის მიღება ვერ მოხერხდა</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> თქვენ მიერ შენახული პაროლების მეშვეობით შესაბამის საიტებში ავტომატურად შესვლაში გეხმარებათ.</translation>
 <translation id="7642778300616172920">სენსიტიური კონტენტის დამალვა</translation>
 <translation id="7643842463591647490">{0,plural, =1{# გახსნილი ფანჯარა}other{# გახსნილი ფანჯარა}}</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb
index 015312a..269f4de 100644
--- a/chrome/app/resources/generated_resources_km.xtb
+++ b/chrome/app/resources/generated_resources_km.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">កែឯកសារកំណត់​រចនាសម្ព័ន្ធ</translation>
 <translation id="4394049700291259645">បិទដំណើរការ</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;បើកទាំងអស់}=1{&amp;បើកចំណាំ}other{&amp;បើកទាំងអស់ ({COUNT})}}</translation>
+<translation id="4398131717714042083">សម្អាតប្រវត្តិ និងការ​បំពេញ​ស្វ័យ​ប្រវត្តិនៅក្នុងប្រអប់​ស្វែងរក</translation>
 <translation id="439817266247065935">ឧបករណ៍​របស់អ្នកមិនបានបិទត្រឹមត្រូវទេ។ សូមចាប់ផ្ដើម Linux ឡើងវិញ ដើម្បីប្រើ​កម្មវិធី Linux។</translation>
 <translation id="4400367121200150367">ទំព័រ​ដែល​មិនធ្លាប់​រក្សាទុក​ពាក្យសម្ងាត់​នឹង​បង្ហាញ​នៅទីនេះ</translation>
 <translation id="4400632832271803360">ចុច​ប៊ូតុងកម្មវិធីចាប់ផ្ដើមឲ្យជាប់ ដើម្បី​ប្តូរលក្ខណៈ​គ្រាប់ចុច​នៅជួរ​ខាងលើ</translation>
@@ -5063,6 +5064,7 @@
 <translation id="6651237644330755633">ជឿទុកចិត្តលើវិញ្ញាបនបត្រនេះដើម្បីកំណត់អត្តសញ្ញាណគេហទំព័រ</translation>
 <translation id="6651495917527016072">ធ្វើ​សម​កាល​កម្មបណ្ដាញ Wi-Fi ជាមួយទូរសព្ទរបស់អ្នក។ <ph name="LINK_BEGIN" />ស្វែងយល់បន្ថែម<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">ការរួម​បញ្ចូល Chrome <ph name="MS_AD_NAME" /> គឺ​អាចប្រើ​បាន​នៅលើ​ប្រព័ន្ធ x86_64 តែប៉ុណ្ណោះ។ Chromebook ដែលភ្ជាប់​មក​នៅលើប្រព័ន្ធ ARM ឬ x86 មិន​ស្គាល់​មុខងារ​នេះ​ទេ។</translation>
+<translation id="66537479323396140">សម្អាតប្រវត្តិ និងការ​បំពេញ​ស្វ័យ​ប្រវត្តិនៅក្នុងប្រអប់​ស្វែងរក។ គណនី Google របស់អ្នកអាចមានទម្រង់ប្រវត្តិ​រុករក​តាមអ៊ីនធឺណិតផ្សេងទៀតនៅ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />។</translation>
 <translation id="6654509035557065241">កំណត់​បណ្ដាញ​ជាអាទិភាព</translation>
 <translation id="6655190889273724601">របៀបអ្នកអភិវឌ្ឈន៍កម្មវិធី</translation>
 <translation id="6655458902729017087">លាក់គណនី</translation>
@@ -5929,6 +5931,7 @@
 <translation id="7636919061354591437">ដំឡើង​នៅលើ​ឧបករណ៍​នេះ</translation>
 <translation id="7637593984496473097">ទំហំផ្ទុក​ក្នុងថាស​មានមិនគ្រប់គ្រាន់ទេ</translation>
 <translation id="7638605456503525968">រន្ធ​ស៊េរី</translation>
+<translation id="7639914187072011620">មិនអាចទាញយក URL បញ្ជូនបន្ត SAML ពីម៉ាស៊ីនមេបានទេ</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> នាំអ្នកចូលដោយស្វ័យប្រវត្តិទៅគេហទំព័រដែលមានសិទ្ធិដំណើរការដោយប្រើពាក្យសម្ងាត់ដែលអ្នកបានរក្សាទុក។</translation>
 <translation id="7642778300616172920">លាក់​ខ្លឹមសារ​រសើប</translation>
 <translation id="7643842463591647490">{0,plural, =1{វិនដូ # បានបើក}other{វិនដូ # បានបើក}}</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index 629b8d94..e2a247aa 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -3078,6 +3078,7 @@
 <translation id="4392896746540753732">설정 파일 수정</translation>
 <translation id="4394049700291259645">사용 중지</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{모두 열기(O)}=1{북마크 열기(O)}other{{COUNT}개 모두 열기(O)}}</translation>
+<translation id="4398131717714042083">검색창에서 방문 기록과 자동 완성을 지웁니다.</translation>
 <translation id="439817266247065935">기기가 제대로 종료되지 않았습니다. Linux 앱을 사용하려면 Linux를 다시 시작하세요.</translation>
 <translation id="4400367121200150367">비밀번호를 저장하지 않는 사이트가 표시됩니다.</translation>
 <translation id="4400632832271803360">맨 윗 줄 키의 동작을 전환하려면 런처 키를 길게 누르세요.</translation>
@@ -5060,6 +5061,7 @@
 <translation id="6651237644330755633">웹사이트를 식별하기 위해 이 인증서 신뢰</translation>
 <translation id="6651495917527016072">휴대전화와 Wi-Fi 네트워크를 동기화합니다. <ph name="LINK_BEGIN" />자세히 알아보기<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> 통합은 x86_64 플랫폼에서만 지원됩니다. ARM 또는 x86 플랫폼에서 구축된 Chromebook은 이 기능을 지원하지 않습니다.</translation>
+<translation id="66537479323396140">검색창에 저장된 방문 기록과 자동 완성 내역을 지웁니다. Google 계정의 내 활동(<ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />)에는 방문 기록이 다른 형식으로 남아 있을 수도 있습니다.</translation>
 <translation id="6654509035557065241">선호 네트워크 설정</translation>
 <translation id="6655190889273724601">개발자 모드</translation>
 <translation id="6655458902729017087">계정 숨기기</translation>
@@ -5926,6 +5928,7 @@
 <translation id="7636919061354591437">이 기기에 설치</translation>
 <translation id="7637593984496473097">디스크 공간이 충분하지 않음</translation>
 <translation id="7638605456503525968">직렬 포트</translation>
+<translation id="7639914187072011620">SAML 리디렉션 URL을 서버에서 가져올 수 없습니다.</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" />에서 저장한 비밀번호를 사용하여 적합한 사이트에 자동 로그인합니다.</translation>
 <translation id="7642778300616172920">민감한 내용 숨기기</translation>
 <translation id="7643842463591647490">{0,plural, =1{열린 창 #개}other{열린 창 #개}}</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb
index 1596e15..491fba51 100644
--- a/chrome/app/resources/generated_resources_lo.xtb
+++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -3078,6 +3078,7 @@
 <translation id="4392896746540753732">ແກ້ໄຂໄຟລ໌ກຳນົດຄ່າ</translation>
 <translation id="4394049700291259645">ປິດ​ໃຊ້ງານ</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;ເປີດທັງໝົດ}=1{&amp;ເປີດບຸກມາກ}other{&amp;ເປີດທັງໝົດ ({COUNT})}}</translation>
+<translation id="4398131717714042083">ລຶບລ້າງປະຫວັດ ແລະ autocompletion ໃນກ່ອງຊອກຫາ</translation>
 <translation id="439817266247065935">ອຸປະກອນຂອງທ່ານປິດເຄື່ອງຢ່າງບໍ່ຖືກຕ້ອງ. ຣີສະຕາດ Linux ເພື່ອໃຊ້ແອັບ Linux.</translation>
 <translation id="4400367121200150367">ເວັບໄຊທີ່ບໍ່ບັນທຶກລະຫັດຜ່ານໄວ້ຈະປາກົດຢູ່ບ່ອນນີ້</translation>
 <translation id="4400632832271803360">ກົດປຸ່ມຕົວເປີດໃຊ້ຄ້າງໄວ້ເພື່ອປ່ຽນພຶດຕິກຳຂອງປຸ່ມແຖວເທິງ</translation>
@@ -5060,6 +5061,7 @@
 <translation id="6651237644330755633">ເຊື່ອຖືໃບຢັ້ງຢືນນີ້ສຳລັບການລະບຸເວັບໄຊ</translation>
 <translation id="6651495917527016072">ຊິ້ງຂໍ້ມູນເຄືອຂ່າຍ Wi-Fi ກັບໂທລະສັບຂອງທ່ານ. <ph name="LINK_BEGIN" />ສຶກສາເພີ່ມເຕີມ<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">ຮອງຮັບການລວມ <ph name="MS_AD_NAME" /> ຂອງ Chrome ໃນລະບົບປະຕິບັດການ x86_64 ເທົ່ານັ້ນ. Chromebooks ທີ່ສ້າງຈາກສ່ວນເທິງຂອງ ARM ຫຼື ລະບົບປະຕິບັດການ x86 ບໍ່ຮອງຮັບຟັງຊັນນີ້.</translation>
+<translation id="66537479323396140">ລຶບລ້າງປະຫວັດ ແລະ autocompletion ໃນກ່ອງຊອກຫາ. ບັນຊີ Google ຂອງທ່ານອາດມີປະຫວັດການທ່ອງເວັບຮູບແບບອື່ນຢູ່ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">ຕ້ອງການໃຊ້ເຄືອຂ່າຍນີ້</translation>
 <translation id="6655190889273724601">ໂໝດຜູ້​ພັດ​ທະ​ນາ​</translation>
 <translation id="6655458902729017087">ເຊື່ອງ​ບັນ​ຊີ</translation>
@@ -5926,6 +5928,7 @@
 <translation id="7636919061354591437">ຕິດຕັ້ງໃນອຸປະກອນນີ້</translation>
 <translation id="7637593984496473097">ບ່ອນຈັດເກັບຂໍ້ມູນບໍ່ພຽງພໍ</translation>
 <translation id="7638605456503525968">ຜອດອະນຸກຳ</translation>
+<translation id="7639914187072011620">ໂຫຼດການປ່ຽນເສັ້ນທາງ SAML ຈາກເຊີບເວີບໍ່ສຳເລັດ</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> ນຳທ່ານເຂົ້າສູ່ລະບົບເວັບໄຊທີ່ມີສິດໂດຍອັດຕະໂນມັດດ້ວຍລະຫັດຜ່ານທີ່ທ່ານບັນທຶກໄວ້.</translation>
 <translation id="7642778300616172920">ເຊື່ອງເນື້ອຫາທີ່ລະອຽດອ່ອນ</translation>
 <translation id="7643842463591647490">{0,plural, =1{# ໜ້າຈໍເປີດຢູ່}other{# ໜ້າຈໍເປີດຢູ່}}</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index 51d1e371..a1b0649 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -3083,6 +3083,7 @@
 <translation id="4392896746540753732">Redaguoti konfigūracijos failą</translation>
 <translation id="4394049700291259645">Neleisti</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Atidaryti viską}=1{&amp;Atidaryti žymę}one{&amp;Atidaryti viską ({COUNT})}few{&amp;Atidaryti viską ({COUNT})}many{&amp;Atidaryti viską ({COUNT})}other{&amp;Atidaryti viską ({COUNT})}}</translation>
+<translation id="4398131717714042083">Išvaloma istorija ir automatiniai užbaigimai paieškos laukelyje</translation>
 <translation id="439817266247065935">Įrenginys netinkamai išjungtas. Iš naujo paleiskite „Linux“, jei norite naudoti „Linux“ programas.</translation>
 <translation id="4400367121200150367">Svetainės, kuriose niekada nesaugomi slaptažodžiai, bus rodomos čia</translation>
 <translation id="4400632832271803360">Laikykite paspaustą paleidimo priemonės klavišą, kad perjungtumėte viršutinės eilutės klavišų veikimą</translation>
@@ -5066,6 +5067,7 @@
 <translation id="6651237644330755633">Pasitikėti šiuo sertifikatu nustatant svetaines</translation>
 <translation id="6651495917527016072">Sinchronizuokite „Wi-Fi“ tinklus su telefonu. <ph name="LINK_BEGIN" />Sužinokite daugiau<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">„Chrome“ <ph name="MS_AD_NAME" /> integravimas palaikomas tik x86_64 platformose. „Chromebook“, kurie sukurti veikti su ARM arba x86 platforma, šios funkcijos nepalaiko.</translation>
+<translation id="66537479323396140">Išvaloma istorija ir automatiniai užbaigimai paieškos laukelyje. „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="6654509035557065241">Rinktis tinklą</translation>
 <translation id="6655190889273724601">Kūrėjo režimas</translation>
 <translation id="6655458902729017087">Slėpti paskyras</translation>
@@ -5932,6 +5934,7 @@
 <translation id="7636919061354591437">Įdiegti šiame įrenginyje</translation>
 <translation id="7637593984496473097">Nepakanka vietos diske</translation>
 <translation id="7638605456503525968">Nuoseklieji prievadai</translation>
+<translation id="7639914187072011620">Nepavyko gauti SAML peradresavimo URL iš serverio</translation>
 <translation id="764017888128728">„<ph name="PASSWORD_MANAGER_BRAND" />“ automatiškai prijungs jus tinkamose svetainėse naudodama išsaugotus slaptažodžius.</translation>
 <translation id="7642778300616172920">Slėpti neskelbtiną turinį</translation>
 <translation id="7643842463591647490">{0,plural, =1{# atidarytas langas}one{# atidarytas langas}few{# atidaryti langai}many{# atidaryto lango}other{# atidarytų langų}}</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index c99e7740..070c6e6 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -3082,6 +3082,7 @@
 <translation id="4392896746540753732">Rediģēt konfigurācijas failu</translation>
 <translation id="4394049700291259645">Atspējot</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Atvērt visas}=1{&amp;Atvērt grāmatzīmi}zero{&amp;Atvērt visas ({COUNT})}one{&amp;Atvērt visas ({COUNT})}other{&amp;Atvērt visas ({COUNT})}}</translation>
+<translation id="4398131717714042083">Notīra vēsturi un automātiskās pabeigšanas datus meklēšanas lodziņā.</translation>
 <translation id="439817266247065935">Ierīce netika pareizi izslēgta. Restartējiet operētājsistēmu Linux, lai izmantotu Linux lietotnes.</translation>
 <translation id="4400367121200150367">Šeit tiks parādītas vietnes, kurās nekad netiek saglabātas paroles.</translation>
 <translation id="4400632832271803360">Turiet palaišanas programmas taustiņu, lai pārslēgtu augšējās rindas taustiņu funkcijas.</translation>
@@ -5064,6 +5065,7 @@
 <translation id="6651237644330755633">Uzticēties šim sertifikātam, lai identificētu vietnes</translation>
 <translation id="6651495917527016072">Sinhronizējiet Wi-Fi tīklus ar savu tālruni. <ph name="LINK_BEGIN" />Uzzināt vairāk<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> integrācija tiek atbalstīta tikai x86_64 platformās. Chromebook datoros, kas veidoti, izmantojot ARM vai x86 platformu, šī funkcionalitāte netiek atbalstīta.</translation>
+<translation id="66537479323396140">Notīra vēsturi un automātiskās pabeigšanas datus meklēšanas lodziņā. Jūsu Google kontam var būt cita veida pārlūkošanas vēstures dati vietnē <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Vēlamā tīkla iestatīšana</translation>
 <translation id="6655190889273724601">Izstrādātāja režīms</translation>
 <translation id="6655458902729017087">Slēpt kontus</translation>
@@ -5930,6 +5932,7 @@
 <translation id="7636919061354591437">Instalēt šajā ierīcē</translation>
 <translation id="7637593984496473097">Diskā nepietiek vietas.</translation>
 <translation id="7638605456503525968">Seriālie porti</translation>
+<translation id="7639914187072011620">Neizdevās izgūt SAML novirzīšanas URL no servera.</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> automātiski pierakstās piemērotajās vietnēs, izmantojot jūsu saglabātās paroles.</translation>
 <translation id="7642778300616172920">Paslēpt sensitīvu saturu</translation>
 <translation id="7643842463591647490">{0,plural, =1{# atvērts logs}zero{# atvērti logi}one{# atvērts logs}other{# atvērti logi}}</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb
index 8e0421b1..d9d8707 100644
--- a/chrome/app/resources/generated_resources_mk.xtb
+++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -3081,6 +3081,7 @@
 <translation id="4392896746540753732">Изменете ја датотеката за конфигурација</translation>
 <translation id="4394049700291259645">Оневозможи</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Отвори ги сите}=1{&amp;Отвори го обележувачот}one{&amp;Отвори ги сите ({COUNT})}other{&amp;Отвори ги сите ({COUNT})}}</translation>
+<translation id="4398131717714042083">Ја брише историјата и автоматското довршување во полето за пребарување</translation>
 <translation id="439817266247065935">Уредот не се исклучи правилно. Рестартирајте го Linux за да користите апликации на Linux.</translation>
 <translation id="4400367121200150367">Локациите што никогаш не запомнуваат лозинки ќе се појават тука</translation>
 <translation id="4400632832271803360">Држете го копчето „Стартер“ за да го промените однесувањето на копчињата во најгорниот ред</translation>
@@ -5063,6 +5064,7 @@
 <translation id="6651237644330755633">Имајте доверба во сертификатов за идентификување на веб-сајтовите</translation>
 <translation id="6651495917527016072">Синхронизирајте ги Wi-Fi мрежите со телефонот. <ph name="LINK_BEGIN" />Дознајте повеќе<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Интеграцијата на Chrome <ph name="MS_AD_NAME" /> е поддржана само на платформи x86_64. Оваа функционалност не е поддржана на уреди Chromebook изградени на платформи ARM или x86.</translation>
+<translation id="66537479323396140">Ја брише историјата и автоматското довршување во полето за пребарување. Вашата сметка на Google можеби има други видови историја на прелистување на <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Се претпочита мрежа</translation>
 <translation id="6655190889273724601">Режим на програмер</translation>
 <translation id="6655458902729017087">Сокриј сметки</translation>
@@ -5929,6 +5931,7 @@
 <translation id="7636919061354591437">Инсталирај на уредов</translation>
 <translation id="7637593984496473097">Нема доволно простор на дискот</translation>
 <translation id="7638605456503525968">Сериски порти</translation>
+<translation id="7639914187072011620">Не можеше да се вчита URL за пренасочување на SAML од серверот</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> автоматски ве најавува на соодветни страници со лозинките што сте ги зачувале.</translation>
 <translation id="7642778300616172920">Сокривај ги чувствителните содржини</translation>
 <translation id="7643842463591647490">{0,plural, =1{# oтворен прозорец}one{# отворен прозорец}other{# отворени прозорци}}</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb
index 98c6605..5fc76e7 100644
--- a/chrome/app/resources/generated_resources_mn.xtb
+++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -3645,7 +3645,6 @@
 <translation id="5051836348807686060">Таны сонгосон хэл дээр зөв бичгийн дүрмийн алдаа шалгагч нь дэмжигдээгүй байна</translation>
 <translation id="5052499409147950210">Сайтыг засах</translation>
 <translation id="5053962746715621840">Google Дурангаар зураг хайх</translation>
-<translation id="5056950756634735043">Агуулагчтай холбогдож байна</translation>
 <translation id="5057110919553308744">Та өргөтгөл гэснийг товших үед</translation>
 <translation id="5057403786441168405">Нэвтэрсэн бүртгэлүүдээ удирдана уу. Chrome болон Google Play-н вебсайт, апп болон өргөтгөл нь зөвшөөрлөөс хамаарч, таны хэрэглээг өөрчлөхийн тулд эдгээр бүртгэлийг ашиглаж болзошгүй. <ph name="LINK_BEGIN" />Нэмэлт мэдээлэл авах<ph name="LINK_END" /></translation>
 <translation id="5059241099014281248">Нэвтрэхийг хязгаарлах</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb
index 09a8428..e51b659 100644
--- a/chrome/app/resources/generated_resources_mr.xtb
+++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -752,6 +752,7 @@
 <translation id="1794791083288629568">या समस्येचे निराकरण करण्यात आम्हाला मदत करण्यासाठी अभिप्राय पाठवा.</translation>
 <translation id="1795214765651529549">क्लासिक वापरा</translation>
 <translation id="1799071797295057738">"<ph name="EXTENSION_NAME" />" एक्स्टेंशन आपोआप बंद केले.</translation>
+<translation id="1800973090344019061"><ph name="APP_NAME" /> एक्स्टेंशनला तुमच्या स्क्रीनचा आशय शेअर करायचा आहे.</translation>
 <translation id="1802624026913571222">कव्हर बंद केल्यावर स्लीप मोड ऑन करा</translation>
 <translation id="1802687198411089702">पेज प्रतिसाद देत नाही. तुम्ही वाट पाहू शकता किंवा बाहेर पडू शकता.</translation>
 <translation id="1803531841600994172">यामध्ये भाषांतर करण्यासाठीची भाषा</translation>
@@ -1351,6 +1352,7 @@
 <translation id="2464089476039395325">HTTP प्रॉक्सी</translation>
 <translation id="2465237718053447668">तुम्ही <ph name="DOMAIN" /> साठी आता वाय-फायशी कनेक्ट करणे आणि अपडेट डाउनलोड करणे आवश्यक आहे. किंवा मर्यादित कनेक्शनमधून डाउनलोड करा (शुल्क लागू शकते).</translation>
 <translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> नेटवर्क, बंद आहे</translation>
+<translation id="2467755475704469005">कोणतेही डिव्हाइस डिटेक्ट केले नाही. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation>
 <translation id="2468178265280335214">टचपॅड स्क्रोल अ‍ॅक्सिलरेशन</translation>
 <translation id="2468205691404969808">जरी तुम्ही त्या पेजना भेट देत नसलात तरी, तुमची प्राधान्ये लक्षात ठेवण्यासाठी कुकीजचा वापर करते</translation>
 <translation id="2468402215065996499">तामागोची</translation>
@@ -2379,6 +2381,7 @@
 <translation id="3608576286259426129">वापरकर्ता इमेज पूर्वावलोकन</translation>
 <translation id="3610369246614755442">डॉक फॅनला सेवा हव्या आहेत</translation>
 <translation id="361106536627977100">फ्लॅश डेटा</translation>
+<translation id="3611655097742243705">आणखी अ‍ॅप्स शोधण्यासाठी Play Store ला भेट द्या</translation>
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; द्वारे डाउनलोड केले</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> दर्शवा</translation>
 <translation id="3613422051106148727">&amp;नवीन टॅबमध्ये उघडा</translation>
@@ -2714,6 +2717,7 @@
 <translation id="3943494825379372497">अ‍ॅप्स आणि पेज रिस्टोअर करायची का?</translation>
 <translation id="3943582379552582368">&amp;मागील</translation>
 <translation id="3943857333388298514">पेस्ट करा</translation>
+<translation id="3945513714196326460">संक्षिप्त नाव वापरून पहा</translation>
 <translation id="3948116654032448504">इमेज <ph name="SEARCH_ENGINE" /> वर शोधा</translation>
 <translation id="3948507072814225786"><ph name="ORIGIN" /> खालील फोल्डरमधील फाइल संपादित करू शकते</translation>
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
@@ -3097,6 +3101,7 @@
 <translation id="4415245286584082850">कोणतीही डिव्हाइस सापडली नाहीत. नवीन टॅबमध्ये मदत केंद्र लेख उघडा.</translation>
 <translation id="4415276339145661267">तुमचे Google खाते व्यवस्थापित करा</translation>
 <translation id="4415748029120993980">SECG एल्लिपटिक कर्व्ह secp384r1 (aka NIST P-384)</translation>
+<translation id="4416450511678320850">या आशयासाठी कोणतीही अ‍ॅप्स उपलब्ध नाहीत</translation>
 <translation id="4416582610654027550">योग्य URL टाइप करा</translation>
 <translation id="4419409365248380979">कुकी सेट करण्यासाठी <ph name="HOST" />ना नेहमी परवानगी द्या </translation>
 <translation id="4421932782753506458">Fluffy</translation>
@@ -3389,6 +3394,7 @@
 <translation id="473936925429402449">निवडलेले, <ph name="TOTAL_ELEMENTS" /> पैकी <ph name="CURRENT_ELEMENT" /> अतिरिक्त आशय</translation>
 <translation id="4739639199548674512">तिकिटे</translation>
 <translation id="4742334355511750246">इमेज दाखवण्याची अनुमती नाही</translation>
+<translation id="4742970037960872810">हायलाइट काढून टाका</translation>
 <translation id="4743260470722568160"><ph name="BEGIN_LINK" />ॲप्लिकेशन कशी अपडेट करायची ते शिका<ph name="END_LINK" /></translation>
 <translation id="4744981231093950366">{NUM_TABS,plural, =1{साइट अनम्यूट करा}other{साइट अनम्यूट करा}}</translation>
 <translation id="4746351372139058112">Messages</translation>
@@ -4598,6 +4604,7 @@
 <translation id="6136114942382973861">डाउनलोड बार बंद करा</translation>
 <translation id="6136287496450963112">तुमची सिक्युरिटी की पिन वापरून संरक्षित केलेली नाही. फिंगरप्रिंट व्यवस्थापित करण्यासाठी, आधी पिन तयार करा.</translation>
 <translation id="6138680304137685902">SHA-384 सह X9.62 ECDSA स्वाक्षरी</translation>
+<translation id="6138774640412545950"><ph name="APP_NAME" /> एक्स्टेंशनला तुमच्या स्क्रीनचा आशय <ph name="TARGET_NAME" /> सोबत शेअर करायचा आहे.</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, कोणतेही नेटवर्क नाही</translation>
 <translation id="6141988275892716286">डाउनलोड करण्याचे निश्चित करा</translation>
 <translation id="6143186082490678276">मदत मिळवा</translation>
@@ -5387,6 +5394,7 @@
 <translation id="7009709314043432820"><ph name="APP_NAME" /> तुमचा कॅमेरा वापरत आहे</translation>
 <translation id="701080569351381435">स्रोत पहा</translation>
 <translation id="7014174261166285193">स्थापना अयशस्वी.</translation>
+<translation id="7014480873681694324">हायलाइट काढून टाका</translation>
 <translation id="7017004637493394352">पुन्हा "Ok Google" म्हणा</translation>
 <translation id="7017219178341817193">एक नवीन पृष्ठ जोडा</translation>
 <translation id="7017354871202642555">विंडो सेट केल्यानंतर मोड सेट करणे शक्य नाही.</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index 774e552..3e17118 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">Edit fail konfigurasi</translation>
 <translation id="4394049700291259645">Lumpuhkan</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Buka semua}=1{&amp;Buka penanda halaman}other{&amp;Buka semua ({COUNT})}}</translation>
+<translation id="4398131717714042083">Mengosongkan sejarah dan pelengkapan automatik dalam kotak carian</translation>
 <translation id="439817266247065935">Peranti anda tidak ditutup dengan betul. Mulakan semula Linux untuk menggunakan apl Linux.</translation>
 <translation id="4400367121200150367">Tapak yang langsung tidak menyimpan kata laluan anda kelihatan di sini</translation>
 <translation id="4400632832271803360">Tekan dan tahan kekunci Launcher untuk menukar gelagat kekunci di baris atas</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">Percayakan sijil ini untuk mengenal pasti tapak web</translation>
 <translation id="6651495917527016072">Segerakkan rangkaian Wi-Fi dengan telefon anda. <ph name="LINK_BEGIN" />Ketahui lebih lanjut<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Penyepaduan <ph name="MS_AD_NAME" /> Chrome hanya disokong pada platform x86_64. Chromebook yang dibina di atas platform ARM atau x86 tidak menyokong fungsian ini.</translation>
+<translation id="66537479323396140">Mengosongkan sejarah dan pelengkapan automatik dalam kotak carian. Akaun Google anda mungkin mempunyai sejarah penyemakan imbas dalam bentuk lain di <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Utamakan rangkaian</translation>
 <translation id="6655190889273724601">Mod pembangun</translation>
 <translation id="6655458902729017087">Sembunyikan Akaun</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">Pasang pada Peranti ini</translation>
 <translation id="7637593984496473097">Ruang cakera tidak mencukupi</translation>
 <translation id="7638605456503525968">Port siri</translation>
+<translation id="7639914187072011620">Gagal mengambil URL ubah hala SAML daripada pelayan</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> melog masuk anda secara automatik ke tapak web yang layak menggunakan kata laluan yang disimpan.</translation>
 <translation id="7642778300616172920">Sembunyikan kandungan sensitif</translation>
 <translation id="7643842463591647490">{0,plural, =1{# tetingkap terbuka}other{# tetingkap terbuka}}</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb
index 651e0ad..67a79e7 100644
--- a/chrome/app/resources/generated_resources_my.xtb
+++ b/chrome/app/resources/generated_resources_my.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">စီစဉ်သတ်မှတ်မှုဖိုင်ကို တည်းဖြတ်ပါ</translation>
 <translation id="4394049700291259645">ပိတ်ထားရန်</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{အားလုံးကို &amp;ဖွင့်ရန်}=1{လိပ်စာကို &amp;ဖွင့်ရန်}other{({COUNT}) ခုလုံးကို &amp;ဖွင့်ရန်}}</translation>
+<translation id="4398131717714042083">ရှာဖွေစာလုံးဖြည့်ကွက်လပ်ရှိ မှတ်တမ်းနှင့် အလိုအလျောက် ဖြည့်ပေးခြင်းများကို ရှင်းပေးသည်</translation>
 <translation id="439817266247065935">သင့်စက်ကို မှန်ကန်စွာ မပိတ်ခဲ့ပါ။ Linux အက်ပ်များကို အသုံးပြုရန် Linux ကို ပြန်လည်စတင်ပါ။</translation>
 <translation id="4400367121200150367">စကားဝှက်များကို မည်သည့်အခါမျှ သိမ်းဆည်းခြင်း မရှိသည့် ဝဘ်ဆိုက်များကို ဤနေရာတွင် တွေ့ရပါမည်</translation>
 <translation id="4400632832271803360">အပေါ်ဆုံးအတန်း ခလုတ်များ၏ လုပ်ဆောင်ချက်ကိုပြောင်းရန် Launcher ခလုတ်ကို ဖိထားပါ</translation>
@@ -5060,6 +5061,7 @@
 <translation id="6651237644330755633">ဝဘ်ဆိုက်များ၏ အထောက်အထားအဖြစ် ဤအသိအမှတ်ပြုလက်မှတ်များကို ယုံကြည်ပါ</translation>
 <translation id="6651495917527016072">သင့်ဖုန်းဖြင့် Wi-Fi ကွန်ရက်များကို စင့်ခ်လုပ်နိုင်သည်။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> ပေါင်းစည်းခြင်းကို x86_64 စနစ်များတွင်သာ ပံ့ပိုးပါသည်။ ARM သို့ x86 စနစ်များအပေါ်တွင် တည်ဆောက်ထားသော Chromebook များတွင် ဤလုပ်ဆောင်ချက်ကို ပံ့ပိုးမထားပါ။</translation>
+<translation id="66537479323396140">ရှာဖွေစာလုံးဖြည့်ကွက်လပ်ရှိ မှတ်တမ်းနှင့် အလိုအလျောက် ဖြည့်ပေးခြင်းများကို ရှင်းပေးသည်။ သင့် Google Account သည် <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> တွင် အခြားပုံစံဖြင့် ကြည့်ရှုခြင်းမှတ်တမ်းများ ရှိနေနိုင်သည်။</translation>
 <translation id="6654509035557065241">ဦးစားပေး ကွန်ရက်</translation>
 <translation id="6655190889273724601">ပြုစုသူ မုဒ်</translation>
 <translation id="6655458902729017087">အကောင့်များ ဝှက်မည်</translation>
@@ -5926,6 +5928,7 @@
 <translation id="7636919061354591437">ဤ' စက်ပစ္စည်း' တွင် ထည့်သွင်းရန်</translation>
 <translation id="7637593984496473097">သိုလှောင်ခန်းနေရာ မလုံလောက်ပါ</translation>
 <translation id="7638605456503525968">အစဉ်လိုက်ပို့တ်များ</translation>
+<translation id="7639914187072011620">ဆာဗာမှ SAML တစ်ဆင့်ပြန်ညွှန်ပြသော URL ကို မရယူနိုင်ပါ</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> သည်သင်သိမ်းဆည်းထားသည့် စကားဝှက်များဖြင့် အရည်အချင်းပြည့်မီသည့်ဆိုက်များသို့ အလိုအလျောက် လက်မှတ်ထိုးဝင်ပေးပါသည်။</translation>
 <translation id="7642778300616172920">အလွန်အရေးကြီးသော အကြောင်းအရာကို ဝှက်ထားရန်</translation>
 <translation id="7643842463591647490">{0,plural, =1{ဖွင့်ထားသောဝင်းဒိုး # ခု}other{ဖွင့်ထားသောဝင်းဒိုး # ခု}}</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index f0fc1c2..6817c33 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -3079,6 +3079,7 @@
 <translation id="4392896746540753732">Het configuratiebestand bewerken</translation>
 <translation id="4394049700291259645">Uitzetten</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{Alles &amp;openen}=1{Bookmark &amp;openen}other{Alles &amp;openen ({COUNT})}}</translation>
+<translation id="4398131717714042083">Hiermee wis je de geschiedenis en automatische aanvullingen in het zoekvak</translation>
 <translation id="439817266247065935">Je apparaat is niet goed afgesloten. Start Linux opnieuw op om Linux-apps te gebruiken.</translation>
 <translation id="4400367121200150367">Hier zie je sites die nooit wachtwoorden opslaan</translation>
 <translation id="4400632832271803360">Houd de Launcher-toets ingedrukt om het gedrag van de toetsen in de bovenste rij om te schakelen</translation>
@@ -5061,6 +5062,7 @@
 <translation id="6651237644330755633">Dit certificaat vertrouwen voor het identificeren van websites</translation>
 <translation id="6651495917527016072">Wifi-netwerken synchroniseren met je telefoon. <ph name="LINK_BEGIN" />Meer informatie<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" />-integratie wordt alleen ondersteund op x86_64-platforms. Chromebooks die zijn gebouwd op een ARM- of x86-platform bieden geen ondersteuning voor deze functionaliteit.</translation>
+<translation id="66537479323396140">Hiermee wis je de geschiedenis en automatische aanvullingen in het zoekvak. Er kunnen andere vormen van browsegeschiedenis zijn opgeslagen voor je Google-account op <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Standaardnetwerk kiezen</translation>
 <translation id="6655190889273724601">Ontwikkelaarmodus</translation>
 <translation id="6655458902729017087">Accounts verbergen</translation>
@@ -5927,6 +5929,7 @@
 <translation id="7636919061354591437">Installeren op dit apparaat</translation>
 <translation id="7637593984496473097">Onvoldoende schijfruimte</translation>
 <translation id="7638605456503525968">Seriële poorten</translation>
+<translation id="7639914187072011620">Kan de SAML-omleidings-URL niet ophalen van de server</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> logt je automatisch in bij geschikte sites met wachtwoorden die je hebt opgeslagen.</translation>
 <translation id="7642778300616172920">Gevoelige content verbergen</translation>
 <translation id="7643842463591647490">{0,plural, =1{# geopend venster}other{# geopende vensters}}</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index 1371002..5bdd76e5 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -3075,6 +3075,7 @@
 <translation id="4392896746540753732">Rediger konfigurasjonsfilen</translation>
 <translation id="4394049700291259645">Slå av</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Åpne alle}=1{&amp;Åpne bokmerket}other{&amp;Åpne alle ({COUNT})}}</translation>
+<translation id="4398131717714042083">Tømmer loggen og fjerner autofullføringer i søkefeltet</translation>
 <translation id="439817266247065935">Enheten ble ikke avsluttet ordentlig. Start Linux på nytt for å bruke Linux-apper.</translation>
 <translation id="4400367121200150367">Nettsteder som aldri lagrer passord, vises her</translation>
 <translation id="4400632832271803360">Hold Appoversikt-tasten inne for å endre funksjonene for tastene på øverste rad</translation>
@@ -5057,6 +5058,7 @@
 <translation id="6651237644330755633">Stol på dette sertifikatet for identifisering av nettsteder.</translation>
 <translation id="6651495917527016072">Synkroniser Wi-Fi-nettverk med telefonen din. <ph name="LINK_BEGIN" />Finn ut mer<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" />-integrering støttes bare på x86_64-plattformer. Chromebook-enheter som er bygget på en ARM- eller x86-plattform, støtter ikke denne funksjonaliteten.</translation>
+<translation id="66537479323396140">Tømmer loggen og fjerner autofullføringer i søkefeltet. Det kan hende Google-kontoen din har andre typer nettleserlogger på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Foretrekk nettverk</translation>
 <translation id="6655190889273724601">Utviklermodus</translation>
 <translation id="6655458902729017087">Skjul kontoer</translation>
@@ -5923,6 +5925,7 @@
 <translation id="7636919061354591437">Installer på denne enheten</translation>
 <translation id="7637593984496473097">Det er for lite diskplass</translation>
 <translation id="7638605456503525968">Serielle porter</translation>
+<translation id="7639914187072011620">Kunne ikke hente SAML-viderekoblingsadressen fra tjeneren</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> logger deg på kvalifiserte nettsteder automatisk med passord du har lagret.</translation>
 <translation id="7642778300616172920">Skjul sensitivt innhold</translation>
 <translation id="7643842463591647490">{0,plural, =1{# åpent vindu}other{# åpne vinduer}}</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb
index 83a6e78..7380cf3 100644
--- a/chrome/app/resources/generated_resources_or.xtb
+++ b/chrome/app/resources/generated_resources_or.xtb
@@ -749,6 +749,7 @@
 <translation id="1794791083288629568">ଏହି ସମସ୍ୟାକୁ ସମାଧାନ କରିବାରେ ଆମକୁ ସାହାଯ୍ୟ କରିବାକୁ ମତାମତ ପଠାନ୍ତୁ।</translation>
 <translation id="1795214765651529549">କ୍ଲାସିକ୍ ବ୍ୟବହାର କରନ୍ତୁ</translation>
 <translation id="1799071797295057738">"<ph name="EXTENSION_NAME" />" ଏକ୍ସଟେନ୍‌ସନ୍‌ ସ୍ୱଚାଳିତ ଭାବେ ଅକ୍ଷମ ହୋ‍ଇଗଲା।</translation>
+<translation id="1800973090344019061">"<ph name="APP_NAME" />" ଏକ୍ସଟେନସନ୍ ଆପଣଙ୍କ ସ୍କ୍ରିନର ବିଷୟବସ୍ତୁକୁ ସେୟାର୍ କରିବାକୁ ଚାହୁଁଛି।</translation>
 <translation id="1802624026913571222">କଭର୍ ବନ୍ଦ ହେବା ପରେ ସ୍ଲିପ୍ ମୋଡ୍ ଚାଲୁ କରନ୍ତୁ</translation>
 <translation id="1802687198411089702">ପୃଷ୍ଠାଟି କାମ କରୁନାହିଁ। ଆପଣ ଏଥିପାଇଁ ଅପେକ୍ଷା କରିପାରିବେ କିମ୍ବା ପ୍ରସ୍ଥାନ କରିପାରିବେ।</translation>
 <translation id="1803531841600994172">ଏହି ଭାଷାକୁ ଅନୁବାଦ କରାଯିବ</translation>
@@ -1345,6 +1346,7 @@
 <translation id="2464089476039395325">HTTP ପ୍ରୋକ୍ସି</translation>
 <translation id="2465237718053447668"><ph name="DOMAIN" /> ଆପଣଙ୍କୁ ବର୍ତ୍ତମାନ ୱାଇ-ଫାଇ ସହ ସଂଯୋଗ କରି ଏକ ଅପଡେଟକୁ ଡାଉନଲୋଡ୍ କରିବା ପାଇଁ ଆବଶ୍ୟକ କରୁଛି। କିମ୍ବା, ଏକ ମିଟର ହୋଇଥିବା ସଂଯୋଗରୁ ଡାଉନଲୋଡ୍ କରନ୍ତୁ (ଶୁଳ୍କ ଲାଗୁ ହୋଇପାରେ)।</translation>
 <translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> ନେଟ୍‍ୱାର୍କ, ବନ୍ଦ ଅଛି</translation>
+<translation id="2467755475704469005">କୌଣସି ଡିଭାଇସ୍ ଚିହ୍ନଟ କରାଯାଇନାହିଁ। <ph name="BEGIN_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK" /></translation>
 <translation id="2468178265280335214">ଟଚପ୍ୟାଡ୍ ସ୍କ୍ରୋଲ୍ ଆକ୍ସଲରେସନ୍</translation>
 <translation id="2468205691404969808">ଯଦିଓ, ଆପଣ ସେହି ପୃଷ୍ଠାଗୁଡ଼ିକୁ ଯାଆନ୍ତି ନାହିଁ, ତଥାପି ଆପଣଙ୍କର ପ୍ରାଥମିକତାକୁ ମନେରଖିବାକୁ ଏହା କୁକୀ ବ୍ୟବହାର କରେ</translation>
 <translation id="2468402215065996499">ଟାମାଗୋଚୀ</translation>
@@ -2373,6 +2375,7 @@
 <translation id="3608576286259426129">ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ଛବିର ପୂର୍ବାବଲୋକନ</translation>
 <translation id="3610369246614755442">ଡକ୍ ଫ୍ୟାନ୍‌କୁ ସେବାର ଆବଶ୍ୟକତା ଅଛି</translation>
 <translation id="361106536627977100">ଫ୍ଲାସ୍ ଡାଟା</translation>
+<translation id="3611655097742243705">ଅଧିକ ଆପ୍ ଖୋଜିବା ପାଇଁ Play Storeକୁ ଭିଜିଟ୍ କରନ୍ତୁ</translation>
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; ଦ୍ଵାରା ଡାଉନଲୋଡ୍ କରାଯାଇଛି</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> ଦେଖାନ୍ତୁ</translation>
 <translation id="3613422051106148727">ନୂଆ ଟାବ୍ &amp;ଖୋଲନ୍ତୁ</translation>
@@ -2707,6 +2710,7 @@
 <translation id="3943494825379372497">ଆପ୍ ଓ ପୃଷ୍ଠାଗୁଡ଼ିକୁ ରିଷ୍ଟୋର୍ କରିବେ?</translation>
 <translation id="3943582379552582368">&amp;ପଛକୁ</translation>
 <translation id="3943857333388298514">ପେଷ୍ଟ କରନ୍ତୁ</translation>
+<translation id="3945513714196326460">ଏକ ଛୋଟ ନାମ ବ୍ୟବହାର କରି ଦେଖନ୍ତୁ</translation>
 <translation id="3948116654032448504">&amp;ଛବି ପାଇଁ <ph name="SEARCH_ENGINE" /> ଖୋଜନ୍ତୁ</translation>
 <translation id="3948507072814225786">ନିମ୍ନୋକ୍ତ ଫୋଲ୍ଡର୍‌ଗୁଡ଼ିକରେ <ph name="ORIGIN" /> ଫାଇଲ୍‌ଗୁଡ଼ିକୁ ଏଡିଟ୍ କରିପାରିବ</translation>
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
@@ -3092,6 +3096,7 @@
 <translation id="4415245286584082850">କୌଣସି ଡିଭାଇସ୍ ମିଳିଲା ନାହିଁ। ଏକ ନୂଆ ଟାବ୍‌ରେ ଏକ ସହାୟତା କେନ୍ଦ୍ର ପ୍ରବନ୍ଧ ଖୋଲନ୍ତୁ।</translation>
 <translation id="4415276339145661267">ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟ ପରିଚାଳନା କରନ୍ତୁ</translation>
 <translation id="4415748029120993980">SECG ଅଣ୍ଡାକାର ବକ୍ର secp384r1 (aka NIST P-384)</translation>
+<translation id="4416450511678320850">ଏହି ବିଷୟବସ୍ତୁ ପାଇଁ କୌଣସି ଆପ୍ ଉପଲବ୍ଧ ନାହିଁ</translation>
 <translation id="4416582610654027550">ଏକ ଵୈଧ URL ଟାଇପ୍‌ କରନ୍ତୁ</translation>
 <translation id="4419409365248380979">ସର୍ବଦା <ph name="HOST" />କୁ କୁକୀଗୁଡ଼ିକ ସେଟ୍ କରିବା ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ</translation>
 <translation id="4421932782753506458">ଫ୍ଲୁଫି</translation>
@@ -3384,6 +3389,7 @@
 <translation id="473936925429402449">ଚୟନ କରାଯାଇଛି, <ph name="TOTAL_ELEMENTS" />ଟିରୁ <ph name="CURRENT_ELEMENT" />ଟି ଅତିରିକ୍ତ ବିଷୟବସ୍ତୁ</translation>
 <translation id="4739639199548674512">ଟିକେଟ୍‌ଗୁଡ଼ିକ</translation>
 <translation id="4742334355511750246">ଛବିଗୁଡ଼ିକୁ ଦେଖାଇବାକୁ ଅନୁମତି ଦିଆଯାଇନାହିଁ</translation>
+<translation id="4742970037960872810">ହାଇଲାଇଟ୍ କାଢ଼ି ଦିଅନ୍ତୁ</translation>
 <translation id="4743260470722568160"><ph name="BEGIN_LINK" /> ଏହା ଜାଣନ୍ତୁ ଯେ କିପରି ଆପ୍ଲିକେସନ୍‌ଗୁଡ଼ିକୁ ଅପ୍‌ଡେଟ୍ କରିବେ<ph name="END_LINK" /></translation>
 <translation id="4744981231093950366">{NUM_TABS,plural, =1{ସାଇଟ୍ ଅନ୍‌ମ୍ୟୁଟ୍ କରନ୍ତୁ}other{ସାଇଟ୍‌ଗୁଡ଼ିକୁ ଅନ୍‌ମ୍ୟୁଟ୍ କରନ୍ତୁ}}</translation>
 <translation id="4746351372139058112">Messages</translation>
@@ -4592,6 +4598,7 @@
 <translation id="6136114942382973861">ଡାଉନ୍‌ଲୋଡ୍ ବାର୍‍କୁ ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="6136287496450963112">ଆପଣଙ୍କର ସୁରକ୍ଷା କୀ ଏକ PIN ଦ୍ୱାରା ସୁରକ୍ଷିତ ନୁହେଁ। ଟିପଚିହ୍ନଗୁଡ଼ିକୁ ପରିଚାଳନା କରିବା ପାଇଁ ପ୍ରଥମେ ଏକ PIN ତିଆରି କରନ୍ତୁ।</translation>
 <translation id="6138680304137685902">SHA-384 ସହିତ X9.62 ECDSAର ସ୍ଵାକ୍ଷର</translation>
+<translation id="6138774640412545950">"<ph name="APP_NAME" />" ଏକ୍ସଟେନସନ୍ ଆପଣଙ୍କ ସ୍କ୍ରିନର ବିଷୟବସ୍ତୁକୁ <ph name="TARGET_NAME" /> ସହ ସେୟାର୍ କରିବାକୁ ଚାହୁଁଛି।</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, କୌଣସି ନେଟ୍‌ୱାର୍କ ନାହିଁ</translation>
 <translation id="6141988275892716286">ଡାଉନ୍‌ଲୋଡ୍ ସୁନିଶ୍ଚିତ କରନ୍ତୁ</translation>
 <translation id="6143186082490678276">ସାହାଯ୍ୟ ପାଆନ୍ତୁ</translation>
@@ -5383,6 +5390,7 @@
 <translation id="7009709314043432820"><ph name="APP_NAME" /> ଆପଣଙ୍କ କ୍ୟାମେରା ବ୍ୟବହାର କରୁଛି</translation>
 <translation id="701080569351381435">ଉତ୍ସ ଦେଖନ୍ତୁ</translation>
 <translation id="7014174261166285193">ଇନ୍‍ଷ୍ଟଲ୍ କରିହେଲା ନାହିଁ</translation>
+<translation id="7014480873681694324">ହାଇଲାଇଟ୍ କାଢ଼ି ଦିଅନ୍ତୁ</translation>
 <translation id="7017004637493394352">ପୁଣି "Ok Google" କୁହନ୍ତୁ</translation>
 <translation id="7017219178341817193">ଏକ ନୂଆ ପୃଷ୍ଠା ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="7017354871202642555">ୱିଣ୍ଡୋ ସେଟ୍ ହେବା ପରେ ମୋଡ୍ ସେଟ୍ ହୋଇପାରିବ ନାହିଁ।</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index e4fbf6a..a224850 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -3077,6 +3077,7 @@
 <translation id="4392896746540753732">Edytuj plik konfiguracji</translation>
 <translation id="4394049700291259645">Wyłącz</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Otwórz wszystkie}=1{&amp;Otwórz zakładkę}few{&amp;Otwórz wszystkie ({COUNT})}many{&amp;Otwórz wszystkie ({COUNT})}other{&amp;Otwórz wszystkie ({COUNT})}}</translation>
+<translation id="4398131717714042083">Usuwa historię i pamięć autouzupełniania w polu wyszukiwania</translation>
 <translation id="439817266247065935">Twoje urządzenie nie zostało poprawnie zamknięte. Uruchom ponownie Linuksa, aby używać aplikacji w tym systemie.</translation>
 <translation id="4400367121200150367">Tutaj będą wyświetlane strony, które nigdy nie zapisują haseł</translation>
 <translation id="4400632832271803360">Przytrzymaj klawisz programu uruchamiającego, by zmienić działanie klawiszy z górnego rzędu</translation>
@@ -5059,6 +5060,7 @@
 <translation id="6651237644330755633">Ufaj temu certyfikatowi przy identyfikowaniu witryn internetowych</translation>
 <translation id="6651495917527016072">Zsynchronizuj sieci Wi-Fi z telefonem. <ph name="LINK_BEGIN" />Więcej informacji<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Integracja Chrome <ph name="MS_AD_NAME" /> jest obsługiwana tylko na platformach x86_64. Chromebooki zbudowane na platformach ARM lub x86 nie obsługują tej funkcji.</translation>
+<translation id="66537479323396140">Usuwa historię i pamięć autouzupełniania w polu wyszukiwania. 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="6654509035557065241">Ustaw sieć jako preferowaną</translation>
 <translation id="6655190889273724601">Tryb dewelopera</translation>
 <translation id="6655458902729017087">Ukryj konta</translation>
@@ -5925,6 +5927,7 @@
 <translation id="7636919061354591437">Zainstaluj na tym urządzeniu</translation>
 <translation id="7637593984496473097">Za mało miejsca na dysku</translation>
 <translation id="7638605456503525968">Porty szeregowe</translation>
+<translation id="7639914187072011620">Nie udało się pobrać przekierowania SAML z serwera</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> automatycznie loguje Cię w odpowiednich witrynach przy użyciu zapisanych wcześniej haseł.</translation>
 <translation id="7642778300616172920">Ukryj informacje poufne</translation>
 <translation id="7643842463591647490">{0,plural, =1{# otwarte okno}few{# otwarte okna}many{# otwartych okien}other{# otwartego okna}}</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index cdef2f9..dcf30674 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -3082,6 +3082,7 @@
 <translation id="4392896746540753732">Editar o arquivo de configuração</translation>
 <translation id="4394049700291259645">Desativar</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Abrir tudo}=1{&amp;Abrir favorito}one{&amp;Abrir tudo ({COUNT})}other{&amp;Abrir tudo ({COUNT})}}</translation>
+<translation id="4398131717714042083">Apaga o histórico e as sugestões do preenchimento automático na caixa de pesquisa</translation>
 <translation id="439817266247065935">Seu dispositivo não foi desligado corretamente. Reinicie-o para usar apps do Linux.</translation>
 <translation id="4400367121200150367">Sites que nunca salvam senhas serão mostrados aqui</translation>
 <translation id="4400632832271803360">Toque na tecla Iniciador e mantenha-a pressionada para alternar o comportamento das teclas de função</translation>
@@ -5065,6 +5066,7 @@
 <translation id="6651237644330755633">Confiar neste certificado para a identificação de websites.</translation>
 <translation id="6651495917527016072">Sincronizar redes Wi-Fi com seu smartphone. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">A integração de <ph name="MS_AD_NAME" /> ao Chrome só é compatível com plataformas x86_64. Chromebooks criados com ARM ou plataformas x86 não são compatíveis com essa funcionalidade.</translation>
+<translation id="66537479323396140">Apaga o histórico e as sugestões do preenchimento automático na caixa de pesquisa. Sua Conta do Google pode ter outras formas de histórico de navegação em <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Preferir esta rede</translation>
 <translation id="6655190889273724601">Modo do desenvolvedor</translation>
 <translation id="6655458902729017087">Ocultar contas</translation>
@@ -5931,6 +5933,7 @@
 <translation id="7636919061354591437">Instalar neste dispositivo</translation>
 <translation id="7637593984496473097">Não há espaço em disco suficiente</translation>
 <translation id="7638605456503525968">Portas seriais</translation>
+<translation id="7639914187072011620">Falha ao buscar o URL de redirecionamento SAML no servidor</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> conecta você automaticamente a sites qualificados com as senhas que você salvou.</translation>
 <translation id="7642778300616172920">Ocultar conteúdo sensível</translation>
 <translation id="7643842463591647490">{0,plural, =1{# janela aberta}one{# janela aberta}other{# janelas abertas}}</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index d214013..82ad65e 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">Edite o ficheiro de configuração.</translation>
 <translation id="4394049700291259645">Desactivar</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Abrir todos}=1{&amp;Abrir marcador}other{&amp;Abrir todos ({COUNT})}}</translation>
+<translation id="4398131717714042083">Limpa o histórico e os preenchimentos automáticos na caixa de pesquisa</translation>
 <translation id="439817266247065935">O seu dispositivo não foi encerrado corretamente. Reinicie o Linux para utilizar apps do Linux.</translation>
 <translation id="4400367121200150367">Os sites que nunca guardam a palavra-passe aparecem aqui</translation>
 <translation id="4400632832271803360">Prima sem soltar a tecla do iniciador para alterar o comportamento das teclas da linha superior.</translation>
@@ -5063,6 +5064,7 @@
 <translation id="6651237644330755633">Confiar neste certificado para identificar Sites</translation>
 <translation id="6651495917527016072">Sincronize redes Wi-Fi com o seu telemóvel. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">A integração do <ph name="MS_AD_NAME" /> com o Chrome apenas é suportada em plataformas x86_64. Os Chromebooks concebidos com base numa plataforma ARM ou x86 não suportam esta funcionalidade.</translation>
+<translation id="66537479323396140">Limpa o histórico e os preenchimentos automáticos na caixa de pesquisa. A sua Conta Google pode ter outras formas do histórico de navegação em <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Predefinir rede</translation>
 <translation id="6655190889273724601">Modo de programador</translation>
 <translation id="6655458902729017087">Ocultar contas</translation>
@@ -5929,6 +5931,7 @@
 <translation id="7636919061354591437">Instalar neste dispositivo</translation>
 <translation id="7637593984496473097">Não existe espaço suficiente no disco.</translation>
 <translation id="7638605456503525968">Portas de série</translation>
+<translation id="7639914187072011620">Falha ao obter o URL de redirecionamento SAML do servidor</translation>
 <translation id="764017888128728">O <ph name="PASSWORD_MANAGER_BRAND" /> inicia automaticamente sessão em sites elegíveis com as palavras-passe que guardou.</translation>
 <translation id="7642778300616172920">Ocultar conteúdo sensível</translation>
 <translation id="7643842463591647490">{0,plural, =1{# janela aberta}other{# janelas abertas}}</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb
index 29be129..51f3c9c 100644
--- a/chrome/app/resources/generated_resources_ro.xtb
+++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -3081,6 +3081,7 @@
 <translation id="4392896746540753732">Editează fișierul de configurare</translation>
 <translation id="4394049700291259645">Dezactivează</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Deschide-le pe toate}=1{&amp;Deschide marcajul}few{&amp;Deschide-le pe toate ({COUNT})}other{&amp;Deschide-le pe toate ({COUNT})}}</translation>
+<translation id="4398131717714042083">Șterge istoricul și completările automate din caseta de căutare</translation>
 <translation id="439817266247065935">Dispozitivul nu s-a închis corect. Repornește Linux ca să folosești aplicațiile Linux.</translation>
 <translation id="4400367121200150367">Site-urile care nu salvează niciodată parole vor apărea aici</translation>
 <translation id="4400632832271803360">Ține apăsată tasta Lansator pentru a schimba comportamentul tastelor de pe rândul de sus</translation>
@@ -5063,6 +5064,7 @@
 <translation id="6651237644330755633">Ai încredere în acest certificat pentru a identifica site-urile</translation>
 <translation id="6651495917527016072">Sincronizează rețele Wi-Fi cu telefonul tău. <ph name="LINK_BEGIN" />Află mai multe<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Integrarea <ph name="MS_AD_NAME" /> Chrome este acceptată numai pe platformele x86_64. Dispozitivele Chromebook construite pe o platformă ARM sau x86 nu acceptă această funcție.</translation>
+<translation id="66537479323396140">Șterge istoricul și completările automate din caseta de căutare. Contul Google poate să ofere alte forme ale istoricului de navigare la <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Prefer această rețea</translation>
 <translation id="6655190889273724601">Mod pentru dezvoltatori</translation>
 <translation id="6655458902729017087">Ascundeți conturile</translation>
@@ -5929,6 +5931,7 @@
 <translation id="7636919061354591437">Instalează pe acest dispozitiv</translation>
 <translation id="7637593984496473097">Nu există suficient spațiu pe disc</translation>
 <translation id="7638605456503525968">Porturi seriale</translation>
+<translation id="7639914187072011620">Eroare la preluarea redirecționării SAML de la server</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> te conectează automat pe site-urile eligibile cu parolele pe care le-ai salvat.</translation>
 <translation id="7642778300616172920">Ascunde conținutul sensibil</translation>
 <translation id="7643842463591647490">{0,plural, =1{# fereastră deschisă}few{# ferestre deschise}other{# de ferestre deschise}}</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index c61c534..2fd5fcf5 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">Изменение файла конфигурации.</translation>
 <translation id="4394049700291259645">Отключить</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Открыть все}=1{&amp;Открыть закладку}one{&amp;Открыть все ({COUNT})}few{&amp;Открыть все ({COUNT})}many{&amp;Открыть все ({COUNT})}other{&amp;Открыть все ({COUNT})}}</translation>
+<translation id="4398131717714042083">Удаление истории и вариантов автозаполнения в окне поиска.</translation>
 <translation id="439817266247065935">Работа устройства была завершена неправильно. Чтобы использовать приложения для Linux, перезагрузите эту операционную систему.</translation>
 <translation id="4400367121200150367">Здесь появятся сайты, которые никогда не сохраняют пароли</translation>
 <translation id="4400632832271803360">Чтобы сменить функции клавиш верхнего ряда, удерживайте клавишу Launcher</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">Доверять этому сертификату при идентификации сайтов</translation>
 <translation id="6651495917527016072">Синхронизировать сети Wi-Fi с телефоном. <ph name="LINK_BEGIN" />Подробнее…<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Интеграция Chrome <ph name="MS_AD_NAME" /> доступна только на платформах x86-64. Устройства Chromebook, разработанные на базе ARM или платформе x86, не поддерживают эту функцию.</translation>
+<translation id="66537479323396140">Удаление истории и вариантов автозаполнения в окне поиска. История браузера также может храниться в вашем аккаунте Google: <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Выбрать предпочитаемую сеть</translation>
 <translation id="6655190889273724601">Режим разработчика</translation>
 <translation id="6655458902729017087">Скрыть аккаунты</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">Установить на этом устройстве</translation>
 <translation id="7637593984496473097">Недостаточно свободного места на диске.</translation>
 <translation id="7638605456503525968">Последовательные порты</translation>
+<translation id="7639914187072011620">Не удалось получить URL переадресации SAML с сервера</translation>
 <translation id="764017888128728">С помощью <ph name="PASSWORD_MANAGER_BRAND" /> вы будете автоматически входить на сайты, для которых сохранили пароли.</translation>
 <translation id="7642778300616172920">Скрыть конфиденциальные данные</translation>
 <translation id="7643842463591647490">{0,plural, =1{Открыто # окно}one{Открыто # окно}few{Открыто # окна}many{Открыто # окон}other{Открыто # окна}}</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb
index 32ce500..1947231 100644
--- a/chrome/app/resources/generated_resources_si.xtb
+++ b/chrome/app/resources/generated_resources_si.xtb
@@ -3078,6 +3078,7 @@
 <translation id="4392896746540753732">වින්‍යාස ගොනුව සංස්කරණ කරන්න</translation>
 <translation id="4394049700291259645">අක්‍රිය කරන්න</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;සියල්ල විවෘත කරන්න}=1{&amp;පිටුසන විවෘත කරන්න}one{&amp;සියල්ල විවෘත කරන්න ({COUNT})}other{&amp;සියල්ල විවෘත කරන්න ({COUNT})}}</translation>
+<translation id="4398131717714042083">සෙවීම් කොටුවේ ඉතිහාසය සහ ස්වයං සම්පූර්ණ කිරීම් හිස් කරයි</translation>
 <translation id="439817266247065935">ඔබේ උපාංගය නිසි පරිදි වැසුණේ නැත. ලිනක්ස් යෙදුම් භාවිත කිරීමට ලිනක්ස් යළි අරඹන්න.</translation>
 <translation id="4400367121200150367">කිසි විටක මුරපද නොසුරකින අඩවි මෙහි දිස් වනු ඇත</translation>
 <translation id="4400632832271803360">ඉහළ පේළියේ යතුරු හැසිරීම මාරු කිරීමට දියත්කරණ යතුර අල්ලාගෙන සිටින්න</translation>
@@ -5059,6 +5060,7 @@
 <translation id="6651237644330755633">වෙබ් අඩවි හඳුනා ගැනීම සඳහා මෙම සහතිකය විශ්වාස කරන්න</translation>
 <translation id="6651495917527016072">ඔබේ දුරකථනය සමග Wi-Fi ජාල සමුමුහුර්ත කරන්න <ph name="LINK_BEGIN" />තව දැන ගන්න<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> අනුකලනය කිරීම x86_64 වේදිකාවල පමණක් සහාය දක්වයි. ARM හෝ x86 වේදිකාවක් මත ගොඩනැගුණු Chromebooks මෙම කාර්යයට සහාය නොදක්වයි.</translation>
+<translation id="66537479323396140">සෙවීම් කොටුවේ ඉතිහාසය සහ ස්වයං සම්පූර්ණ කිරීම් හිස් කරයි. ඔබගේ Google ගිණුමට <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> හිදී බ්‍රවුස් කිරීමේ ඉතිහාසයේ වෙනත් ආකාර තිබිය හැකිය.</translation>
 <translation id="6654509035557065241">ජාල මනාපය</translation>
 <translation id="6655190889273724601">සංවර්ධක ප්‍රකාරය</translation>
 <translation id="6655458902729017087">ගිණුම් සඟවන්න</translation>
@@ -5925,6 +5927,7 @@
 <translation id="7636919061354591437">මෙම උපාංගයේ ස්ථාපන කරන්න</translation>
 <translation id="7637593984496473097">ප්‍රමාණවත් තැටි ඉඩක් නැත</translation>
 <translation id="7638605456503525968">අනුක්‍රමික තොට</translation>
+<translation id="7639914187072011620">සේවාදායකයෙන් SAML ප්‍රතියොමු URL යළි ලබා ගැනීමට අපොහොසත් විය</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> විසින් ඔබ සුරැකි මුරපද සමඟ සුදුසු වෙබ් අඩවි වෙත ඔබව ස්වයංක්‍රීයව පුරනය කරවයි.</translation>
 <translation id="7642778300616172920">සංවේදී අන්තර්ගතය සඟවන්න</translation>
 <translation id="7643842463591647490">{0,plural, =1{# විවෘත කවුළුවක්}one{විවෘත කවුළු #ක්}other{විවෘත කවුළු #ක්}}</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index 86a8c30..661d21a4 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -3081,6 +3081,7 @@
 <translation id="4392896746540753732">Úprava konfiguračného súboru</translation>
 <translation id="4394049700291259645">Zakázať</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{Otvoriť všetky}=1{Otvoriť záložku}few{Otvoriť všetky ({COUNT})}many{Otvoriť všetky ({COUNT})}other{Otvoriť všetky ({COUNT})}}</translation>
+<translation id="4398131717714042083">Vymaže históriu a záznamy automatického dopĺňania vo vyhľadávacom poli</translation>
 <translation id="439817266247065935">Zariadenie nebolo správne vypnuté. Ak chcete používať aplikácie pre Linux, reštartujte tento systém.</translation>
 <translation id="4400367121200150367">Tu sa zobrazia weby, ktoré nikdy neukladajú heslo</translation>
 <translation id="4400632832271803360">Pridržaním klávesa spúšťača prepnete správanie klávesov v hornom riadku</translation>
@@ -5063,6 +5064,7 @@
 <translation id="6651237644330755633">Dôverovať tomuto certifikátu na identifikáciu webových stránok</translation>
 <translation id="6651495917527016072">Synchronizujte siete Wi‑Fi so svojím telefónom. <ph name="LINK_BEGIN" />Ďalšie informácie<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Integrácia <ph name="MS_AD_NAME" /> pre Chrome je podporovaná iba v platformách x86_64. Chromebooky zostavené na základe platformy ARM alebo x86 túto funkciu nepodporujú.</translation>
+<translation id="66537479323396140">Vymaže históriu a záznamy automatického dopĺňania vo vyhľadávacom poli. Váš účet Google môže mať ďalšie formy histórie prehliadania na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Preferovať sieť</translation>
 <translation id="6655190889273724601">Režim pre vývojárov</translation>
 <translation id="6655458902729017087">Skryť účty</translation>
@@ -5929,6 +5931,7 @@
 <translation id="7636919061354591437">Nainštalovať v tomto zariadení</translation>
 <translation id="7637593984496473097">Na disku nie je dostatok miesta</translation>
 <translation id="7638605456503525968">Sériové porty</translation>
+<translation id="7639914187072011620">Presmerovanie SAML sa nepodarilo načítať zo servera</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> vás automaticky prihlási na vhodných weboch pomocou hesiel, ktoré ste si uložili.</translation>
 <translation id="7642778300616172920">Skryť citlivý obsah</translation>
 <translation id="7643842463591647490">{0,plural, =1{# otvorené okno}few{# otvorené okná}many{# open windows}other{# otvorených okien}}</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index eec1ec2..8d061fb 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -3083,6 +3083,7 @@
 <translation id="4392896746540753732">Urejanje konfiguracijske datoteke</translation>
 <translation id="4394049700291259645">Onemogoči</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Odpri vse}=1{&amp;Odpri zaznamek}one{&amp;Odpri vse ({COUNT})}two{&amp;Odpri vse ({COUNT})}few{&amp;Odpri vse ({COUNT})}other{&amp;Odpri vse ({COUNT})}}</translation>
+<translation id="4398131717714042083">Izbriše zgodovino in samodokončanja v iskalnem polju.</translation>
 <translation id="439817266247065935">Naprava se ni pravilno zaustavila. Znova zaženite Linux, če želite uporabljati aplikacije za Linux.</translation>
 <translation id="4400367121200150367">Mesta, ki nikoli ne shranjujejo gesel, bodo prikazana tukaj</translation>
 <translation id="4400632832271803360">Če želite spremeniti delovanje tipk v zgornji vrstici, pridržite tipko za zaganjalnik</translation>
@@ -5067,6 +5068,7 @@
 <translation id="6651237644330755633">Zaupaj temu potrdilu za prepoznavanje spletnih mest</translation>
 <translation id="6651495917527016072">Sinhroniziranje omrežij Wi-Fi s telefonom. <ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Integracija Chroma <ph name="MS_AD_NAME" /> je podprta samo v okoljih x86_64. Chromebooki na osnovi okolij ARM ali x86 te funkcije ne podpirajo.</translation>
+<translation id="66537479323396140">Izbriše zgodovino in samodokončanja v iskalnem polju. V računu Google so morda druge vrste zgodovine brskanja na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Prednostno omrežje</translation>
 <translation id="6655190889273724601">Način za razvijalce</translation>
 <translation id="6655458902729017087">Skrij račune</translation>
@@ -5933,6 +5935,7 @@
 <translation id="7636919061354591437">Namesti v to napravo</translation>
 <translation id="7637593984496473097">Premalo prostora na disku.</translation>
 <translation id="7638605456503525968">Serijska vrata</translation>
+<translation id="7639914187072011620">URL-ja za preusmeritev za prijavo SAML ni bilo mogoče pridobiti iz strežnika.</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> vas z gesli, ki ste jih shranili, samodejno prijavi v ustrezna spletna mesta.</translation>
 <translation id="7642778300616172920">Skrij občutljivo vsebino</translation>
 <translation id="7643842463591647490">{0,plural, =1{# odprto okno}one{# odprto okno}two{# odprti okni}few{# odprta okna}other{# odprtih oken}}</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb
index 3df1d0c..bdc55cd 100644
--- a/chrome/app/resources/generated_resources_sq.xtb
+++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -3076,6 +3076,7 @@
 <translation id="4392896746540753732">Modifiko skedarin e konfigurimit</translation>
 <translation id="4394049700291259645">Çaktivizo</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Hapi të gjitha}=1{&amp;Hap faqeshënuesin}other{&amp;Hapi të gjitha ({COUNT})}}</translation>
+<translation id="4398131717714042083">Pastron historikun dhe plotësimet automatike në kutinë e kërkimit</translation>
 <translation id="439817266247065935">Pajisja jote nuk është mbyllur si duhet. Rinis Linux për të përdorur aplikacionet e Linux.</translation>
 <translation id="4400367121200150367">Sajtet që nuk i ruajnë asnjëherë fjalëkalimet do të shfaqen këtu</translation>
 <translation id="4400632832271803360">Mbaj të shtypur tastin e Launcher për të ndërruar sjelljen e tasteve të rreshtit të sipërm</translation>
@@ -5058,6 +5059,7 @@
 <translation id="6651237644330755633">Besoji kësaj certifikate për identifikimin e faqeve të internetit</translation>
 <translation id="6651495917527016072">Sinkronizo rrjetet Wi-Fi me telefonin tënd. <ph name="LINK_BEGIN" />Mëso më shumë<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Integrimi i Chrome <ph name="MS_AD_NAME" /> mbështetet vetëm në platformat x86_64. Pajisjet Chromebook të ndërtuara mbi një platformë ARM ose x86 nuk e mbështesin këtë funksionalitet.</translation>
+<translation id="66537479323396140">Pastron historikun dhe plotësimet automatike në kutinë e kërkimit. Llogaria jote e Google mund të ketë forma të tjera të historikut të shfletimit në <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Rrjeti i preferuar</translation>
 <translation id="6655190889273724601">Modaliteti i zhvilluesit</translation>
 <translation id="6655458902729017087">Fshihi llogaritë</translation>
@@ -5924,6 +5926,7 @@
 <translation id="7636919061354591437">Instaloje në këtë pajisje</translation>
 <translation id="7637593984496473097">Nuk ka hapësirë të mjaftueshme në disk</translation>
 <translation id="7638605456503525968">Portat seriale</translation>
+<translation id="7639914187072011620">Nuk mundi të merrte URL e ridrejtimit SAML nga serveri</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> të identifikon automatikisht te sajtet e përshtatshme me fjalëkalimet që ke ruajtur.</translation>
 <translation id="7642778300616172920">Fshih përmbajtjen delikate</translation>
 <translation id="7643842463591647490">{0,plural, =1{# dritare e hapur}other{# dritare të hapura}}</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb
index 5a9aa4f..499e4bca 100644
--- a/chrome/app/resources/generated_resources_sr-Latn.xtb
+++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -3079,6 +3079,7 @@
 <translation id="4392896746540753732">Izmenite datoteku konfiguracije</translation>
 <translation id="4394049700291259645">Onemogući</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Otvori sve}=1{&amp;Otvori obeleživač}one{&amp;Otvori sve ({COUNT})}few{&amp;Otvori sve ({COUNT})}other{&amp;Otvori sve ({COUNT})}}</translation>
+<translation id="4398131717714042083">Briše istoriju i automatska dovršavanja u okviru za pretragu</translation>
 <translation id="439817266247065935">Uređaj se nije pravilno isključio. Restartujte Linux da biste koristili Linux aplikacije.</translation>
 <translation id="4400367121200150367">Sajtovi koji nikada ne čuvaju lozinke će se pojaviti ovde</translation>
 <translation id="4400632832271803360">Zadržite taster za Pokretač da biste promenili ponašanje tastera u gornjem redu</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">Veruj ovom sertifikatu za identifikaciju veb-sajtova</translation>
 <translation id="6651495917527016072">Sinhronizujte WiFi mreže pomoću telefona. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> integracija je podržana samo na x86_64 platformama. Chromebook-ovi napravljeni na ARM ili x86 platformi ne podržavaju ovu funkciju.</translation>
+<translation id="66537479323396140">Briše istoriju i automatska dovršavanja u okviru za pretragu. Google nalog može da ima druge oblike istorije pregledanja na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Podesi kao prioritetnu mrežu</translation>
 <translation id="6655190889273724601">Režim programera</translation>
 <translation id="6655458902729017087">Sakrij naloge</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">Instaliraj na ovom uređaju</translation>
 <translation id="7637593984496473097">Nema dovoljno prostora na disku</translation>
 <translation id="7638605456503525968">Serijski portovi</translation>
+<translation id="7639914187072011620">Preuzimanje SAML URL-a za preusmeravanje sa servera nije uspelo</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> vas automatski prijavljuje na sajtove koji ispunjavaju uslove pomoću lozinki koje ste sačuvali.</translation>
 <translation id="7642778300616172920">Sakrij osetljiv sadržaj</translation>
 <translation id="7643842463591647490">{0,plural, =1{# otvoren prozor}one{# otvoren prozor}few{# otvorena prozora}other{# otvorenih prozora}}</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index fbde971..ccb2c7d5 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -3079,6 +3079,7 @@
 <translation id="4392896746540753732">Измените датотеку конфигурације</translation>
 <translation id="4394049700291259645">Онемогући</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Отвори све}=1{&amp;Отвори обележивач}one{&amp;Отвори све ({COUNT})}few{&amp;Отвори све ({COUNT})}other{&amp;Отвори све ({COUNT})}}</translation>
+<translation id="4398131717714042083">Брише историју и аутоматска довршавања у оквиру за претрагу</translation>
 <translation id="439817266247065935">Уређај се није правилно искључио. Рестартујте Linux да бисте користили Linux апликације.</translation>
 <translation id="4400367121200150367">Сајтови који никада не чувају лозинке ће се појавити овде</translation>
 <translation id="4400632832271803360">Задржите тастер за Покретач да бисте променили понашање тастера у горњем реду</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">Веруј овом сертификату за идентификацију веб-сајтова</translation>
 <translation id="6651495917527016072">Синхронизујте WiFi мреже помоћу телефона. <ph name="LINK_BEGIN" />Сазнајте више<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> интеграција је подржана само на x86_64 платформама. Chromebook-ови направљени на ARM или x86 платформи не подржавају ову функцију.</translation>
+<translation id="66537479323396140">Брише историју и аутоматска довршавања у оквиру за претрагу. Google налог може да има друге облике историје прегледања на <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Подеси као приоритетну мрежу</translation>
 <translation id="6655190889273724601">Режим програмера</translation>
 <translation id="6655458902729017087">Сакриј налоге</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">Инсталирај на овом уређају</translation>
 <translation id="7637593984496473097">Нема довољно простора на диску</translation>
 <translation id="7638605456503525968">Серијски портови</translation>
+<translation id="7639914187072011620">Преузимање SAML URL-а за преусмеравање са сервера није успело</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> вас аутоматски пријављује на сајтове који испуњавају услове помоћу лозинки које сте сачували.</translation>
 <translation id="7642778300616172920">Сакриј осетљив садржај</translation>
 <translation id="7643842463591647490">{0,plural, =1{# отворен прозор}one{# отворен прозор}few{# отворена прозора}other{# отворених прозора}}</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index a144528..1a80da1 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">Redigera konfigurationsfilen</translation>
 <translation id="4394049700291259645">Inaktivera</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Öppna alla}=1{&amp;Öppna bokmärke}other{&amp;Öppna alla ({COUNT})}}</translation>
+<translation id="4398131717714042083">Historik och autoslutföranden i sökrutan rensas</translation>
 <translation id="439817266247065935">Enheten stängdes inte av på rätt sätt. Starta om Linux om du vill använda Linux-appar.</translation>
 <translation id="4400367121200150367">Webbplatser som aldrig sparar lösenord visas här</translation>
 <translation id="4400632832271803360">Håll ned starttangenten om du vill ändra hur tangenterna på översta raden fungerar</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">Lita på detta certifikat för identifiering av webbplatser</translation>
 <translation id="6651495917527016072">Synkronisera Wi-Fi-nätverk med telefonen. <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Integrering med <ph name="MS_AD_NAME" /> i Chrome stöds bara på x86_64-plattformar. Chromebook-enheter som bygger på ARM- eller x86-plattformen saknar stöd för denna funktion.</translation>
+<translation id="66537479323396140">Historik och autoslutföranden i sökrutan rensas. Det kan finnas andra former av webbhistorik i Google-kontot på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Föredraget nätverk</translation>
 <translation id="6655190889273724601">Programmerarläge</translation>
 <translation id="6655458902729017087">Dölj konton</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">Installera på den här enheten</translation>
 <translation id="7637593984496473097">Det finns inte tillräckligt med utrymme på hårddisken</translation>
 <translation id="7638605456503525968">Serieportar</translation>
+<translation id="7639914187072011620">Det gick inte att hämta SAML-omdirigeringsadressen från servern</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> loggar automatiskt in på godkända webbplatser med de lösenord du sparat.</translation>
 <translation id="7642778300616172920">Dölj känsligt innehåll</translation>
 <translation id="7643842463591647490">{0,plural, =1{# öppet fönster}other{# öppna fönster}}</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index 2ef29224..1cf7a8f 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -3075,6 +3075,7 @@
 <translation id="4392896746540753732">Badilisha faili ya mipangilio</translation>
 <translation id="4394049700291259645">Zima</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Fungua zote}=1{&amp;Fungua alamisho}other{&amp;Fungua zote ({COUNT})}}</translation>
+<translation id="4398131717714042083">Hufuta historia na ukamilishaji kiotomatiki kwenye kisanduku cha kutafutia</translation>
 <translation id="439817266247065935">Kifaa chako hakikuzima ipasavyo. Zima kisha uwashe Linux ili utumie programu za Linux.</translation>
 <translation id="4400367121200150367">Tovuti ambazo hazihifadhi manenosiri kamwe zitaonekana hapa</translation>
 <translation id="4400632832271803360">Shikilia kitufe cha Kifungua Programu ili ubadilishe utendaji wa vitufe vya juu vya safu mlalo</translation>
@@ -5057,6 +5058,7 @@
 <translation id="6651237644330755633">Amini cheti hiki kwa ajili ya kutambua tovuti</translation>
 <translation id="6651495917527016072">Sawazisha mitandao ya Wi-Fi kwa kutumia simu yako. <ph name="LINK_BEGIN" />Pata maelezo zaidi<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Ujumuishaji wa Chrome <ph name="MS_AD_NAME" /> unatumika kwenye mifumo ya x86_64. Chromebook zinazotumia mfumo wa ARM au wa x86 hazitumii kipengele hiki.</translation>
+<translation id="66537479323396140">Hufuta historia na ukamilishaji kiotomatiki kwenye kisanduku cha kutafutia. Huenda Akaunti yako ya Google ikawa na aina nyingine za historia ya kuvinjari kwenye <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Weka kuwa mtandao unaopendelea</translation>
 <translation id="6655190889273724601">Hali ya Wasanidi Programu</translation>
 <translation id="6655458902729017087">Ficha Akaunti</translation>
@@ -5923,6 +5925,7 @@
 <translation id="7636919061354591437">Sakinisha kwenye Kifaa hiki</translation>
 <translation id="7637593984496473097">Nafasi ya hifadhi kwenye diski haitoshi</translation>
 <translation id="7638605456503525968">Milango ya kuingiza</translation>
+<translation id="7639914187072011620">Imeshindwa kuleta kiungo kinachoelekeza kwingine cha SAML kutoka kwenye seva</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> hukuwezesha kuingia katika tovuti zinazofaa kiotomatiki kwa manenosiri uliyohifadhi.</translation>
 <translation id="7642778300616172920">Ficha maudhui nyeti</translation>
 <translation id="7643842463591647490">{0,plural, =1{Dirisha # limefunguliwa}other{Madirisha # yamefunguliwa}}</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index 27ab644..2bd8e1a 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -753,6 +753,7 @@
 <translation id="1794791083288629568">இந்தச் சிக்கலைத் தீர்ப்பதற்கு உதவ, கருத்தை அனுப்பவும்.</translation>
 <translation id="1795214765651529549">கிளாசிக்கைப் பயன்படுத்து</translation>
 <translation id="1799071797295057738">"<ph name="EXTENSION_NAME" />" நீட்டிப்பு தானாக முடக்கப்பட்டது.</translation>
+<translation id="1800973090344019061">"<ph name="APP_NAME" />" நீட்டிப்பு உங்கள் திரையில் உள்ளவற்றைப் பகிர விரும்புகிறது.</translation>
 <translation id="1802624026913571222">கவர் மூடப்பட்டிருக்கும்போது உறக்கநிலைக்குச் செல்</translation>
 <translation id="1802687198411089702">பக்கம் செயல்படவில்லை. காத்திருக்கவும் அல்லது வெளியேறவும்.</translation>
 <translation id="1803531841600994172">இதற்கு மொழிபெயர்க்கவும்:</translation>
@@ -1352,6 +1353,7 @@
 <translation id="2464089476039395325">HTTP ப்ராக்ஸி</translation>
 <translation id="2465237718053447668">இப்போது வைஃபையுடன் இணைத்துப் புதுப்பிப்பைப் பதிவிறக்குமாறு <ph name="DOMAIN" /> வேண்டுகிறது. அல்லது கட்டண நெட்வொர்க் இணைப்பிலிருந்து பதிவிறக்குங்கள் (கட்டணங்கள் விதிக்கப்படலாம்).</translation>
 <translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> நெட்வொர்க், முடக்கப்பட்டுள்ளது</translation>
+<translation id="2467755475704469005">சாதனம் எதுவும் கண்டறியப்படவில்லை. <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></translation>
 <translation id="2468178265280335214">டச்பேட் ஸ்க்ரோல் ஆக்ஸிலரேஷன்</translation>
 <translation id="2468205691404969808">அந்தப் பக்கங்களுக்குச் சென்றதில்லை என்றாலும், உங்கள் விருப்பத்தேர்வுகளை நினைவில்கொள்ள, குக்கீகளைப் பயன்படுத்தும்</translation>
 <translation id="2468402215065996499">தாமகோட்சி</translation>
@@ -2380,6 +2382,7 @@
 <translation id="3608576286259426129">பயனர் படத்தின் மாதிரிக்காட்சி</translation>
 <translation id="3610369246614755442">டாக் ஃபேனில் உள்ள சிக்கலை சரி செய்ய வேண்டும்</translation>
 <translation id="361106536627977100">ஃப்ளாஷ் தரவு</translation>
+<translation id="3611655097742243705">மேலும் ஆப்ஸ்களைப் பார்க்க Play ஸ்டோருக்குச் செல்லவும்</translation>
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; ஆல் பதிவிறக்கப்பட்டது</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> ஐக் காட்டு</translation>
 <translation id="3613422051106148727">புதிய தாவலில் &amp;திற</translation>
@@ -2715,6 +2718,7 @@
 <translation id="3943494825379372497">ஆப்ஸையும் பக்கங்களையும் மீட்டெடுக்க வேண்டுமா?</translation>
 <translation id="3943582379552582368">&amp;முந்தைய பக்கம்</translation>
 <translation id="3943857333388298514">ஒட்டு</translation>
+<translation id="3945513714196326460">சிறிய பெயரை வழங்கவும்</translation>
 <translation id="3948116654032448504">படத்தைத் &amp;தேடு <ph name="SEARCH_ENGINE" /></translation>
 <translation id="3948507072814225786">பின்வரும் கோப்புறைகளில் உள்ள கோப்புகளை <ph name="ORIGIN" /> தளத்தால் திருத்த முடியும்</translation>
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
@@ -3100,6 +3104,7 @@
 <translation id="4415245286584082850">சாதனங்கள் எதுவுமில்லை. புதிய தாவலில் உதவி மையக் கட்டுரையைத் திறக்கவும்.</translation>
 <translation id="4415276339145661267">Google கணக்கை நிர்வகி</translation>
 <translation id="4415748029120993980">SECG நீள்வட்ட வளைவான secp384r1 (NIST P-384 எனவும் அறியப்படும்)</translation>
+<translation id="4416450511678320850">இந்த உள்ளடக்கத்தைக் காட்டக்கூடிய ஆப்ஸ் எதுவுமில்லை</translation>
 <translation id="4416582610654027550">சரியான URLஐ உள்ளிடவும்</translation>
 <translation id="4419409365248380979">குக்கீகளை அமைக்க <ph name="HOST" /> ஐ எப்போதும் அனுமதி</translation>
 <translation id="4421932782753506458">ஃபளஃபி</translation>
@@ -3392,6 +3397,7 @@
 <translation id="473936925429402449">தேர்ந்தெடுக்கப்பட்டது, கூடுதல் உள்ளடக்கம் (<ph name="CURRENT_ELEMENT" />/<ph name="TOTAL_ELEMENTS" />)</translation>
 <translation id="4739639199548674512">டிக்கெட்டுகள்</translation>
 <translation id="4742334355511750246">படங்களைக் காட்ட அனுமதி இல்லாத தளங்கள்</translation>
+<translation id="4742970037960872810">ஹைலைட்டை அகற்று</translation>
 <translation id="4743260470722568160"><ph name="BEGIN_LINK" />பயன்பாடுகளைப் புதுப்பிப்பது எப்படி என்பதை அறிக<ph name="END_LINK" /></translation>
 <translation id="4744981231093950366">{NUM_TABS,plural, =1{தளத்தின் ஒலியை இயக்கு}other{தளங்களின் ஒலியை இயக்கு}}</translation>
 <translation id="4746351372139058112">மெசேஜ்கள்</translation>
@@ -4601,6 +4607,7 @@
 <translation id="6136114942382973861">பதிவிறக்கங்கள் பட்டியை மூடு</translation>
 <translation id="6136287496450963112">பின் (PIN) மூலம் உங்கள் பாதுகாப்பு விசை பாதுகாக்கப்படவில்லை. கைரேகைகளை நிர்வகிக்க, முதலில் பின் (PIN) ஒன்றை உருவாக்கவும்.</translation>
 <translation id="6138680304137685902">SHA-384 உடனான X9.62 ECDSA கையொப்பம்</translation>
+<translation id="6138774640412545950">"<ph name="APP_NAME" />" நீட்டிப்பு உங்கள் திரையில் உள்ளவற்றை <ph name="TARGET_NAME" /> உடன் பகிர விரும்புகிறது.</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, நெட்வொர்க் இல்லை</translation>
 <translation id="6141988275892716286">பதிவிறக்கத்தை உறுதிப்படுத்து</translation>
 <translation id="6143186082490678276">உதவிப் பெறுக</translation>
@@ -5390,6 +5397,7 @@
 <translation id="7009709314043432820">உங்கள் கேமராவை <ph name="APP_NAME" /> பயன்படுத்துகிறது</translation>
 <translation id="701080569351381435">மூலத்தைப் பார்க்கவும்</translation>
 <translation id="7014174261166285193">நிறுவல் தோல்வியடைந்தது.</translation>
+<translation id="7014480873681694324">ஹைலைட்டை அகற்று</translation>
 <translation id="7017004637493394352">மீண்டும் "Ok Google" எனக் கூறவும்</translation>
 <translation id="7017219178341817193">புதிய பக்கத்தைச் சேர்</translation>
 <translation id="7017354871202642555">சாளரம் அமைக்கப்பட்ட பின்னர் பயன்முறையை அமைக்க முடியாது.</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index 1f5b43b4..d9b5c385 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">แก้ไขไฟล์การกำหนดค่า</translation>
 <translation id="4394049700291259645">ปิดการใช้งาน</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;เปิดทั้งหมด}=1{&amp;เปิดบุ๊กมาร์ก}other{&amp;เปิดทั้งหมด ({COUNT})}}</translation>
+<translation id="4398131717714042083">ล้างประวัติการเข้าชมและการเติมข้อความอัตโนมัติในช่องค้นหา</translation>
 <translation id="439817266247065935">อุปกรณ์ของคุณไม่ได้ปิดอย่างถูกต้อง รีสตาร์ท Linux เพื่อใช้แอป Linux</translation>
 <translation id="4400367121200150367">เว็บไซต์ที่ไม่เคยบันทึกรหัสผ่านจะแสดงที่นี่</translation>
 <translation id="4400632832271803360">กดแป้น "Launcher" ค้างไว้เพื่อเปลี่ยนการทำงานของแป้นแถวบนสุด</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">เชื่อถือใบรับรองนี้ในการระบุเว็บไซต์</translation>
 <translation id="6651495917527016072">ซิงค์เครือข่าย Wi-Fi กับโทรศัพท์ <ph name="LINK_BEGIN" />ดูข้อมูลเพิ่มเติม<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">รองรับการรวม Chrome <ph name="MS_AD_NAME" /> ในแพลตฟอร์ม x86_64 เท่านั้น Chromebook ที่สร้างในแพลตฟอร์ม ARM หรือ x86 ไม่รองรับฟังก์ชันนี้</translation>
+<translation id="66537479323396140">ล้างประวัติการเข้าชมและการเติมข้อความอัตโนมัติในช่องค้นหา บัญชี Google ของคุณอาจมีประวัติการท่องเว็บรูปแบบอื่นๆ ที่ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6654509035557065241">ต้องการใช้เครือข่ายนี้</translation>
 <translation id="6655190889273724601">โหมดนักพัฒนาซอฟต์แวร์</translation>
 <translation id="6655458902729017087">ซ่อนบัญชี</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">ติดตั้งในอุปกรณ์นี้</translation>
 <translation id="7637593984496473097">มีพื้นที่ในดิสก์ไม่เพียงพอ</translation>
 <translation id="7638605456503525968">พอร์ตอนุกรม</translation>
+<translation id="7639914187072011620">ดึงข้อมูล URL เปลี่ยนเส้นทาง SAML จากเซิร์ฟเวอร์ไม่สำเร็จ</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> ลงชื่อเข้าใช้ให้คุณในเว็บไซต์ที่มีสิทธิ์โดยอัตโนมัติด้วยรหัสผ่านที่คุณบันทึกไว้</translation>
 <translation id="7642778300616172920">ซ่อนเนื้อหาที่ละเอียดอ่อน</translation>
 <translation id="7643842463591647490">{0,plural, =1{หน้าต่างเปิดอยู่ # หน้า}other{หน้าต่างเปิดอยู่ # หน้า}}</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index 3701671..ed306287 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -3079,6 +3079,7 @@
 <translation id="4392896746540753732">Yapılandırma dosyasını düzenleyin</translation>
 <translation id="4394049700291259645">Devre dışı bırak</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{Tümünü &amp;aç}=1{Yer işaretini &amp;aç}other{Tümünü &amp;aç ({COUNT})}}</translation>
+<translation id="4398131717714042083">Arama kutusundaki geçmişi ve otomatik tamamlamaları temizler</translation>
 <translation id="439817266247065935">Cihazınız düzgün bir şekilde kapatılmadı. Linux uygulamalarını kullanmak için Linux'u yeniden başlatın.</translation>
 <translation id="4400367121200150367">Şifreleri hiçbir zaman kaydedilmeyecek siteler burada görünür</translation>
 <translation id="4400632832271803360">Üst satırdaki tuşların davranışını değiştirmek için Başlatıcı tuşunu basılı tutun</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">Web sitelerini tanımlamak için bu sertifikaya güvenin</translation>
 <translation id="6651495917527016072">Kablosuz ağları telefonunuzla senkronize eder. <ph name="LINK_BEGIN" />Daha fazla bilgi<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> entegrasyonu yalnızca x86_64 platformlarında desteklenir. Bir ARM veya x86 platformundan üretilen Chromebook'lar bu işlevi desteklemez.</translation>
+<translation id="66537479323396140">Arama kutusunda geçmişi ve 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="6654509035557065241">Ağı tercih et</translation>
 <translation id="6655190889273724601">Geliştirici modu</translation>
 <translation id="6655458902729017087">Hesapları Gizle</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">Bu cihaza yükle</translation>
 <translation id="7637593984496473097">Yeterli disk alanı yok</translation>
 <translation id="7638605456503525968">Seri bağlantı noktaları</translation>
+<translation id="7639914187072011620">Sunucudan SAML yönlendirme URL'si alınamadı</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" />, kaydettiğiniz şifrelerle uygun sitelerde otomatik olarak oturum açmanızı sağlar.</translation>
 <translation id="7642778300616172920">Hassas içeriği gizle</translation>
 <translation id="7643842463591647490">{0,plural, =1{# açık pencere}other{# açık pencere}}</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb
index 1a3ddbb..3f42c3c59 100644
--- a/chrome/app/resources/generated_resources_uk.xtb
+++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -3083,6 +3083,7 @@
 <translation id="4392896746540753732">Змінити файл конфігурації</translation>
 <translation id="4394049700291259645">Вимкнути</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Відкрити всі}=1{&amp;Відкрити закладку}one{&amp;Відкрити всі ({COUNT})}few{&amp;Відкрити всі ({COUNT})}many{&amp;Відкрити всі ({COUNT})}other{&amp;Відкрити всі ({COUNT})}}</translation>
+<translation id="4398131717714042083">Буде очищено історію та підказки автозавершення в полі пошуку</translation>
 <translation id="439817266247065935">Ваш пристрій завершив роботу неналежним чином. Щоб користуватися додатками Linux, перезапустіть Linux.</translation>
 <translation id="4400367121200150367">Тут відображатимуться сайти, які ніколи не зберігають паролі</translation>
 <translation id="4400632832271803360">Утримуйте клавішу панелі запуску, щоб змінити функції клавіш верхнього ряду</translation>
@@ -5065,6 +5066,7 @@
 <translation id="6651237644330755633">Довіряти цьому сертифікату для ідентифікації веб-сайтів</translation>
 <translation id="6651495917527016072">Синхронізувати мережі Wi-Fi із вашим телефоном. <ph name="LINK_BEGIN" />Докладніше<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Інтеграція Chrome <ph name="MS_AD_NAME" /> підтримується лише на платформах x86_64. Комп’ютери Chromebook на платформі ARM або x86 не підтримують цю функцію.</translation>
+<translation id="66537479323396140">Буде очищено історію та підказки автозавершення в полі пошуку. Історія веб-перегляду може також зберігатися у вашому обліковому записі Google на сторінці <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Основна мережа</translation>
 <translation id="6655190889273724601">Режим розробника</translation>
 <translation id="6655458902729017087">Сховати облікові записи</translation>
@@ -5931,6 +5933,7 @@
 <translation id="7636919061354591437">Установити на цьому пристрої</translation>
 <translation id="7637593984496473097">Недостатньо місця на диску</translation>
 <translation id="7638605456503525968">Послідовні порти</translation>
+<translation id="7639914187072011620">Не вдалось отримати із сервера переспрямування SAML</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> зберігає ваші паролі й автоматично входить в облікові записи на сайтах.</translation>
 <translation id="7642778300616172920">Ховати конфіденційний вміст</translation>
 <translation id="7643842463591647490">{0,plural, =1{# відкрите вікно}one{# відкрите вікно}few{# відкриті вікна}many{# відкритих вікон}other{# відкритого вікна}}</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb
index 04972640..3f1166e 100644
--- a/chrome/app/resources/generated_resources_ur.xtb
+++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -754,6 +754,7 @@
 <translation id="1794791083288629568">اس مسئلے کو حل کرنے میں ہماری مدد کیلئے تاثرات بھیجیں۔</translation>
 <translation id="1795214765651529549">کلاسک استعمال کریں</translation>
 <translation id="1799071797295057738">ایکسٹینشن "<ph name="EXTENSION_NAME" />" کو خود کار طور پر غیر فعال کر دیا گیا۔</translation>
+<translation id="1800973090344019061">ایکسٹینشن "<ph name="APP_NAME" />" آپ کی اسکرین کے مواد کا اشتراک کرنا چاہتا ہے۔</translation>
 <translation id="1802624026913571222">کوَر بند ہونے پر سلیپ وضع میں بھیجیں</translation>
 <translation id="1802687198411089702">صفحہ کھل نہیں رہا ہے۔ آپ اس کے کھلنے انتظار کر سکتے ہیں یا باہر نکل سکتے ہیں۔</translation>
 <translation id="1803531841600994172">وہ زبان جس میں ترجمہ کرنا ہے</translation>
@@ -1353,6 +1354,7 @@
 <translation id="2464089476039395325">‏HTTP پراکسی</translation>
 <translation id="2465237718053447668">‏<ph name="DOMAIN" /> کو درکار ہے کہ اب آپ Wi-Fi سے منسلک ہوں اور اپ ڈیٹ ڈاؤن لوڈ کریں۔ یا میٹرڈ کنکشن سے ڈاؤن لوڈ کریں (چارجز لاگو ہو سکتے ہیں)۔</translation>
 <translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> نیٹ ورک، آف ہے</translation>
+<translation id="2467755475704469005">کسی آلے کا پتہ نہیں چلا۔ <ph name="BEGIN_LINK" />مزید جانیں<ph name="END_LINK" /></translation>
 <translation id="2468178265280335214">ٹچ پیڈ کے اسکرول کا ایکسیلریشن</translation>
 <translation id="2468205691404969808">چاہے آپ وہ صفحات ملاحظہ نہ کریں، تب بھی آپ کی ترجیحات یاد رکھنے کے لیے کوکیز استعمال کرتا ہے</translation>
 <translation id="2468402215065996499">تاما گوچی</translation>
@@ -2380,6 +2382,7 @@
 <translation id="3608576286259426129">صارف کی تصویر کا پیش منظر</translation>
 <translation id="3610369246614755442">ڈاک کے پنکھے کو سروس کی ضرورت ہے</translation>
 <translation id="361106536627977100">‏Flash ڈیٹا</translation>
+<translation id="3611655097742243705">‏مزید ایپس تلاش کرنے کے لیے Play اسٹور ملاحظہ کریں</translation>
 <translation id="3612673635130633812">‏&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; کے ذریعہ ڈاؤن لوڈ کیا گیا</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> دکھائیں</translation>
 <translation id="3613422051106148727">نئے ٹیب میں &amp;کھولیں</translation>
@@ -2715,6 +2718,7 @@
 <translation id="3943494825379372497">ایپس اور صفحات بحال کریں؟</translation>
 <translation id="3943582379552582368">&amp;پیچھے</translation>
 <translation id="3943857333388298514">پیسٹ کریں</translation>
+<translation id="3945513714196326460">کوئی چھوٹا نام آزمائیں</translation>
 <translation id="3948116654032448504">تصویر کیلئے <ph name="SEARCH_ENGINE" /> میں &amp;تلاش کریں</translation>
 <translation id="3948507072814225786"><ph name="ORIGIN" /> مندرجہ ذیل فولڈرز کی فائلز میں ترمیم کر سکتا ہے</translation>
 <translation id="3949790930165450333">‎<ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)‎</translation>
@@ -3100,6 +3104,7 @@
 <translation id="4415245286584082850">کوئی آلہ نہیں ملا۔ نئے ٹیب میں مرکز امداد کا مضمون کھولیں۔</translation>
 <translation id="4415276339145661267">‏اپنے Google اکاؤنٹ کا نظم کریں</translation>
 <translation id="4415748029120993980">‏SECG elliptic curve secp384r1 (المعروف NIST P-384)</translation>
+<translation id="4416450511678320850">اس مواد کے لیے کوئی ایپ دستیاب نہیں ہے</translation>
 <translation id="4416582610654027550">‏ایک درست URL ٹائپ کریں</translation>
 <translation id="4419409365248380979"><ph name="HOST" /> کو کوکیز سیٹ کرنے کی ہمیشہ اجازت دیں</translation>
 <translation id="4421932782753506458">Fluffy</translation>
@@ -3392,6 +3397,7 @@
 <translation id="473936925429402449">منتخب کردہ، <ph name="CURRENT_ELEMENT" /> میں سے اضافی مواد <ph name="TOTAL_ELEMENTS" /></translation>
 <translation id="4739639199548674512">ٹکٹیں</translation>
 <translation id="4742334355511750246">تصاویر دکھانے کی اجازت نہیں ہے</translation>
+<translation id="4742970037960872810">ہائی لائٹ کو ہٹائیں</translation>
 <translation id="4743260470722568160"><ph name="BEGIN_LINK" />ایپلیکیشنز کو اپ ڈیٹ کرنے کا طریقہ جانیں<ph name="END_LINK" /></translation>
 <translation id="4744981231093950366">{NUM_TABS,plural, =1{سائٹ کی آواز چالو کریں}other{سائٹس کی آواز چالو کریں}}</translation>
 <translation id="4746351372139058112">پیغامات</translation>
@@ -4600,6 +4606,7 @@
 <translation id="6136114942382973861">ڈاؤن لوڈز بار بند کریں</translation>
 <translation id="6136287496450963112">‏آپ کی سیکیورٹی کلید PIN کے ذریعے محفوظ نہیں ہے۔ فنگر پرنٹس کا نظم کرنے کیلئے، پہلے ایک PIN تخلیق کریں۔</translation>
 <translation id="6138680304137685902">‏SHA-384 کے ساتھ X9.62 ECDSA دستخط</translation>
+<translation id="6138774640412545950">ایکسٹینشن "<ph name="APP_NAME" />" آپ کی اسکرین کے مواد کا اشتراک <ph name="TARGET_NAME" /> کے ساتھ کرنا چاہتا ہے۔</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />، کوئی نیٹ ورک نہیں</translation>
 <translation id="6141988275892716286">ڈاؤن لوڈ کی توثیق کریں</translation>
 <translation id="6143186082490678276">مدد حاصل کریں</translation>
@@ -5389,6 +5396,7 @@
 <translation id="7009709314043432820"><ph name="APP_NAME" /> ایپ آپ کا کیمرا استعمال کر رہی ہے</translation>
 <translation id="701080569351381435">ماخذ دیکھیں</translation>
 <translation id="7014174261166285193">انسٹالیشن ناکام ہو گیا۔</translation>
+<translation id="7014480873681694324">ہائی لائٹ کو ہٹائیں</translation>
 <translation id="7017004637493394352">‏"Ok Google" دوبارہ بولیں</translation>
 <translation id="7017219178341817193">ایک نیا صفحہ شامل کریں</translation>
 <translation id="7017354871202642555">ونڈو سیٹ ہو جانے کے بعد وضع سیٹ نہیں کر سکتے۔</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb
index e5ee0b4..a55743f 100644
--- a/chrome/app/resources/generated_resources_uz.xtb
+++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -3078,6 +3078,7 @@
 <translation id="4392896746540753732">Konfiguratsiya faylini tahrirlash</translation>
 <translation id="4394049700291259645">Faolsizlantirish</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{Barchasini &amp;ochish}=1{Bukmarkni &amp;ochish}other{Barchasini ({COUNT}) &amp;ochish}}</translation>
+<translation id="4398131717714042083">Qidiruv oynasidagi tarix va avtomatik kiritishlarni tozalaydi</translation>
 <translation id="439817266247065935">Qurilmangiz seansi xato yakunlangan. Linux ilovalarini ishlatish uchun Linuxni qaytadan ishga tushiring.</translation>
 <translation id="4400367121200150367">Bu yerda parollarni saqlash hech qachon taklif qilinmaydigan saytlar ko‘rsatiladi</translation>
 <translation id="4400632832271803360">Yuqori qatordagi tugmalar rejimni almashtirish uchun qidiruv tugmasini bosib turing</translation>
@@ -5060,6 +5061,7 @@
 <translation id="6651237644330755633">Saytlarni identifikatsiya qilishda ushbu sertifikat ishonchli deb hisoblansin</translation>
 <translation id="6651495917527016072">Wi-Fi tarmoqlarni telefon orqali sinxronlang. <ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> faqatgina x86_64 platformalar bilan integratsiyalangan. Chromebooklar ARM yoki x86 platformasi asosida tuzilgan. Ularda bu funksiya ishlamaydi.</translation>
+<translation id="66537479323396140">Qidiruv oynasidagi tarix va avtomatik kiritishlarni tozalaydi. Google hisobingiz orqali bajargan internetdagi faoliyatingizni <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> orqali ko‘rishingiz mumkin.</translation>
 <translation id="6654509035557065241">Afzal tarmoqni tanlash</translation>
 <translation id="6655190889273724601">Dasturchi rejimi</translation>
 <translation id="6655458902729017087">Hisoblarni yashirish</translation>
@@ -5926,6 +5928,7 @@
 <translation id="7636919061354591437">Shu qurilmaga oʻrnatish</translation>
 <translation id="7637593984496473097">Diskda yetarlicha joy mavjud emas</translation>
 <translation id="7638605456503525968">Ketma-ket portlar</translation>
+<translation id="7639914187072011620">Serverdan kelgan URL yoʻnaltiruvi SAML protokoli orqali fetch qilinmadi</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> kerakli ilova va saytlarga saqlangan parollaringiz orqali avtomatik kirish imkonini beradi.</translation>
 <translation id="7642778300616172920">Maxfiy axborotlar berkitilsin</translation>
 <translation id="7643842463591647490">{0,plural, =1{# ta ochiq oyna}other{# ta ochiq oyna}}</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index 990ac12d..22bfc6b 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -3080,6 +3080,7 @@
 <translation id="4392896746540753732">Chỉnh sửa tệp cấu hình này</translation>
 <translation id="4394049700291259645">Vô hiệu hóa</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Mở tất cả}=1{&amp;Mở dấu trang}other{&amp;Mở tất cả ({COUNT})}}</translation>
+<translation id="4398131717714042083">Xóa nhật ký duyệt web và nội dung tự động hoàn thành trong hộp tìm kiếm</translation>
 <translation id="439817266247065935">Thiết bị của bạn không tắt đúng cách. Hãy khởi động lại Linux để dùng các ứng dụng Linux.</translation>
 <translation id="4400367121200150367">Trang web không bao giờ lưu mật khẩu sẽ xuất hiện tại đây</translation>
 <translation id="4400632832271803360">Giữ phím Trình khởi chạy để chuyển đổi chức năng của các phím hàng trên cùng</translation>
@@ -5062,6 +5063,7 @@
 <translation id="6651237644330755633">Tin tưởng chứng chỉ này khi nhận dạng trang web</translation>
 <translation id="6651495917527016072">Đồng bộ hóa các mạng Wi-Fi với điện thoại của bạn. <ph name="LINK_BEGIN" />Tìm hiểu thêm<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Tính năng tích hợp <ph name="MS_AD_NAME" /> vào Chrome chỉ được hỗ trợ trên các nền tảng x86_64. Chromebook được phát triển trên nền tảng ARM hoặc x86 không hỗ trợ chức năng này.</translation>
+<translation id="66537479323396140">Xóa nhật ký duyệt web và nội dung tự động hoàn thành trong hộp tìm kiếm. Tài khoản Google của bạn có thể có các dạng nhật ký duyệt web khác tại <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Đặt mạng ưu tiên</translation>
 <translation id="6655190889273724601">Chế độ dành cho nhà phát triển</translation>
 <translation id="6655458902729017087">Ẩn tài khoản</translation>
@@ -5928,6 +5930,7 @@
 <translation id="7636919061354591437">Cài đặt trên thiết bị này</translation>
 <translation id="7637593984496473097">Không đủ dung lượng ổ đĩa</translation>
 <translation id="7638605456503525968">Cổng nối tiếp</translation>
+<translation id="7639914187072011620">Không tải được URL chuyển hướng SAML từ máy chủ</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> tự động đăng nhập bạn vào các trang web đủ điều kiện bằng mật khẩu bạn đã lưu.</translation>
 <translation id="7642778300616172920">Ẩn nội dung nhạy cảm</translation>
 <translation id="7643842463591647490">{0,plural, =1{# cửa sổ đang mở}other{# cửa sổ đang mở}}</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index 5e1b0e6..afae3ad 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -984,7 +984,7 @@
 <translation id="205560151218727633">Google 助理徽标</translation>
 <translation id="2058456167109518507">检测到的设备</translation>
 <translation id="2059913712424898428">时区</translation>
-<translation id="2060375639911876205">移除 eSIM 卡个人资料</translation>
+<translation id="2060375639911876205">移除 eSIM 卡配置文件</translation>
 <translation id="2065405795449409761">Chrome 正受到自动测试软件的控制。</translation>
 <translation id="2071393345806050157">没有本地日志文件。</translation>
 <translation id="2071692954027939183">由于您通常不允许显示通知,系统已自动屏蔽通知</translation>
@@ -2881,7 +2881,7 @@
 <translation id="4131410914670010031">黑白色</translation>
 <translation id="413193092008917129">网络诊断例程</translation>
 <translation id="4132183752438206707">在 Google Play 商店中查找所需应用</translation>
-<translation id="4132364317545104286">重命名 eSIM 卡个人资料</translation>
+<translation id="4132364317545104286">重命名 eSIM 卡配置文件</translation>
 <translation id="4133076602192971179">打开应用以更改密码</translation>
 <translation id="4136203100490971508">护眼模式将于日出时自动关闭</translation>
 <translation id="41365691917097717">继续操作会启用 ADB 调试,以创建和测试 Android 应用。请注意,此操作会允许安装未经 Google 验证的 Android 应用,而且一旦安装就无法停用,除非将设备恢复到出厂设置。</translation>
@@ -3074,6 +3074,7 @@
 <translation id="4392896746540753732">修改配置文件</translation>
 <translation id="4394049700291259645">停用</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{打开全部书签(&amp;O)}=1{打开书签(&amp;O)}other{打开全部({COUNT} 个)书签(&amp;O)}}</translation>
+<translation id="4398131717714042083">会清除历史记录以及搜索框中的自动补全项</translation>
 <translation id="439817266247065935">您的设备未正常关闭。要使用 Linux 应用,请重启 Linux。</translation>
 <translation id="4400367121200150367">一律不保存密码的网站将显示在这里</translation>
 <translation id="4400632832271803360">按住启动器键可切换顶行键的行为</translation>
@@ -5056,6 +5057,7 @@
 <translation id="6651237644330755633">信任该证书,以标识网站的身份</translation>
 <translation id="6651495917527016072">将 Wi-Fi 网络配置同步到您的手机。<ph name="LINK_BEGIN" />了解详情<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">只有 x86_64 平台才支持 Chrome <ph name="MS_AD_NAME" /> 集成功能。采用 ARM 或 x86 平台的 Chromebook 不支持此功能。</translation>
+<translation id="66537479323396140">会清除历史记录以及搜索框中的自动补全项。您的 Google 帐号在 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> 上可能有其他形式的浏览记录。</translation>
 <translation id="6654509035557065241">设置首选网络</translation>
 <translation id="6655190889273724601">开发者模式</translation>
 <translation id="6655458902729017087">隐藏帐号</translation>
@@ -5922,6 +5924,7 @@
 <translation id="7636919061354591437">在此设备上安装</translation>
 <translation id="7637593984496473097">磁盘空间不足</translation>
 <translation id="7638605456503525968">串行端口</translation>
+<translation id="7639914187072011620">未能从服务器中提取 SAML 重定向网址</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> 会使用您保存的密码让您自动登录到符合条件的网站。</translation>
 <translation id="7642778300616172920">隐藏敏感内容</translation>
 <translation id="7643842463591647490">{0,plural, =1{# 个打开的窗口}other{# 个打开的窗口}}</translation>
@@ -6748,7 +6751,7 @@
 <translation id="8551588720239073785">日期和时间设置</translation>
 <translation id="8553342806078037065">管理其他用户</translation>
 <translation id="8554899698005018844">无语言</translation>
-<translation id="8555195867496021627">无可用的 eSIM 卡个人资料。您可在<ph name="BEGIN_LINK" />此处<ph name="END_LINK" />下载一份新的个人资料。</translation>
+<translation id="8555195867496021627">无可用的 eSIM 卡配置文件。您可在<ph name="BEGIN_LINK" />此处<ph name="END_LINK" />下载一份新的配置文件。</translation>
 <translation id="8557022314818157177">连续轻触您的安全密钥,直到您的指纹被捕获</translation>
 <translation id="8557930019681227453">由应用缓存指定的网址</translation>
 <translation id="8560327176991673955">{COUNT,plural, =0{在新窗口中打开全部书签(&amp;N)}=1{在新窗口中打开(&amp;N)}other{在新窗口中打开全部({COUNT} 个)书签(&amp;N)}}</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb
index 121c90e..a800b58 100644
--- a/chrome/app/resources/generated_resources_zh-HK.xtb
+++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -3079,6 +3079,7 @@
 <translation id="4392896746540753732">編輯設定檔案</translation>
 <translation id="4394049700291259645">停用</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{開啟所有書籤(&amp;O)}=1{開啟書籤(&amp;O)}other{開啟全部 {COUNT} 個書籤(&amp;O)}}</translation>
+<translation id="4398131717714042083">清除搜尋框中的記錄和自動完成資料</translation>
 <translation id="439817266247065935">您的裝置先前未正確關閉。如要使用 Linux 應用程式,請重新啟動 Linux。</translation>
 <translation id="4400367121200150367">永不儲存密碼的網站會在這裡顯示</translation>
 <translation id="4400632832271803360">按住啟動器鍵,即可切換最上排按鍵的執行動作</translation>
@@ -5061,6 +5062,7 @@
 <translation id="6651237644330755633">信任這個用來識別網站的憑證</translation>
 <translation id="6651495917527016072">將 Wi-Fi 網絡設定同步至您的手機。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">只有 x86_64 平台支援 Chrome <ph name="MS_AD_NAME" /> 整合,採用 ARM 或 x86 平台的 Chromebook 不支援此功能。</translation>
+<translation id="66537479323396140">清除搜尋框中的記錄和自動完成資料。您的 Google 帳戶在 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> 上可能有其他形式的瀏覽記錄。</translation>
 <translation id="6654509035557065241">偏好網絡</translation>
 <translation id="6655190889273724601">開發人員模式</translation>
 <translation id="6655458902729017087">隱藏帳戶</translation>
@@ -5927,6 +5929,7 @@
 <translation id="7636919061354591437">在此裝置上安裝</translation>
 <translation id="7637593984496473097">磁碟空間不足</translation>
 <translation id="7638605456503525968">序列連接埠</translation>
+<translation id="7639914187072011620">無法由伺服器擷取 SAML 重新導向網址</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> 會使用您已儲存的密碼,自動登入符合資格的網站。</translation>
 <translation id="7642778300616172920">隱藏敏感內容</translation>
 <translation id="7643842463591647490">{0,plural, =1{# 個開啟的視窗}other{# 個開啟的視窗}}</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index 9900657..7f21e80 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -3078,6 +3078,7 @@
 <translation id="4392896746540753732">編輯設定檔</translation>
 <translation id="4394049700291259645">停用</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{開啟所有網址(&amp;O)}=1{開啟書籤(&amp;O)}other{開啟所有 ({COUNT} 個) 網址(&amp;O)}}</translation>
+<translation id="4398131717714042083">清除搜尋框中的歷史記錄和自動查詢建議</translation>
 <translation id="439817266247065935">你的裝置先前未正確關閉。如要使用 Linux 應用程式,請重新啟動 Linux。</translation>
 <translation id="4400367121200150367">一律不儲存密碼的網站會顯示在這裡</translation>
 <translation id="4400632832271803360">按住啟動器鍵即可切換最上排按鍵的行為</translation>
@@ -5060,6 +5061,7 @@
 <translation id="6651237644330755633">信任這個用於識別網站的憑證</translation>
 <translation id="6651495917527016072">將 Wi-Fi 網路同步至你的手機。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">只有 x86_64 平台支援 Chrome <ph name="MS_AD_NAME" /> 整合,採用 ARM 或 x86 平台的 Chromebook 不支援這項功能。</translation>
+<translation id="66537479323396140">清除搜尋框中的歷史記錄和自動查詢建議。你的 Google 帳戶可能會儲存其他形式的瀏覽記錄,請參閱 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />。</translation>
 <translation id="6654509035557065241">偏好網路</translation>
 <translation id="6655190889273724601">開發人員模式</translation>
 <translation id="6655458902729017087">隱藏帳戶</translation>
@@ -5926,6 +5928,7 @@
 <translation id="7636919061354591437">安裝到這部裝置</translation>
 <translation id="7637593984496473097">磁碟空間不足</translation>
 <translation id="7638605456503525968">序列埠</translation>
+<translation id="7639914187072011620">無法從伺服器擷取 SAML 重新導向網址</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> 會使用您儲存的密碼,讓您自動登入符合資格的網站。</translation>
 <translation id="7642778300616172920">隱藏敏感內容</translation>
 <translation id="7643842463591647490">{0,plural, =1{# 個開啟的視窗}other{# 個開啟的視窗}}</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb
index 9724090..a4dea5c 100644
--- a/chrome/app/resources/generated_resources_zu.xtb
+++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -3078,6 +3078,7 @@
 <translation id="4392896746540753732">Hlela ifayela lokulungiselelwa</translation>
 <translation id="4394049700291259645">Khubaza</translation>
 <translation id="4396956294839002702">{COUNT,plural, =0{&amp;Vula konke}=1{&amp;Vula ibhukhimakhi}one{&amp;Vula konke ({COUNT})}other{&amp;Vula konke ({COUNT})}}</translation>
+<translation id="4398131717714042083">Isula umlando kanye nokuqeda ngokuzenzakalelayo ebhokisini lokusesha</translation>
 <translation id="439817266247065935">Idivayisi yakho ayicishanga ngendlela efanele. Qala kabusha i-Linux ukusebenzisa izinhlelo zokusebenza ze-Linux.</translation>
 <translation id="4400367121200150367">Amasayithi angalokothi alondoloze amaphasiwedi azovela lapha</translation>
 <translation id="4400632832271803360">Bamba ukhiye wesiqalisi ukuze ushintshe phakathi kokuziphatha kokhiye berowu ephezulu</translation>
@@ -5063,6 +5064,7 @@
 <translation id="6651237644330755633">Themba lesi sitifiketi sokukhomba amawebhusayithi</translation>
 <translation id="6651495917527016072">Vumelanisa amanethiwekhi e-Wi-Fi nefoni yakho. <ph name="LINK_BEGIN" />Funda kabanzi<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Ukuqiniswa kwe-Chrome <ph name="MS_AD_NAME" /> kusekelwa kuphela kuzingxenyekazi ze-x86_64. Ama-Chromebooks akhelwe phezu kwe-ARM noma ingxenyekazi ye-x86 awasekeli lo msebenzi.</translation>
+<translation id="66537479323396140">Isula umlando nokuqedelelwa okuzenzakalelayo kubhokisi losesho. I-akhawunti yakho ye-Google ingaba namanye amafomu omlando okuphequlula ku-<ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Ncamela inethiwekhi</translation>
 <translation id="6655190889273724601">Imodi yonjiniyela</translation>
 <translation id="6655458902729017087">Fihla ama-akhawunti</translation>
@@ -5929,6 +5931,7 @@
 <translation id="7636919061354591437">Faka kule divayisi</translation>
 <translation id="7637593984496473097">Asikho isikhala sediski esanele</translation>
 <translation id="7638605456503525968">Izimbobo ze-serial</translation>
+<translation id="7639914187072011620">Yenqabile ukulanda i-SAML yokuqondisa kabusha i-URL kusuka kuseva</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> ingena ngemvume ngokuzenzakalelayo kumasayithi afanelekile ngamaphasiwedi owalondolozile.</translation>
 <translation id="7642778300616172920">Fihla okuqukethwe okuzwelayo</translation>
 <translation id="7643842463591647490">{0,plural, =1{# vula iwindi}one{# vula amawindi}other{# vula amawindi}}</translation>
diff --git a/chrome/app/resources/google_chrome_strings_as.xtb b/chrome/app/resources/google_chrome_strings_as.xtb
index ee71a73..46cd4ad 100644
--- a/chrome/app/resources/google_chrome_strings_as.xtb
+++ b/chrome/app/resources/google_chrome_strings_as.xtb
@@ -226,6 +226,7 @@
 <translation id="7106741999175697885">কাৰ্য পৰিচালক - Google Chrome</translation>
 <translation id="7140653346177713799">{COUNT,plural, =0{Chromeৰ এটা নতুন আপডে’ট উপলব্ধ হৈছে আৰু আপুনি Chrome পুনৰ লঞ্চ কৰিলেই সেইটো প্ৰযোজ্য হ’ব।}=1{Chromeৰ এটা নতুন আপডে’ট উপলব্ধ হৈছে আৰু আপুনি Chrome পুনৰ লঞ্চ কৰিলেই সেইটো প্ৰযোজ্য হ’ব। আপোনাৰ.ইনক’গনিট' ৱিণ্ড'খন পুনৰ খুলিব নোৱাৰিব।}one{Chromeৰ এটা নতুন আপডে’ট উপলব্ধ হৈছে আৰু আপুনি Chrome পুনৰ লঞ্চ কৰিলেই সেইটো প্ৰযোজ্য হ’ব। আপোনাৰ #খন.ইনক’গনিট' ৱিণ্ড' পুনৰ খুলিব নোৱাৰিব।}other{Chromeৰ এটা নতুন আপডে’ট উপলব্ধ হৈছে আৰু আপুনি Chrome পুনৰ লঞ্চ কৰিলেই সেইটো প্ৰযোজ্য হ’ব। আপোনাৰ #খন.ইনক’গনিট' ৱিণ্ড' পুনৰ খুলিব নোৱাৰিব।}}</translation>
 <translation id="7155997830309522122">যদি সেয়া হয়, অনুগ্ৰহ কৰি Chromeত আপোনাৰ ছেভ হৈ থকা পাছৱৰ্ডটো সম্পাদনা কৰক যাতে এইটো আপোনাৰ নতুন পাছৱৰ্ডটোৰ সৈতে মিলে।</translation>
+<translation id="7161904924553537242">Google Chromeলৈ স্বাগতম</translation>
 <translation id="7242029209006116544">আপুনি কোনো পৰিচালিত একাউণ্টৰ জৰিয়তে ছাইন ইন কৰিছে আৰু কোনো প্ৰশাসকক আপোনাৰ Google Chrome প্ৰ’ফাইলৰ নিয়ন্ত্ৰণ দিছে। আপোনাৰ এপ্, বুকমার্ক, ইতিহাস, পাছৱর্ড আৰু অন্য ছেটিংসমূহৰ দৰে নিজৰ Chrome ডেটা স্থায়ীভাৱে <ph name="USER_NAME" />ৰ সৈতে সংযুক্ত হ’ব। আপুনি Google একাউণ্ট ডেশ্বব’ৰ্ডৰ জৰিয়তে এই ডেটা মচিব পাৰিব কিন্তু আপুনি এই ডেটা অন্য একাউণ্টৰ সৈতে সংলগ্ন কৰিব নোৱাৰিব। আপুনি নিজৰ পূর্বে থকা Chrome ডেটা পৃথকে ৰাখিবলৈ ঐচ্ছিকভাৱে এটা নতুন প্ৰ’ফাইল সৃষ্টি কৰিব পাৰে। <ph name="LEARN_MORE" /></translation>
 <translation id="7295052994004373688">এই ভাষাটো Google Chrome UI দেখুৱাবলৈ ব্যৱহাৰ কৰা হয়</translation>
 <translation id="7296210096911315575">ব্যৱহাৰ আৰু সুৰক্ষা সম্পর্কীয় গুৰুত্বপূর্ণ তথ্য</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fa.xtb b/chrome/app/resources/google_chrome_strings_fa.xtb
index a4779c8f..16af35f 100644
--- a/chrome/app/resources/google_chrome_strings_fa.xtb
+++ b/chrome/app/resources/google_chrome_strings_fa.xtb
@@ -220,7 +220,7 @@
 <translation id="7155997830309522122">‏در این صورت، لطفاً گذرواژه ذخیره‌شده در Chrome را ویرایش کنید تا با گذرواژه جدیدتان مطابقت داشته باشد.</translation>
 <translation id="7161904924553537242">‏به Google Chrome خوش آمدید</translation>
 <translation id="7242029209006116544">‏شما با حساب مدیریت‌شده وارد سیستم می‌شوید و به سرپرست آن اجازه کنترل بر نمایه Google Chrome خود را می‌دهید. داده‌های Chrome شما شامل برنامه‌ها، نشانک‌ها، سابقه، گذرواژه‌ها و سایر تنظیمات برای همیشه به <ph name="USER_NAME" /> مرتبط خواهد شد. می‌توانید این داده‌ها را از طریق داشبورد حساب‌های Google حذف کنید اما نمی‌توانید این داده‌ها را به حساب دیگری مرتبط سازید. در صورت تمایل برای ذخیره داده‌های Chrome موجود به صورت جداگانه می‌توانید نمایه جدیدی ایجاد کنید. <ph name="LEARN_MORE" /></translation>
-<translation id="7295052994004373688">‏از این زبان برای نمایش رابط کاربری Google Chrome استفاده می‌شود</translation>
+<translation id="7295052994004373688">‏از این زبان برای نمایش میانای کاربر Google Chrome استفاده می‌شود</translation>
 <translation id="7296210096911315575">اطلاعات مهم درباره استفاده و ایمنی</translation>
 <translation id="7303916856901595720">‏حساب به نمایه جدیدی از Chrome منتقل شود؟</translation>
 <translation id="7308322188646931570">‏Chrome برای بارگیری فایل‌ها باید به حافظه دسترسی داشته باشد</translation>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 066d87c..8f4b4ec 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -1536,6 +1536,10 @@
     "sharesheet/sharesheet_types.h",
     "sharing/ack_message_handler.cc",
     "sharing/ack_message_handler.h",
+    "sharing/click_to_call/click_to_call_utils.cc",
+    "sharing/click_to_call/click_to_call_utils.h",
+    "sharing/click_to_call/phone_number_regex.cc",
+    "sharing/click_to_call/phone_number_regex.h",
     "sharing/features.cc",
     "sharing/features.h",
     "sharing/ping_message_handler.cc",
@@ -3970,10 +3974,6 @@
       "sharing/click_to_call/click_to_call_metrics.h",
       "sharing/click_to_call/click_to_call_ui_controller.cc",
       "sharing/click_to_call/click_to_call_ui_controller.h",
-      "sharing/click_to_call/click_to_call_utils.cc",
-      "sharing/click_to_call/click_to_call_utils.h",
-      "sharing/click_to_call/phone_number_regex.cc",
-      "sharing/click_to_call/phone_number_regex.h",
       "sharing/shared_clipboard/remote_copy_message_handler.cc",
       "sharing/shared_clipboard/remote_copy_message_handler.h",
       "sharing/shared_clipboard/shared_clipboard_context_menu_observer.cc",
diff --git a/chrome/browser/ash/arc/intent_helper/arc_external_protocol_dialog.cc b/chrome/browser/ash/arc/intent_helper/arc_external_protocol_dialog.cc
index 7f4b9af..e87e9cf11 100644
--- a/chrome/browser/ash/arc/intent_helper/arc_external_protocol_dialog.cc
+++ b/chrome/browser/ash/arc/intent_helper/arc_external_protocol_dialog.cc
@@ -380,7 +380,7 @@
   auto* device = it->get();
 
   ClickToCallUiController::GetOrCreateFromWebContents(web_contents)
-      ->OnDeviceSelected(GetUnescapedURLContent(url), *device,
+      ->OnDeviceSelected(url.GetContent(), *device,
                          SharingClickToCallEntryPoint::kLeftClickLink);
 }
 
diff --git a/chrome/browser/ash/arc/intent_helper/arc_external_protocol_dialog_unittest.cc b/chrome/browser/ash/arc/intent_helper/arc_external_protocol_dialog_unittest.cc
index c137956f..73437cd 100644
--- a/chrome/browser/ash/arc/intent_helper/arc_external_protocol_dialog_unittest.cc
+++ b/chrome/browser/ash/arc/intent_helper/arc_external_protocol_dialog_unittest.cc
@@ -9,6 +9,8 @@
 #include "chrome/browser/sharing/click_to_call/click_to_call_ui_controller.h"
 #include "chrome/browser/sharing/fake_device_info.h"
 #include "chrome/browser/sharing/mock_sharing_service.h"
+#include "chrome/browser/sharing/proto/click_to_call_message.pb.h"
+#include "chrome/browser/sharing/proto/sharing_message.pb.h"
 #include "chrome/browser/sharing/sharing_service_factory.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_test.h"
 #include "chrome/test/base/browser_with_test_window_test.h"
@@ -993,6 +995,13 @@
   EXPECT_TRUE(in_out_safe_to_bypass_ui);
 }
 
+MATCHER_P(ProtoEquals, message, "") {
+  std::string expected_serialized, actual_serialized;
+  message.SerializeToString(&expected_serialized);
+  arg.SerializeToString(&actual_serialized);
+  return expected_serialized == actual_serialized;
+}
+
 // Tests that clicking on a device calls through to SharingService.
 TEST_F(ArcExternalProtocolDialogTestUtils, TestSelectDeviceForTelLink) {
   CreateTab(/*started_from_arc=*/false);
@@ -1004,13 +1013,18 @@
   std::vector<std::unique_ptr<syncer::DeviceInfo>> devices;
   devices.push_back(CreateFakeDeviceInfo(device_guid));
 
-  EXPECT_CALL(
-      *sharing_service,
-      SendMessageToDevice(Property(&syncer::DeviceInfo::guid, device_guid),
-                          testing::_, testing::_, testing::_));
+  GURL phone_number("tel:073%2099%209999%2099");
+
+  chrome_browser_sharing::SharingMessage sharing_message;
+  sharing_message.mutable_click_to_call_message()->set_phone_number(
+      phone_number.GetContent());
+  EXPECT_CALL(*sharing_service,
+              SendMessageToDevice(
+                  Property(&syncer::DeviceInfo::guid, device_guid), testing::_,
+                  ProtoEquals(sharing_message), testing::_));
 
   OnIntentPickerClosedForTesting(
-      rvh->GetProcess()->GetID(), rvh->GetRoutingID(), GURL("tel:0123456789"),
+      rvh->GetProcess()->GetID(), rvh->GetRoutingID(), phone_number,
       /*safe_to_bypass_ui=*/true, std::move(handlers), std::move(devices),
       /*selected_app_package=*/device_guid, apps::PickerEntryType::kDevice,
       apps::IntentPickerCloseReason::OPEN_APP, /*should_persist=*/false);
diff --git a/chrome/browser/ash/arc/screen_capture/arc_screen_capture_session.cc b/chrome/browser/ash/arc/screen_capture/arc_screen_capture_session.cc
index 6dd787c..344614d7 100644
--- a/chrome/browser/ash/arc/screen_capture/arc_screen_capture_session.cc
+++ b/chrome/browser/ash/arc/screen_capture/arc_screen_capture_session.cc
@@ -72,13 +72,13 @@
 struct ArcScreenCaptureSession::DesktopTexture {
   DesktopTexture(GLuint texture,
                  gfx::Size size,
-                 std::unique_ptr<viz::SingleReleaseCallback> release_callback)
+                 viz::ReleaseCallback release_callback)
       : texture_(texture),
         size_(size),
         release_callback_(std::move(release_callback)) {}
   const GLuint texture_;
   gfx::Size size_;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback_;
+  viz::ReleaseCallback release_callback_;
 };
 
 // static
@@ -288,8 +288,7 @@
       result->GetTextureResult()->sync_token.GetConstData());
   GLuint src_texture = gl->CreateAndConsumeTextureCHROMIUM(
       result->GetTextureResult()->mailbox.name);
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback =
-      result->TakeTextureOwnership();
+  viz::ReleaseCallback release_callback = result->TakeTextureOwnership();
 
   std::unique_ptr<DesktopTexture> desktop_texture =
       std::make_unique<DesktopTexture>(src_texture, result->size(),
@@ -329,7 +328,7 @@
   if (desktop_texture->release_callback_) {
     gpu::SyncToken sync_token;
     gl->GenSyncTokenCHROMIUM(sync_token.GetData());
-    desktop_texture->release_callback_->Run(sync_token, false);
+    std::move(desktop_texture->release_callback_).Run(sync_token, false);
   }
 
   context_provider->ContextSupport()->SignalQuery(
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index c95c521..fe0bbd0e 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -2258,8 +2258,14 @@
     "first_run/first_run.h",
     "full_restore/app_launch_handler.cc",
     "full_restore/app_launch_handler.h",
+    "full_restore/arc_ghost_window_delegate.cc",
+    "full_restore/arc_ghost_window_delegate.h",
+    "full_restore/arc_ghost_window_shell_surface.cc",
+    "full_restore/arc_ghost_window_shell_surface.h",
     "full_restore/arc_window_handler.cc",
     "full_restore/arc_window_handler.h",
+    "full_restore/arc_window_utils.cc",
+    "full_restore/arc_window_utils.h",
     "full_restore/full_restore_arc_task_handler.cc",
     "full_restore/full_restore_arc_task_handler.h",
     "full_restore/full_restore_arc_task_handler_factory.cc",
@@ -3981,7 +3987,7 @@
     "fileapi/recent_disk_source_unittest.cc",
     "fileapi/recent_model_unittest.cc",
     "fileapi/test/fake_recent_source.cc",
-    "full_restore/arc_window_handler_unittest.cc",
+    "full_restore/arc_window_utils_unittest.cc",
     "full_restore/full_restore_prefs_unittest.cc",
     "full_restore/full_restore_service_unittest.cc",
     "input_method/assistive_suggester_unittest.cc",
diff --git a/chrome/browser/chromeos/full_restore/app_launch_handler.cc b/chrome/browser/chromeos/full_restore/app_launch_handler.cc
index a3fe279..25f5487 100644
--- a/chrome/browser/chromeos/full_restore/app_launch_handler.cc
+++ b/chrome/browser/chromeos/full_restore/app_launch_handler.cc
@@ -17,7 +17,8 @@
 #include "chrome/browser/apps/app_service/browser_app_launcher.h"
 #include "chrome/browser/ash/login/session/user_session_manager.h"
 #include "chrome/browser/ash/profiles/profile_helper.h"
-#include "chrome/browser/chromeos/full_restore/arc_window_handler.h"
+#include "chrome/browser/chromeos/full_restore/arc_window_utils.h"
+#include "chrome/browser/chromeos/full_restore/full_restore_arc_task_handler.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/common/chrome_switches.h"
 #include "components/full_restore/app_launch_info.h"
@@ -253,6 +254,7 @@
     const ::full_restore::RestoreData::LaunchList& launch_list) {
   auto* proxy = apps::AppServiceProxyFactory::GetForProfile(profile_);
   DCHECK(proxy);
+  auto* arc_handler = FullRestoreArcTaskHandler::GetForProfile(profile_);
 
   for (const auto& it : launch_list) {
     DCHECK(it.second->event_flag.has_value());
@@ -269,6 +271,14 @@
     ::full_restore::FullRestoreReadHandler::GetInstance()
         ->SetArcSessionIdForWindowId(arc_session_id, it.first);
 
+#if BUILDFLAG(ENABLE_WAYLAND_SERVER)
+    if (!window_info->bounds.is_null() && arc_handler &&
+        arc_handler->window_handler()) {
+      arc_handler->window_handler()->LaunchArcGhostWindow(
+          app_id, arc_session_id, it.second.get());
+    }
+#endif
+
     if (it.second->intent.has_value()) {
       proxy->LaunchAppWithIntent(app_id, it.second->event_flag.value(),
                                  std::move(it.second->intent.value()),
diff --git a/chrome/browser/chromeos/full_restore/arc_ghost_window_delegate.cc b/chrome/browser/chromeos/full_restore/arc_ghost_window_delegate.cc
new file mode 100644
index 0000000..0eec1ac
--- /dev/null
+++ b/chrome/browser/chromeos/full_restore/arc_ghost_window_delegate.cc
@@ -0,0 +1,142 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/full_restore/arc_ghost_window_delegate.h"
+
+#include "chrome/browser/chromeos/full_restore/arc_window_utils.h"
+#include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
+#include "ui/display/display.h"
+#include "ui/display/screen.h"
+
+namespace chromeos {
+namespace full_restore {
+
+ArcGhostWindowDelegate::ArcGhostWindowDelegate(
+    exo::ClientControlledShellSurface* shell_surface,
+    chromeos::full_restore::ArcWindowHandler* handler,
+    int window_id,
+    int64_t display_id,
+    gfx::Rect bounds)
+    : window_id_(window_id),
+      bounds_(gfx::Rect(bounds)),
+      window_state_(chromeos::WindowStateType::kDefault),
+      shell_surface_(shell_surface) {
+  DCHECK(shell_surface);
+  observation_.Observe(handler);
+  SetDisplayId(display_id);
+}
+ArcGhostWindowDelegate::~ArcGhostWindowDelegate() = default;
+
+void ArcGhostWindowDelegate::OnGeometryChanged(const gfx::Rect& geometry) {}
+
+void ArcGhostWindowDelegate::OnStateChanged(
+    chromeos::WindowStateType old_state_type,
+    chromeos::WindowStateType new_state) {
+  switch (new_state) {
+    case chromeos::WindowStateType::kNormal:
+    case chromeos::WindowStateType::kDefault:
+      shell_surface_->SetRestored();
+      break;
+    case chromeos::WindowStateType::kMinimized:
+      shell_surface_->SetMinimized();
+      break;
+    case chromeos::WindowStateType::kMaximized:
+      shell_surface_->SetMaximized();
+      break;
+    case chromeos::WindowStateType::kFullscreen:
+      shell_surface_->SetFullscreen(true);
+      break;
+    default:
+      NOTIMPLEMENTED();
+      break;
+  }
+  shell_surface_->OnSurfaceCommit();
+  window_state_ = new_state;
+}
+
+void ArcGhostWindowDelegate::OnBoundsChanged(
+    chromeos::WindowStateType current_state,
+    chromeos::WindowStateType requested_state,
+    int64_t display_id,
+    const gfx::Rect& bounds_in_screen,
+    bool is_resize,
+    int bounds_change) {
+  auto* window_state =
+      ash::WindowState::Get(shell_surface_->GetWidget()->GetNativeWindow());
+
+  if (!window_state || !shell_surface_->host_window()->GetRootWindow())
+    return;
+
+  display::Display target_display;
+  const display::Screen* screen = display::Screen::GetScreen();
+
+  if (!screen->GetDisplayWithDisplayId(display_id, &target_display))
+    return;
+
+  if (display_id_ != display_id) {
+    if (!SetDisplayId(display_id))
+      return;
+  }
+
+  // Don't change the bounds in maximize/fullscreen/pinned state.
+  if (window_state->IsMaximizedOrFullscreenOrPinned() &&
+      requested_state == window_state->GetStateType()) {
+    return;
+  }
+
+  gfx::Rect bounds_in_display(bounds_in_screen);
+  bounds_in_display.Offset(-target_display.bounds().OffsetFromOrigin());
+  shell_surface_->SetBounds(display_id, bounds_in_display);
+
+  if (requested_state != window_state->GetStateType()) {
+    DCHECK(requested_state == chromeos::WindowStateType::kLeftSnapped ||
+           requested_state == chromeos::WindowStateType::kRightSnapped);
+
+    if (requested_state == chromeos::WindowStateType::kLeftSnapped)
+      shell_surface_->SetSnappedToLeft();
+    else
+      shell_surface_->SetSnappedToRight();
+    // TODO(sstan): Currently the snap state will be ignored. Sync it to ARC.
+  }
+  shell_surface_->OnSurfaceCommit();
+  bounds_ = gfx::Rect(bounds_in_display);
+  UpdateWindowInfoToArc();
+}
+
+void ArcGhostWindowDelegate::OnDragStarted(int component) {}
+
+void ArcGhostWindowDelegate::OnDragFinished(int x, int y, bool canceled) {}
+
+void ArcGhostWindowDelegate::OnZoomLevelChanged(exo::ZoomChange zoom_change) {}
+
+// ArcWindowHandler::Observer
+void ArcGhostWindowDelegate::OnAppInstanceConnected() {
+  // Update window info to ARC when app instance connected, since the previous
+  // window info may not be delivered.
+  UpdateWindowInfoToArc();
+}
+
+bool ArcGhostWindowDelegate::SetDisplayId(int64_t display_id) {
+  base::Optional<double> scale_factor = GetDisplayScaleFactor(display_id);
+  if (!scale_factor.has_value()) {
+    LOG(ERROR) << "Invalid display id for ARC Ghost Window";
+    scale_factor_ = 1.;
+    return false;
+  }
+  scale_factor_ = scale_factor.value();
+  display_id_ = display_id;
+  return true;
+}
+
+void ArcGhostWindowDelegate::UpdateWindowInfoToArc() {
+  auto window_info = arc::mojom::WindowInfo::New();
+  window_info->window_id = window_id_;
+  window_info->display_id = display_id_;
+  window_info->bounds = gfx::ScaleToRoundedRect(bounds_, scale_factor_);
+  window_info->state = (int)window_state_;
+  arc::UpdateWindowInfo(std::move(window_info));
+}
+
+}  // namespace full_restore
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/full_restore/arc_ghost_window_delegate.h b/chrome/browser/chromeos/full_restore/arc_ghost_window_delegate.h
new file mode 100644
index 0000000..9e5032b
--- /dev/null
+++ b/chrome/browser/chromeos/full_restore/arc_ghost_window_delegate.h
@@ -0,0 +1,71 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_FULL_RESTORE_ARC_GHOST_WINDOW_DELEGATE_H_
+#define CHROME_BROWSER_CHROMEOS_FULL_RESTORE_ARC_GHOST_WINDOW_DELEGATE_H_
+
+#include "chrome/browser/chromeos/full_restore/arc_window_handler.h"
+#include "chromeos/ui/base/window_state_type.h"
+#include "components/exo/client_controlled_shell_surface.h"
+#include "ui/gfx/geometry/rect.h"
+
+namespace chromeos {
+namespace full_restore {
+
+// The ArcGhostWindowDelegate class is a self controlled shell surface delegate
+// to handle ARC ghost windows, e.g. when window bounds or window state is
+// changed, notify ARC.
+class ArcGhostWindowDelegate
+    : public exo::ClientControlledShellSurface::Delegate,
+      public chromeos::full_restore::ArcWindowHandler::Observer {
+ public:
+  ArcGhostWindowDelegate(exo::ClientControlledShellSurface* shell_surface,
+                         chromeos::full_restore::ArcWindowHandler* handler,
+                         int window_id,
+                         int64_t display_id,
+                         gfx::Rect bounds);
+  ~ArcGhostWindowDelegate() override;
+
+  // exo::ClientControlledShellSurface::Delegate
+  void OnGeometryChanged(const gfx::Rect& geometry) override;
+
+  void OnStateChanged(chromeos::WindowStateType old_state_type,
+                      chromeos::WindowStateType new_state) override;
+
+  void OnBoundsChanged(chromeos::WindowStateType current_state,
+                       chromeos::WindowStateType requested_state,
+                       int64_t display_id,
+                       const gfx::Rect& bounds_in_screen,
+                       bool is_resize,
+                       int bounds_change) override;
+
+  void OnDragStarted(int component) override;
+
+  void OnDragFinished(int x, int y, bool canceled) override;
+
+  void OnZoomLevelChanged(exo::ZoomChange zoom_change) override;
+
+  // ArcWindowHandler::Observer
+  void OnAppInstanceConnected() override;
+
+ private:
+  bool SetDisplayId(int64_t display_id);
+  void UpdateWindowInfoToArc();
+
+  int window_id_;
+  gfx::Rect bounds_;
+  int64_t display_id_;
+  double scale_factor_;
+  chromeos::WindowStateType window_state_;
+  exo::ClientControlledShellSurface* shell_surface_;
+
+  base::ScopedObservation<chromeos::full_restore::ArcWindowHandler,
+                          chromeos::full_restore::ArcWindowHandler::Observer>
+      observation_{this};
+};
+
+}  // namespace full_restore
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_CHROMEOS_FULL_RESTORE_ARC_GHOST_WINDOW_DELEGATE_H_
diff --git a/chrome/browser/chromeos/full_restore/arc_ghost_window_shell_surface.cc b/chrome/browser/chromeos/full_restore/arc_ghost_window_shell_surface.cc
new file mode 100644
index 0000000..bebae4b
--- /dev/null
+++ b/chrome/browser/chromeos/full_restore/arc_ghost_window_shell_surface.cc
@@ -0,0 +1,95 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/full_restore/arc_ghost_window_shell_surface.h"
+
+#include "ash/wm/desks/desks_util.h"
+#include "chrome/browser/chromeos/full_restore/arc_ghost_window_delegate.h"
+#include "chrome/browser/chromeos/full_restore/arc_window_utils.h"
+#include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
+#include "components/exo/buffer.h"
+#include "gpu/command_buffer/client/gpu_memory_buffer_manager.h"
+#include "ui/aura/env.h"
+#include "ui/views/window/caption_button_types.h"
+
+namespace chromeos {
+namespace full_restore {
+
+std::unique_ptr<exo::ClientControlledShellSurface> InitArcGhostWindow(
+    ArcWindowHandler* window_handler,
+    const std::string& app_id,
+    int window_id,
+    int64_t display_id,
+    gfx::Rect bounds,
+    std::unique_ptr<views::View> content) {
+  base::Optional<double> scale_factor = GetDisplayScaleFactor(display_id);
+  DCHECK(scale_factor.has_value());
+
+  // TODO(sstan): Handle the desk container from full_restore data.
+  int container = ash::desks_util::GetActiveDeskContainerId();
+
+  auto surface = std::make_unique<exo::Surface>();
+  auto shell_surface = std::make_unique<ArcGhostWindowShellSurface>(
+      std::move(surface), container, scale_factor.value());
+
+  shell_surface->SetApplicationId(app_id.c_str());
+  shell_surface->set_delegate(std::make_unique<ArcGhostWindowDelegate>(
+      shell_surface.get(), window_handler, window_id, display_id, bounds));
+  shell_surface->SetBounds(display_id, bounds);
+
+  // Set frame buttons.
+  constexpr uint32_t kAllButtonMask =
+      1 << views::CAPTION_BUTTON_ICON_MINIMIZE |
+      1 << views::CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE |
+      1 << views::CAPTION_BUTTON_ICON_CLOSE |
+      1 << views::CAPTION_BUTTON_ICON_BACK |
+      1 << views::CAPTION_BUTTON_ICON_MENU;
+  shell_surface->SetFrameButtons(kAllButtonMask, kAllButtonMask);
+
+  exo::ShellSurfaceBase::OverlayParams overlay_params(std::move(content));
+  overlay_params.translucent = true;
+  overlay_params.overlaps_frame = false;
+  shell_surface->AddOverlay(std::move(overlay_params));
+
+  // Relayout overlay.
+  shell_surface->controller_surface()->Commit();
+  shell_surface->GetWidget()->LayoutRootViewIfNecessary();
+
+  return shell_surface;
+}
+
+ArcGhostWindowShellSurface::ArcGhostWindowShellSurface(
+    std::unique_ptr<exo::Surface> surface,
+    int container,
+    double scale_factor)
+    : ClientControlledShellSurface(surface.get(),
+                                   /*can_minimize=*/true,
+                                   container,
+                                   /*default_scale_cancellation=*/true) {
+  controller_surface_ = std::move(surface);
+  buffer_ = std::make_unique<exo::Buffer>(
+      aura::Env::GetInstance()
+          ->context_factory()
+          ->GetGpuMemoryBufferManager()
+          ->CreateGpuMemoryBuffer({1, 1}, gfx::BufferFormat::RGBA_8888,
+                                  gfx::BufferUsage::GPU_READ,
+                                  gpu::kNullSurfaceHandle));
+  controller_surface_->Attach(buffer_.get());
+  controller_surface_->SetFrame(exo::SurfaceFrameType::NORMAL);
+  controller_surface_->Commit();
+  SetScale(scale_factor);
+  CommitPendingScale();
+}
+
+ArcGhostWindowShellSurface::~ArcGhostWindowShellSurface() {
+  controller_surface_.reset();
+  buffer_.reset();
+}
+
+exo::Surface* ArcGhostWindowShellSurface::controller_surface() {
+  return controller_surface_.get();
+}
+
+}  // namespace full_restore
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/full_restore/arc_ghost_window_shell_surface.h b/chrome/browser/chromeos/full_restore/arc_ghost_window_shell_surface.h
new file mode 100644
index 0000000..a6fc948
--- /dev/null
+++ b/chrome/browser/chromeos/full_restore/arc_ghost_window_shell_surface.h
@@ -0,0 +1,53 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_FULL_RESTORE_ARC_GHOST_WINDOW_SHELL_SURFACE_H_
+#define CHROME_BROWSER_CHROMEOS_FULL_RESTORE_ARC_GHOST_WINDOW_SHELL_SURFACE_H_
+
+#include <utility>
+
+#include "components/exo/client_controlled_shell_surface.h"
+#include "ui/gfx/geometry/rect.h"
+#include "ui/views/view.h"
+
+namespace views {
+class View;
+}
+
+namespace chromeos {
+namespace full_restore {
+
+class ArcWindowHandler;
+
+std::unique_ptr<exo::ClientControlledShellSurface> InitArcGhostWindow(
+    ArcWindowHandler* window_handler,
+    const std::string& app_id,
+    int window_id,
+    int64_t display_id,
+    gfx::Rect bounds,
+    std::unique_ptr<views::View> content);
+
+// ArcGhostWindowShellSurface class is a shell surface which controlled its
+// root surface.
+class ArcGhostWindowShellSurface : public exo::ClientControlledShellSurface {
+ public:
+  ArcGhostWindowShellSurface(std::unique_ptr<exo::Surface> surface,
+                             int container,
+                             double scale_factor);
+  ArcGhostWindowShellSurface(const ArcGhostWindowShellSurface&) = delete;
+  ArcGhostWindowShellSurface& operator=(const ArcGhostWindowShellSurface&) =
+      delete;
+  ~ArcGhostWindowShellSurface() override;
+
+  exo::Surface* controller_surface();
+
+ private:
+  std::unique_ptr<exo::Surface> controller_surface_;
+  std::unique_ptr<exo::Buffer> buffer_;
+};
+
+}  // namespace full_restore
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_CHROMEOS_FULL_RESTORE_ARC_GHOST_WINDOW_SHELL_SURFACE_H_
diff --git a/chrome/browser/chromeos/full_restore/arc_window_handler.cc b/chrome/browser/chromeos/full_restore/arc_window_handler.cc
index a0012f69..a368feb4 100644
--- a/chrome/browser/chromeos/full_restore/arc_window_handler.cc
+++ b/chrome/browser/chromeos/full_restore/arc_window_handler.cc
@@ -4,64 +4,17 @@
 
 #include "chrome/browser/chromeos/full_restore/arc_window_handler.h"
 
-#include "ash/public/cpp/ash_features.h"
-#include "components/arc/arc_util.h"
+#include "chrome/browser/chromeos/full_restore/arc_ghost_window_shell_surface.h"
+#include "chrome/browser/chromeos/full_restore/arc_window_utils.h"
 #include "components/exo/shell_surface_util.h"
-#include "ui/display/display.h"
-#include "ui/display/screen.h"
+#include "components/exo/wm_helper.h"
+#include "components/full_restore/app_restore_data.h"
 #include "ui/gfx/geometry/rect.h"
-
-namespace {
-
-base::Optional<double> GetDisplayScaleFactor(int64_t display_id) {
-  display::Display display;
-  if (display::Screen::GetScreen()->GetDisplayWithDisplayId(display_id,
-                                                            &display)) {
-    return display.device_scale_factor();
-  }
-  return base::nullopt;
-}
-
-void ScaleToRoundedRect(apps::mojom::Rect* rect, double scale_factor) {
-  if (rect == nullptr)
-    return;
-  auto res_rect = gfx::ScaleToRoundedRect(
-      gfx::Rect(rect->x, rect->y, rect->width, rect->height), scale_factor);
-  rect->x = res_rect.x();
-  rect->y = res_rect.y();
-  rect->width = res_rect.width();
-  rect->height = res_rect.height();
-}
-
-}  // namespace
+#include "ui/views/background.h"
 
 namespace chromeos {
 namespace full_restore {
 
-bool IsArcGhostWindowEnabled() {
-  return ash::features::IsFullRestoreEnabled() &&
-         ash::features::IsArcGhostWindowEnabled() && arc::IsArcVmEnabled();
-}
-
-apps::mojom::WindowInfoPtr HandleArcWindowInfo(
-    apps::mojom::WindowInfoPtr window_info) {
-  // Remove ARC bounds info if the ghost window disabled. The bounds will
-  // be controlled by ARC.
-  if (!IsArcGhostWindowEnabled()) {
-    window_info->bounds.reset();
-    return window_info;
-  }
-  auto scale_factor = GetDisplayScaleFactor(window_info->display_id);
-  // Remove ARC bounds info if the the display doesn't exist. The bounds will
-  // be controlled by ARC.
-  if (!scale_factor.has_value()) {
-    window_info->bounds.reset();
-    return window_info;
-  }
-  ScaleToRoundedRect(window_info->bounds.get(), scale_factor.value());
-  return window_info;
-}
-
 ArcWindowHandler::WindowSessionResolver::WindowSessionResolver(
     ShellSurfaceMap* session_id_map)
     : session_id_map_(session_id_map) {}
@@ -88,6 +41,24 @@
 
 ArcWindowHandler::~ArcWindowHandler() = default;
 
+void ArcWindowHandler::LaunchArcGhostWindow(
+    const std::string& app_id,
+    int32_t session_id,
+    ::full_restore::AppRestoreData* restore_data) {
+  DCHECK(restore_data);
+  DCHECK(restore_data->current_bounds.has_value());
+  DCHECK(restore_data->display_id.has_value());
+
+  auto container = std::make_unique<views::View>();
+  container->SetBackground(views::CreateSolidBackground(SK_ColorWHITE));
+
+  session_id_to_shell_surface_.emplace(
+      session_id, InitArcGhostWindow(this, app_id, session_id,
+                                     restore_data->display_id.value(),
+                                     restore_data->current_bounds.value(),
+                                     std::move(container)));
+}
+
 void ArcWindowHandler::AddObserver(Observer* observer) {
   observer_list_.AddObserver(observer);
 }
diff --git a/chrome/browser/chromeos/full_restore/arc_window_handler.h b/chrome/browser/chromeos/full_restore/arc_window_handler.h
index 3b27a6e..ab4df203 100644
--- a/chrome/browser/chromeos/full_restore/arc_window_handler.h
+++ b/chrome/browser/chromeos/full_restore/arc_window_handler.h
@@ -9,29 +9,14 @@
 #include "base/observer_list_types.h"
 #include "components/exo/client_controlled_shell_surface.h"
 #include "components/exo/wm_helper.h"
-#include "components/services/app_service/public/mojom/types.mojom.h"
 
-namespace exo {
-class ClientControlledShellSurface;
+namespace full_restore {
+struct AppRestoreData;
 }
 
 namespace chromeos {
 namespace full_restore {
 
-// Returns true if the ARC supports ghost window.
-bool IsArcGhostWindowEnabled();
-
-// Returns window info compatible with ARC. If the window bounds is not
-// appropriate for the display, it will be removed.
-//
-// The app window bounds can be decided if and only if it matches the
-// conditions:
-//   1. The |display_id| still exists on system.
-//   2. Previous ARC app window bounds on display is recorded.
-// Otherwise returns null.
-apps::mojom::WindowInfoPtr HandleArcWindowInfo(
-    apps::mojom::WindowInfoPtr window_info);
-
 // The ArcWindowHandler class provides control for ARC ghost window.
 class ArcWindowHandler {
   // Map from window_session_id to exo::ClientControlledShellSurface.
@@ -56,6 +41,7 @@
     ShellSurfaceMap* session_id_map_;
   };
 
+ public:
   // This class is used to notify observers that AppInstance is connected.
   class Observer : public base::CheckedObserver {
    public:
@@ -66,12 +52,15 @@
     ~Observer() override = default;
   };
 
- public:
   ArcWindowHandler();
   ArcWindowHandler(const ArcWindowHandler&) = delete;
   ArcWindowHandler& operator=(const ArcWindowHandler&) = delete;
   ~ArcWindowHandler();
 
+  void LaunchArcGhostWindow(const std::string& app_id,
+                            int32_t session_id,
+                            ::full_restore::AppRestoreData* restore_data);
+
   void AddObserver(Observer* observer);
   void RemoveObserver(Observer* observer);
   bool HasObserver(Observer* observer);
diff --git a/chrome/browser/chromeos/full_restore/arc_window_utils.cc b/chrome/browser/chromeos/full_restore/arc_window_utils.cc
new file mode 100644
index 0000000..a30bfef
--- /dev/null
+++ b/chrome/browser/chromeos/full_restore/arc_window_utils.cc
@@ -0,0 +1,69 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/full_restore/arc_window_utils.h"
+
+#include "ash/public/cpp/ash_features.h"
+#include "components/arc/arc_util.h"
+#include "components/exo/wm_helper.h"
+#include "ui/display/display.h"
+#include "ui/display/screen.h"
+
+namespace {
+
+void ScaleToRoundedRect(apps::mojom::Rect* rect, double scale_factor) {
+  if (rect == nullptr)
+    return;
+
+  auto res_rect = gfx::ScaleToRoundedRect(
+      gfx::Rect(rect->x, rect->y, rect->width, rect->height), scale_factor);
+  rect->x = res_rect.x();
+  rect->y = res_rect.y();
+  rect->width = res_rect.width();
+  rect->height = res_rect.height();
+}
+
+}  // namespace
+
+namespace chromeos {
+namespace full_restore {
+
+bool IsArcGhostWindowEnabled() {
+  return ash::features::IsFullRestoreEnabled() &&
+         ash::features::IsArcGhostWindowEnabled() && arc::IsArcVmEnabled() &&
+         exo::WMHelper::HasInstance();
+}
+
+base::Optional<double> GetDisplayScaleFactor(int64_t display_id) {
+  display::Display display;
+  if (display::Screen::GetScreen()->GetDisplayWithDisplayId(display_id,
+                                                            &display)) {
+    return display.device_scale_factor();
+  }
+  return base::nullopt;
+}
+
+apps::mojom::WindowInfoPtr HandleArcWindowInfo(
+    apps::mojom::WindowInfoPtr window_info) {
+  // Remove ARC bounds info if the ghost window disabled. The bounds will
+  // be controlled by ARC.
+  if (!IsArcGhostWindowEnabled()) {
+    window_info->bounds.reset();
+    return window_info;
+  }
+  auto scale_factor = GetDisplayScaleFactor(window_info->display_id);
+
+  // Remove ARC bounds info if the the display doesn't exist. The bounds will
+  // be controlled by ARC.
+  if (!scale_factor.has_value()) {
+    window_info->bounds.reset();
+    return window_info;
+  }
+
+  ScaleToRoundedRect(window_info->bounds.get(), scale_factor.value());
+  return window_info;
+}
+
+}  // namespace full_restore
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/full_restore/arc_window_utils.h b/chrome/browser/chromeos/full_restore/arc_window_utils.h
new file mode 100644
index 0000000..baaebf77
--- /dev/null
+++ b/chrome/browser/chromeos/full_restore/arc_window_utils.h
@@ -0,0 +1,35 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_FULL_RESTORE_ARC_WINDOW_UTILS_H_
+#define CHROME_BROWSER_CHROMEOS_FULL_RESTORE_ARC_WINDOW_UTILS_H_
+
+#include <utility>
+
+#include "base/optional.h"
+#include "components/services/app_service/public/mojom/types.mojom.h"
+
+namespace chromeos {
+namespace full_restore {
+
+base::Optional<double> GetDisplayScaleFactor(int64_t display_id);
+
+// Returns true if the ARC supports ghost window.
+bool IsArcGhostWindowEnabled();
+
+// Returns window info compatible with ARC. If the window bounds is not
+// appropriate for the display, it will be removed.
+//
+// The app window bounds can be decided if and only if it matches the
+// conditions:
+//   1. The |display_id| still exists on system.
+//   2. Previous ARC app window bounds on display is recorded.
+// Otherwise returns null.
+apps::mojom::WindowInfoPtr HandleArcWindowInfo(
+    apps::mojom::WindowInfoPtr window_info);
+
+}  // namespace full_restore
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_CHROMEOS_FULL_RESTORE_ARC_WINDOW_UTILS_H_
diff --git a/chrome/browser/chromeos/full_restore/arc_window_handler_unittest.cc b/chrome/browser/chromeos/full_restore/arc_window_utils_unittest.cc
similarity index 76%
rename from chrome/browser/chromeos/full_restore/arc_window_handler_unittest.cc
rename to chrome/browser/chromeos/full_restore/arc_window_utils_unittest.cc
index 6b92053..3c65058d 100644
--- a/chrome/browser/chromeos/full_restore/arc_window_handler_unittest.cc
+++ b/chrome/browser/chromeos/full_restore/arc_window_utils_unittest.cc
@@ -2,10 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/chromeos/full_restore/arc_window_handler.h"
+#include "chrome/browser/chromeos/full_restore/arc_window_utils.h"
 
 #include "ash/public/cpp/ash_features.h"
 #include "base/test/scoped_feature_list.h"
+#include "components/exo/wm_helper.h"
+#include "components/exo/wm_helper_chromeos.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/display/display.h"
 #include "ui/display/test/test_screen.h"
@@ -20,9 +22,9 @@
 namespace chromeos {
 namespace full_restore {
 
-class ArcWindowHandlerTest : public testing::Test {
+class ArcWindowUtilsTest : public testing::Test {
  protected:
-  ArcWindowHandlerTest() {
+  ArcWindowUtilsTest() {
     const display::Display test_display = test_screen_.GetPrimaryDisplay();
     display::Display display(test_display);
     display.set_id(TEST_DISPLAY_ID);
@@ -33,26 +35,30 @@
     test_screen_.display_list().AddDisplay(display,
                                            display::DisplayList::Type::PRIMARY);
     display::Screen::SetScreenInstance(&test_screen_);
-    auto* command_line = base::CommandLine::ForCurrentProcess();
-    command_line->InitFromArgv({"", "--enable-arcvm"});
+    base::CommandLine::ForCurrentProcess()->InitFromArgv(
+        {"", "--enable-arcvm"});
   }
-  ArcWindowHandlerTest(const ArcWindowHandlerTest&) = delete;
-  ArcWindowHandlerTest& operator=(const ArcWindowHandlerTest&) = delete;
-  ~ArcWindowHandlerTest() override {
+  ArcWindowUtilsTest(const ArcWindowUtilsTest&) = delete;
+  ArcWindowUtilsTest& operator=(const ArcWindowUtilsTest&) = delete;
+  ~ArcWindowUtilsTest() override {
     display::Screen::SetScreenInstance(nullptr);
   }
 
   void SetUp() override {
     scoped_feature_list_.InitWithFeatures(
         {ash::features::kFullRestore, ash::features::kArcGhostWindow}, {});
+    wm_helper_ = std::make_unique<exo::WMHelperChromeOS>();
   }
 
+  void TearDown() override { wm_helper_.reset(); }
+
  private:
   display::test::TestScreen test_screen_;
   base::test::ScopedFeatureList scoped_feature_list_;
+  std::unique_ptr<exo::WMHelper> wm_helper_;
 };
 
-TEST_F(ArcWindowHandlerTest, ArcWindowInfoInvalidDisplayValidBoundsTest) {
+TEST_F(ArcWindowUtilsTest, ArcWindowInfoInvalidDisplayValidBoundsTest) {
   apps::mojom::WindowInfoPtr window_info = apps::mojom::WindowInfo::New();
 
   window_info->display_id = display::kInvalidDisplayId;
@@ -62,7 +68,7 @@
   EXPECT_TRUE(arc_window_info->bounds.is_null());
 }
 
-TEST_F(ArcWindowHandlerTest, ArcWindowInfoValidDisplayInvalidBoundsTest) {
+TEST_F(ArcWindowUtilsTest, ArcWindowInfoValidDisplayInvalidBoundsTest) {
   apps::mojom::WindowInfoPtr window_info = apps::mojom::WindowInfo::New();
 
   window_info->display_id = TEST_DISPLAY_ID;
@@ -71,7 +77,7 @@
   EXPECT_TRUE(arc_window_info->bounds.is_null());
 }
 
-TEST_F(ArcWindowHandlerTest, ArcWindowInfoValidDisplayAndBoundsTest) {
+TEST_F(ArcWindowUtilsTest, ArcWindowInfoValidDisplayAndBoundsTest) {
   apps::mojom::WindowInfoPtr window_info = apps::mojom::WindowInfo::New();
   window_info->display_id = TEST_DISPLAY_ID;
   window_info->bounds = apps::mojom::Rect::New();
diff --git a/chrome/browser/chromeos/full_restore/full_restore_arc_task_handler.cc b/chrome/browser/chromeos/full_restore/full_restore_arc_task_handler.cc
index 299c9d3..ed95875 100644
--- a/chrome/browser/chromeos/full_restore/full_restore_arc_task_handler.cc
+++ b/chrome/browser/chromeos/full_restore/full_restore_arc_task_handler.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/chromeos/full_restore/full_restore_arc_task_handler.h"
 
+#include "chrome/browser/chromeos/full_restore/arc_window_utils.h"
 #include "chrome/browser/chromeos/full_restore/full_restore_arc_task_handler_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "components/full_restore/full_restore_utils.h"
diff --git a/chrome/browser/chromeos/full_restore/full_restore_arc_task_handler.h b/chrome/browser/chromeos/full_restore/full_restore_arc_task_handler.h
index 8c7e864e..8d9b45c 100644
--- a/chrome/browser/chromeos/full_restore/full_restore_arc_task_handler.h
+++ b/chrome/browser/chromeos/full_restore/full_restore_arc_task_handler.h
@@ -36,6 +36,10 @@
 
   ~FullRestoreArcTaskHandler() override;
 
+#if BUILDFLAG(ENABLE_WAYLAND_SERVER)
+  ArcWindowHandler* window_handler() { return window_handler_.get(); }
+#endif
+
   // ArcAppListPrefs::Observer.
   void OnTaskCreated(int32_t task_id,
                      const std::string& package_name,
diff --git a/chrome/browser/chromeos/policy/remote_commands/crd_host_delegate.cc b/chrome/browser/chromeos/policy/remote_commands/crd_host_delegate.cc
index 605e6c4..0de3d8b 100644
--- a/chrome/browser/chromeos/policy/remote_commands/crd_host_delegate.cc
+++ b/chrome/browser/chromeos/policy/remote_commands/crd_host_delegate.cc
@@ -30,6 +30,10 @@
 
 namespace {
 
+// Add a common prefix to all our logs, to make them easy to find.
+#define CRD_DVLOG(level) DVLOG(level) << "CRD: "
+#define CRD_LOG(level) LOG(level) << "CRD: "
+
 // OAuth2 Token scopes
 constexpr char kCloudDevicesOAuth2Scope[] =
     "https://www.googleapis.com/auth/clouddevices";
@@ -57,6 +61,20 @@
   }
 };
 
+std::string FormatErrorMessage(const std::string& error_state,
+                               const base::Value& message) {
+  if (error_state == remoting::kHostStateDomainError) {
+    return "Invalid domain";
+  } else {
+    const std::string* error_code =
+        message.FindStringKey(remoting::kErrorMessageCode);
+    if (error_code)
+      return *error_code;
+    else
+      return "Unknown Error";
+  }
+}
+
 }  // namespace
 
 // Helper class that asynchronously fetches the OAuth token, and passes it to
@@ -79,6 +97,7 @@
   ~OAuthTokenFetcher() override = default;
 
   void Start() {
+    CRD_DVLOG(1) << "Fetching OAuth access token";
     OAuth2AccessTokenManager::ScopeSet scopes{
         GaiaConstants::kGoogleUserInfoEmail, kCloudDevicesOAuth2Scope,
         kChromotingRemoteSupportOAuth2Scope, kTachyonOAuth2Scope};
@@ -92,12 +111,14 @@
   void OnGetTokenSuccess(
       const OAuth2AccessTokenManager::Request* request,
       const OAuth2AccessTokenConsumer::TokenResponse& token_response) override {
+    CRD_DVLOG(1) << "Received OAuth access token";
     std::move(success_callback_).Run(token_response.access_token);
     oauth_request_.reset();
   }
 
   void OnGetTokenFailure(const OAuth2AccessTokenManager::Request* request,
                          const GoogleServiceAuthError& error) override {
+    CRD_DVLOG(1) << "Failed to get OAuth access token: " << error.ToString();
     std::move(error_callback_)
         .Run(DeviceCommandStartCRDSessionJob::FAILURE_NO_OAUTH_TOKEN,
              error.ToString());
@@ -121,7 +142,7 @@
   DCHECK(factory_);
 }
 
-CRDHostDelegate::~CRDHostDelegate() {}
+CRDHostDelegate::~CRDHostDelegate() = default;
 
 bool CRDHostDelegate::HasActiveSession() const {
   return host_ != nullptr;
@@ -136,7 +157,7 @@
   return user_manager::UserManager::IsInitialized() &&
          ui::UserActivityDetector::Get() != nullptr &&
          chromeos::ProfileHelper::Get() != nullptr &&
-         DeviceOAuth2TokenServiceFactory::Get() != nullptr;
+         oauth_service() != nullptr;
 }
 
 bool CRDHostDelegate::IsRunningKiosk() const {
@@ -222,26 +243,28 @@
   SendMessageToHost(remoting::kHelloMessage, params);
 }
 
-void CRDHostDelegate::PostMessageFromNativeHost(const std::string& message) {
-  std::unique_ptr<base::Value> message_value =
-      base::JSONReader::ReadDeprecated(message);
-  if (!message_value) {
+void CRDHostDelegate::PostMessageFromNativeHost(
+    const std::string& message_string) {
+  CRD_DVLOG(1) << "Received message from CRD host: " << message_string;
+
+  base::Optional<base::Value> message = base::JSONReader::Read(message_string);
+  if (!message) {
     OnProtocolBroken("Message is invalid JSON");
     return;
   }
 
-  if (!message_value->is_dict()) {
+  if (!message->is_dict()) {
     OnProtocolBroken("Message is not a dictionary");
     return;
   }
 
-  auto* type_value = message_value->FindKeyOfType(remoting::kMessageType,
-                                                  base::Value::Type::STRING);
-  if (!type_value) {
+  const std::string* type_pointer =
+      message->FindStringKey(remoting::kMessageType);
+  if (!type_pointer) {
     OnProtocolBroken("Message without type");
     return;
   }
-  std::string type = type_value->GetString();
+  const std::string& type = *type_pointer;
 
   if (type == remoting::kHelloResponse) {
     OnHelloResponse();
@@ -255,32 +278,31 @@
   } else if (type == remoting::kHostStateChangedMessage ||
              type == remoting::kErrorMessage) {
     //  Handle CRD host state changes
-    auto* state_value = message_value->FindKeyOfType(remoting::kState,
-                                                     base::Value::Type::STRING);
-    if (!state_value) {
+    const std::string* state_pointer = message->FindStringKey(remoting::kState);
+    if (!state_pointer) {
       OnProtocolBroken("No state in message");
       return;
     }
-    std::string state = state_value->GetString();
+    const std::string& state = *state_pointer;
 
     if (state == remoting::kHostStateReceivedAccessCode) {
-      OnStateReceivedAccessCode(*message_value);
+      OnStateReceivedAccessCode(*message);
     } else if (state == remoting::kHostStateConnected) {
-      OnStateRemoteConnected(*message_value);
+      OnStateRemoteConnected(*message);
     } else if (state == remoting::kHostStateDisconnected) {
       OnStateRemoteDisconnected();
     } else if (state == remoting::kHostStateError ||
                state == remoting::kHostStateDomainError) {
-      OnStateError(state, *message_value);
+      OnStateError(state, *message);
     } else if (state == remoting::kHostStateStarting ||
                state == remoting::kHostStateRequestedAccessCode) {
       //  Just ignore these states.
     } else {
-      LOG(WARNING) << "Unhandled state :" << type;
+      CRD_LOG(WARNING) << "Unhandled state :" << type;
     }
     return;
   }
-  LOG(WARNING) << "Unknown message type: " << type;
+  CRD_LOG(WARNING) << "Unknown message type: " << type;
 }
 
 void CRDHostDelegate::OnHelloResponse() {
@@ -297,46 +319,35 @@
   ShutdownHost();
 }
 
-void CRDHostDelegate::OnStateError(std::string error_state,
-                                   base::Value& message) {
-  std::string error_message;
-  if (error_state == remoting::kHostStateDomainError) {
-    error_message = "Invalid domain";
-  } else {
-    auto* error_code_value = message.FindKeyOfType(remoting::kErrorMessageCode,
-                                                   base::Value::Type::STRING);
-    if (error_code_value)
-      error_message = error_code_value->GetString();
-    else
-      error_message = "Unknown Error";
-  }
+void CRDHostDelegate::OnStateError(const std::string& error_state,
+                                   const base::Value& message) {
   // Notify callback if command is still running.
   if (command_awaiting_crd_access_code_) {
     command_awaiting_crd_access_code_ = false;
     std::move(error_callback_)
         .Run(DeviceCommandStartCRDSessionJob::FAILURE_CRD_HOST_ERROR,
-             "CRD State Error: " + error_message);
+             "CRD State Error: " + FormatErrorMessage(error_state, message));
     code_success_callback_.Reset();
   }
   // Shut down host, if any.
   ShutdownHost();
 }
 
-void CRDHostDelegate::OnStateRemoteConnected(base::Value& message) {
+void CRDHostDelegate::OnStateRemoteConnected(const base::Value& message) {
   remote_connected_ = true;
   // TODO(antrim): set up watchdog timer (session duration).
-  auto* client_value =
-      message.FindKeyOfType(remoting::kClient, base::Value::Type::STRING);
-  if (client_value) {
-    VLOG(1) << "Remote connection by " << client_value->GetString();
-  }
+  const std::string* client = message.FindStringKey(remoting::kClient);
+  if (client)
+    CRD_DVLOG(1) << "Remote connection by " << *client;
 }
 
 void CRDHostDelegate::OnStateRemoteDisconnected() {
   // There could be a connection attempt that was not successful, we will
   // receive "disconnected" message without actually receiving "connected".
-  if (!remote_connected_)
+  if (!remote_connected_) {
+    CRD_DVLOG(1) << "Received disconnect out-of-order before connect";
     return;
+  }
   remote_connected_ = false;
   // Remote has disconnected, time to send "disconnect" that would result
   // in shutting down the host.
@@ -344,7 +355,7 @@
   SendMessageToHost(remoting::kDisconnectMessage, params);
 }
 
-void CRDHostDelegate::OnStateReceivedAccessCode(base::Value& message) {
+void CRDHostDelegate::OnStateReceivedAccessCode(const base::Value& message) {
   if (!command_awaiting_crd_access_code_) {
     if (!remote_connected_) {
       // We have already sent the access code back to the server which initiated
@@ -357,22 +368,23 @@
     return;
   }
 
-  auto* code_value =
-      message.FindKeyOfType(remoting::kAccessCode, base::Value::Type::STRING);
-  auto* code_lifetime_value = message.FindKeyOfType(
-      remoting::kAccessCodeLifetime, base::Value::Type::INTEGER);
-  if (!code_value || !code_lifetime_value) {
+  const std::string* access_code = message.FindStringKey(remoting::kAccessCode);
+  base::Optional<int> code_lifetime =
+      message.FindIntKey(remoting::kAccessCodeLifetime);
+  if (!access_code || !code_lifetime) {
     OnProtocolBroken("Can not obtain access code");
     return;
   }
+
+  CRD_DVLOG(1) << "Got access code";
   // TODO(antrim): set up watchdog timer (access code lifetime).
   command_awaiting_crd_access_code_ = false;
-  std::move(code_success_callback_).Run(std::string(code_value->GetString()));
+  std::move(code_success_callback_).Run(*access_code);
   error_callback_.Reset();
 }
 
 void CRDHostDelegate::CloseChannel(const std::string& error_message) {
-  LOG(ERROR) << "CRD Host closed channel" << error_message;
+  CRD_LOG(ERROR) << "CRD Host closed channel" << error_message;
   command_awaiting_crd_access_code_ = false;
 
   if (error_callback_) {
@@ -386,6 +398,7 @@
 
 void CRDHostDelegate::SendMessageToHost(const std::string& type,
                                         base::Value& params) {
+  CRD_DVLOG(1) << "Sending message of type '" << type << "' to CRD host.";
   std::string message_json;
   params.SetKey(remoting::kMessageType, base::Value(type));
   base::JSONWriter::Write(params, &message_json);
@@ -401,7 +414,7 @@
 }
 
 void CRDHostDelegate::OnProtocolBroken(const std::string& message) {
-  LOG(ERROR) << "Error communicating with CRD Host : " << message;
+  CRD_LOG(ERROR) << "Error communicating with CRD Host : " << message;
   command_awaiting_crd_access_code_ = false;
 
   std::move(error_callback_)
diff --git a/chrome/browser/chromeos/policy/remote_commands/crd_host_delegate.h b/chrome/browser/chromeos/policy/remote_commands/crd_host_delegate.h
index 1472abb..8594650 100644
--- a/chrome/browser/chromeos/policy/remote_commands/crd_host_delegate.h
+++ b/chrome/browser/chromeos/policy/remote_commands/crd_host_delegate.h
@@ -73,10 +73,10 @@
   void OnHelloResponse();
   void OnDisconnectResponse();
 
-  void OnStateError(std::string error_state, base::Value& message);
-  void OnStateRemoteConnected(base::Value& message);
+  void OnStateError(const std::string& error_state, const base::Value& message);
+  void OnStateRemoteConnected(const base::Value& message);
   void OnStateRemoteDisconnected();
-  void OnStateReceivedAccessCode(base::Value& message);
+  void OnStateReceivedAccessCode(const base::Value& message);
 
   Profile* GetKioskProfile() const;
 
diff --git a/chrome/browser/net/network_context_configuration_browsertest.cc b/chrome/browser/net/network_context_configuration_browsertest.cc
index f744e79..1270718 100644
--- a/chrome/browser/net/network_context_configuration_browsertest.cc
+++ b/chrome/browser/net/network_context_configuration_browsertest.cc
@@ -1273,7 +1273,8 @@
   MakeLongLivedRequestThatHangsUntilShutdown();
 }
 
-#if defined(OS_CHROMEOS)
+// Disabled due to flakiness. See crbug.com/1189031.
+#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 #define MAYBE_UserAgentAndLanguagePrefs DISABLED_UserAgentAndLanguagePrefs
 #else
 #define MAYBE_UserAgentAndLanguagePrefs UserAgentAndLanguagePrefs
diff --git a/chrome/browser/page_load_metrics/observers/back_forward_cache_page_load_metrics_observer_browsertest.cc b/chrome/browser/page_load_metrics/observers/back_forward_cache_page_load_metrics_observer_browsertest.cc
index 33f9bfdd..2fb9875 100644
--- a/chrome/browser/page_load_metrics/observers/back_forward_cache_page_load_metrics_observer_browsertest.cc
+++ b/chrome/browser/page_load_metrics/observers/back_forward_cache_page_load_metrics_observer_browsertest.cc
@@ -293,6 +293,45 @@
 }
 
 IN_PROC_BROWSER_TEST_F(BackForwardCachePageLoadMetricsObserverBrowserTest,
+                       IsAmpPageAfterBackForwardCacheRestore) {
+  Start();
+  GURL url_a(embedded_test_server()->GetURL(
+      "amp.com", "/page_load_metrics/amp_basic.html"));
+  GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html"));
+
+  auto waiter = CreatePageLoadMetricsTestWaiter();
+  waiter->AddLoadingBehaviorExpectation(
+      blink::kLoadingBehaviorAmpDocumentLoaded);
+
+  // Navigate to A.
+  EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), url_a));
+  content::RenderFrameHost* rfh_a = top_frame_host();
+
+  // Make sure there is time to sync loading behavior flags to the browser
+  // side. We wait here instead of after the bfcache restore because the
+  // relevant loading behavior flag is only encountered during the initial page
+  // load and not as part of a bfcache restore.
+  waiter->Wait();
+  waiter = nullptr;
+
+  // Navigate to B.
+  EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), url_b));
+  EXPECT_EQ(rfh_a->GetLifecycleState(),
+            content::RenderFrameHost::LifecycleState::kInBackForwardCache);
+
+  // Go back to A.
+  web_contents()->GetController().GoBack();
+  EXPECT_TRUE(WaitForLoadStop(web_contents()));
+  EXPECT_EQ(rfh_a, top_frame_host());
+  EXPECT_NE(rfh_a->GetLifecycleState(),
+            content::RenderFrameHost::LifecycleState::kInBackForwardCache);
+
+  // Verify that the HistoryNavigation has the appropriate flag set.
+  ExpectMetricCountForUrl(url_a, UkmEntry::kBackForwardCache_IsAmpPageName, 1);
+  ExpectMetricValueForUrl(url_a, UkmEntry::kBackForwardCache_IsAmpPageName, 1);
+}
+
+IN_PROC_BROWSER_TEST_F(BackForwardCachePageLoadMetricsObserverBrowserTest,
                        CumulativeLayoutShiftAfterBackForwardCacheRestore) {
   Start();
 
diff --git a/chrome/browser/password_entry_edit/android/java/res/layout/credential_edit_view.xml b/chrome/browser/password_entry_edit/android/java/res/layout/credential_edit_view.xml
index c7ba4c0..ab2f326 100644
--- a/chrome/browser/password_entry_edit/android/java/res/layout/credential_edit_view.xml
+++ b/chrome/browser/password_entry_edit/android/java/res/layout/credential_edit_view.xml
@@ -98,7 +98,7 @@
                     android:background="?attr/selectableItemBackground"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:contentDescription="@string/password_entry_viewer_view_stored_password"
+                    android:contentDescription="@string/password_entry_viewer_show_stored_password"
                     app:srcCompat="@drawable/ic_visibility_black"
                     app:tint="@color/default_icon_color_tint_list"
                     style="?android:attr/buttonStyleSmall"/>
diff --git a/chrome/browser/password_entry_edit/android/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditFragmentView.java b/chrome/browser/password_entry_edit/android/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditFragmentView.java
index 273ba117..9af7527 100644
--- a/chrome/browser/password_entry_edit/android/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditFragmentView.java
+++ b/chrome/browser/password_entry_edit/android/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditFragmentView.java
@@ -166,7 +166,7 @@
                 visible ? R.drawable.ic_visibility_off_black : R.drawable.ic_visibility_black);
         passwordVisibilityButton.setContentDescription(visible
                         ? getString(R.string.password_entry_viewer_hide_stored_password)
-                        : getString(R.string.password_entry_viewer_view_stored_password));
+                        : getString(R.string.password_entry_viewer_show_stored_password));
     }
 
     void changeDoneButtonState(boolean hasError) {
diff --git a/chrome/browser/payments/android/payment_manifest_web_data_service_android.cc b/chrome/browser/payments/android/payment_manifest_web_data_service_android.cc
index 27a8c492..22d0d67 100644
--- a/chrome/browser/payments/android/payment_manifest_web_data_service_android.cc
+++ b/chrome/browser/payments/android/payment_manifest_web_data_service_android.cc
@@ -12,19 +12,21 @@
 #include "base/notreached.h"
 #include "base/numerics/safe_conversions.h"
 #include "chrome/browser/payments/android/jni_headers/PaymentManifestWebDataService_jni.h"
-#include "chrome/browser/profiles/profile_manager.h"
-#include "chrome/browser/web_data_service_factory.h"
 #include "components/keyed_service/core/service_access_type.h"
 #include "components/webdata/common/web_data_results.h"
+#include "components/webdata_services/web_data_service_wrapper_factory.h"
+#include "content/public/browser/web_contents.h"
 
 namespace payments {
 
 PaymentManifestWebDataServiceAndroid::PaymentManifestWebDataServiceAndroid(
     JNIEnv* env,
-    jobject obj)
-    : weak_java_obj_(env, obj) {}
+    jobject obj,
+    content::WebContents* web_contents)
+    : content::WebContentsObserver(web_contents), weak_java_obj_(env, obj) {}
 
-PaymentManifestWebDataServiceAndroid::~PaymentManifestWebDataServiceAndroid() {}
+PaymentManifestWebDataServiceAndroid::~PaymentManifestWebDataServiceAndroid() =
+    default;
 
 void PaymentManifestWebDataServiceAndroid::OnWebDataServiceRequestDone(
     WebDataServiceBase::Handle h,
@@ -102,9 +104,7 @@
     JNIEnv* env,
     const base::android::JavaParamRef<jobject>& unused_obj) {
   scoped_refptr<payments::PaymentManifestWebDataService> web_data_service =
-      WebDataServiceFactory::GetPaymentManifestWebDataForProfile(
-          ProfileManager::GetActiveUserProfile(),
-          ServiceAccessType::EXPLICIT_ACCESS);
+      GetPaymentManifestWebDataService();
   if (web_data_service) {
     for (const auto& request : web_data_service_requests_) {
       web_data_service->CancelRequest(request.first);
@@ -125,9 +125,7 @@
                                                      &apps_package_names);
 
   scoped_refptr<payments::PaymentManifestWebDataService> web_data_service =
-      WebDataServiceFactory::GetPaymentManifestWebDataForProfile(
-          ProfileManager::GetActiveUserProfile(),
-          ServiceAccessType::EXPLICIT_ACCESS);
+      GetPaymentManifestWebDataService();
   if (web_data_service == nullptr)
     return;
 
@@ -141,9 +139,7 @@
     const base::android::JavaParamRef<jobject>& unused_obj,
     const base::android::JavaParamRef<jobjectArray>& jmanifest_sections) {
   scoped_refptr<payments::PaymentManifestWebDataService> web_data_service =
-      WebDataServiceFactory::GetPaymentManifestWebDataForProfile(
-          ProfileManager::GetActiveUserProfile(),
-          ServiceAccessType::EXPLICIT_ACCESS);
+      GetPaymentManifestWebDataService();
   if (web_data_service == nullptr)
     return;
 
@@ -179,9 +175,7 @@
     const base::android::JavaParamRef<jstring>& jmethod_name,
     const base::android::JavaParamRef<jobject>& jcallback) {
   scoped_refptr<payments::PaymentManifestWebDataService> web_data_service =
-      WebDataServiceFactory::GetPaymentManifestWebDataForProfile(
-          ProfileManager::GetActiveUserProfile(),
-          ServiceAccessType::EXPLICIT_ACCESS);
+      GetPaymentManifestWebDataService();
   if (web_data_service == nullptr)
     return false;
 
@@ -200,9 +194,7 @@
     const base::android::JavaParamRef<jstring>& japp_package_name,
     const base::android::JavaParamRef<jobject>& jcallback) {
   scoped_refptr<payments::PaymentManifestWebDataService> web_data_service =
-      WebDataServiceFactory::GetPaymentManifestWebDataForProfile(
-          ProfileManager::GetActiveUserProfile(),
-          ServiceAccessType::EXPLICIT_ACCESS);
+      GetPaymentManifestWebDataService();
   if (web_data_service == nullptr)
     return false;
 
@@ -217,10 +209,26 @@
 
 static jlong JNI_PaymentManifestWebDataService_Init(
     JNIEnv* env,
-    const base::android::JavaParamRef<jobject>& obj) {
+    const base::android::JavaParamRef<jobject>& obj,
+    const base::android::JavaParamRef<jobject>& jweb_contents) {
+  auto* web_contents = content::WebContents::FromJavaWebContents(jweb_contents);
+  if (!web_contents)
+    return 0;
+
   PaymentManifestWebDataServiceAndroid* manifest_web_data_service_android =
-      new PaymentManifestWebDataServiceAndroid(env, obj);
+      new PaymentManifestWebDataServiceAndroid(env, obj, web_contents);
   return reinterpret_cast<intptr_t>(manifest_web_data_service_android);
 }
 
+scoped_refptr<PaymentManifestWebDataService>
+PaymentManifestWebDataServiceAndroid::GetPaymentManifestWebDataService() {
+  if (!web_contents() || !web_contents()->GetBrowserContext())
+    return nullptr;
+
+  return webdata_services::WebDataServiceWrapperFactory::
+      GetPaymentManifestWebDataServiceForBrowserContext(
+          web_contents()->GetBrowserContext(),
+          ServiceAccessType::EXPLICIT_ACCESS);
+}
+
 }  // namespace payments
diff --git a/chrome/browser/payments/android/payment_manifest_web_data_service_android.h b/chrome/browser/payments/android/payment_manifest_web_data_service_android.h
index 2885aa76..4b05f15 100644
--- a/chrome/browser/payments/android/payment_manifest_web_data_service_android.h
+++ b/chrome/browser/payments/android/payment_manifest_web_data_service_android.h
@@ -11,19 +11,24 @@
 
 #include "base/android/jni_weak_ref.h"
 #include "base/android/scoped_java_ref.h"
+#include "base/memory/scoped_refptr.h"
 #include "components/payments/content/payment_manifest_web_data_service.h"
 #include "components/webdata/common/web_data_results.h"
 #include "components/webdata/common/web_data_service_base.h"
 #include "components/webdata/common/web_data_service_consumer.h"
+#include "content/public/browser/web_contents_observer.h"
 
 namespace payments {
 
 // Android wrapper of the PaymentManifestWebDataService which provides access
-// from the Java layer. Note that on Android, there's only a single profile, and
-// therefore a single instance of this wrapper.
-class PaymentManifestWebDataServiceAndroid : public WebDataServiceConsumer {
+// from the Java layer.
+class PaymentManifestWebDataServiceAndroid
+    : public WebDataServiceConsumer,
+      public content::WebContentsObserver {
  public:
-  PaymentManifestWebDataServiceAndroid(JNIEnv* env, jobject obj);
+  PaymentManifestWebDataServiceAndroid(JNIEnv* env,
+                                       jobject obj,
+                                       content::WebContents* web_contents);
   ~PaymentManifestWebDataServiceAndroid() override;
 
   // Override WebDataServiceConsumer interface.
@@ -73,6 +78,8 @@
   void OnPaymentMethodManifestRequestDone(JNIEnv* env,
                                           WebDataServiceBase::Handle h,
                                           WDTypedResult* result);
+  scoped_refptr<PaymentManifestWebDataService>
+  GetPaymentManifestWebDataService();
 
   // Pointer to the java counterpart.
   JavaObjectWeakGlobalRef weak_java_obj_;
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
index aa80333f..d5bc3e8 100644
--- a/chrome/browser/profiles/profile.cc
+++ b/chrome/browser/profiles/profile.cc
@@ -399,11 +399,9 @@
 #else
 #if BUILDFLAG(IS_CHROMEOS_LACROS)
   DCHECK(chromeos::LacrosChromeServiceImpl::Get());
-  if (chromeos::LacrosChromeServiceImpl::Get()->init_params()->session_type !=
-      crosapi::mojom::SessionType::kUnknown) {
-    return chromeos::LacrosChromeServiceImpl::Get()
-               ->init_params()
-               ->session_type == crosapi::mojom::SessionType::kGuestSession;
+  if (chromeos::LacrosChromeServiceImpl::Get()->init_params()->session_type ==
+      crosapi::mojom::SessionType::kGuestSession) {
+    return true;
   }
 #endif  // BUILDFLAG(IS_CHROMEOS_LACROS)
   return profile_metrics::GetBrowserProfileType(this) ==
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
index 9c2d8b04..1928e8d 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -1927,7 +1927,7 @@
   std::string selection_text;
   if (ShouldOfferClickToCallForURL(browser_context_, params_.link_url)) {
     entry_point = SharingClickToCallEntryPoint::kRightClickLink;
-    phone_number = GetUnescapedURLContent(params_.link_url);
+    phone_number = params_.link_url.GetContent();
   } else if (!params_.selection_text.empty()) {
     entry_point = SharingClickToCallEntryPoint::kRightClickSelection;
     selection_text = base::UTF16ToUTF8(params_.selection_text);
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 e8602184..d84faca 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js
@@ -2435,42 +2435,43 @@
   });
 });
 
-TEST_F(
-    'ChromeVoxBackgroundTest', 'DISABLED_NavigateOutOfMultiline', function() {
-      const mockFeedback = this.createMockFeedback();
-      this.runWithLoadedTree(
-          `
+TEST_F('ChromeVoxBackgroundTest', 'NavigateOutOfMultiline', function() {
+  const mockFeedback = this.createMockFeedback();
+  this.runWithLoadedTree(
+      `
     <p>start</p>
     <p>before</p>
-    <div contenteditable>
-      Testing testing<br>one two three
+    <div role="textbox" contenteditable>
+      Testing testing<br>
+      one two three
     </div>
     <p>after</p>
   `,
-          function(root) {
-            const contentEditable =
-                root.find({attributes: {editableRoot: true}});
-            mockFeedback.call(contentEditable.focus.bind(contentEditable))
-                .expectSpeech(/Testing testing\s+one two three/)
-                .call(doCmd('nextLine'))
-                .expectSpeech('one two three')
-                .call(doCmd('nextLine'))
-                .expectSpeech('after')
+      function(root) {
+        const textField = root.find({role: RoleType.TEXT_FIELD});
+        mockFeedback.call(textField.focus.bind(textField))
+            .expectSpeech('Testing testing\none two three')
+            .expectSpeech('Edit text')
+            .call(doCmd('nextLine'))
+            .expectSpeech('one two three')
+            .call(doCmd('nextLine'))
+            .expectSpeech('after')
 
-                // In reverse (explicitly focus, instead of moving to previous
-                // line, because all subsequent commands require the content
-                // editable to be focused first):
-                .clearPendingOutput()
-                .call(contentEditable.focus.bind(contentEditable))
-                .call(doCmd('nextLine'))
-                .expectSpeech('one two three')
-                .call(doCmd('previousLine'))
-                .expectSpeech('Testing testing')
-                .call(doCmd('previousLine'))
-                .expectSpeech('before')
-                .replay();
-          });
-    });
+            // In reverse (explicitly focus, instead of moving to previous line,
+            // because all subsequent commands require the text field be focused
+            // first):
+            .clearPendingOutput()
+            .call(textField.focus.bind(textField))
+            .expectSpeech('Edit text')
+            .call(doCmd('nextLine'))
+            .expectSpeech('one two three')
+            .call(doCmd('previousLine'))
+            .expectSpeech('Testing testing')
+            .call(doCmd('previousLine'))
+            .expectSpeech('before')
+            .replay();
+      });
+});
 
 TEST_F('ChromeVoxBackgroundTest', 'ReadWindowTitle', function() {
   const mockFeedback = this.createMockFeedback();
@@ -3075,10 +3076,9 @@
   });
 });
 
-TEST_F('ChromeVoxBackgroundTest', 'WrapContentEditableAtEndOfDoc', function() {
+TEST_F('ChromeVoxBackgroundTest', 'WrapTextFieldAtEndOfDoc', function() {
   const mockFeedback = this.createMockFeedback();
-  const site = `<p>start</p>
-      <div role="textbox" contenteditable aria-multiline="false"></div>`;
+  const site = `<p>start</p><div role="textbox" contenteditable></div>`;
   this.runWithLoadedTree(site, function() {
     mockFeedback.call(doCmd('nextObject'))
         .expectSpeech('Edit text')
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/editing_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/editing_test.js
index 71d2e011..f7361c56 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/editing_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/editing_test.js
@@ -1190,12 +1190,13 @@
       `
     <div
         style='max-width: 5px; overflow-wrap: normal'
-        contenteditable>
+        contenteditable
+        role="textbox">
       this is a test
     </div>
   `,
       function(root) {
-        const input = root.find({attributes: {editableRoot: true}});
+        const input = root.find({role: RoleType.TEXT_FIELD});
         this.listenOnce(input, 'focus', function() {
           mockFeedback.call(this.press(KeyCode.END, {ctrl: true}))
               .expectSpeech('test')
@@ -1209,6 +1210,7 @@
               .expectSpeech('is , deleted')
               .expectBraille('this\u00a0mled', {startIndex: 5, endIndex: 5})
               .call(this.press(KeyCode.BACK, {ctrl: true}))
+              .expectSpeech('this , deleted')
               .expectBraille(' mled', {startIndex: 0, endIndex: 0})
               .replay();
         });
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_zh-CN.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_zh-CN.xtb
index 245308b..0bb51c91 100644
--- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_zh-CN.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_zh-CN.xtb
@@ -249,7 +249,7 @@
 <translation id="2717271541250958000">tabpnl</translation>
 <translation id="2723001399770238859">音频</translation>
 <translation id="27349076983469322">浅色背景</translation>
-<translation id="2737898226590637227">没有下一个 ARIA 地标</translation>
+<translation id="2737898226590637227">没有下一个 ARIA 位置标记</translation>
 <translation id="2749275490991666823">已选中</translation>
 <translation id="27527859628328957">跳转到下一个可设置为焦点的项</translation>
 <translation id="2756452585631602151">输入自定义标签</translation>
@@ -262,7 +262,7 @@
 <translation id="2816868829355607410">练习区:跳转命令</translation>
 <translation id="2841013758207633010">时间</translation>
 <translation id="284171465644749950">用 1 根手指向左或向右滑动屏幕即可浏览各个主题</translation>
-<translation id="2843432675592278677">没有上一个 ARIA 地标</translation>
+<translation id="2843432675592278677">没有上一个 ARIA 位置标记</translation>
 <translation id="2843814945404750166">暗橄榄绿色</translation>
 <translation id="2843837985843789981">上一个群组</translation>
 <translation id="2864481629947106776">上一个链接</translation>
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_button.html b/chrome/browser/resources/chromeos/emoji_picker/emoji_button.html
index ea134130..dc7448e2 100644
--- a/chrome/browser/resources/chromeos/emoji_picker/emoji_button.html
+++ b/chrome/browser/resources/chromeos/emoji_picker/emoji_button.html
@@ -49,6 +49,24 @@
         315deg, var(--google-grey-refresh-500) 4px,
         var(--emoji-background) 4px, var(--emoji-background));
   }
+
+  #tooltip {
+    --paper-tooltip-background: var(--cr-menu-background-color);
+    --paper-tooltip-opacity: 1;
+    --paper-tooltip-text-color: var(--cr-secondary-text-color);
+    --paper-tooltip-delay-in: 200ms;
+    --paper-tooltip-delay-out: 200ms;
+    --paper-tooltip-duration-in: 0;
+    --paper-tooltip-duration-out: 0;
+
+    --paper-tooltip: {
+      box-shadow: var(--cr-elevation-3);
+      font-family: 'Roboto', sans-serif;
+      font-size: 12px;
+      padding: 4px 8px 4px 8px;
+      white-space: nowrap;
+    };
+  }
 </style>
 
 
@@ -61,6 +79,10 @@
     aria-label="[[_label(emoji, variants)]]">
   [[emoji]]
 </button>
+<paper-tooltip id="tooltip" for="button" fit-to-visible-bounds part="tooltip"
+  offset="8">
+  [[tooltip]]
+</paper-tooltip>
 <template is="dom-if" if="[[variantsVisible]]">
   <emoji-variants variants="[[variants]]"></emoji-variants>
 </template>
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_button.js b/chrome/browser/resources/chromeos/emoji_picker/emoji_button.js
index 8f7ef58..62e5a94 100644
--- a/chrome/browser/resources/chromeos/emoji_picker/emoji_button.js
+++ b/chrome/browser/resources/chromeos/emoji_picker/emoji_button.js
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 import './emoji_variants.js';
+import 'chrome://resources/polymer/v3_0/paper-tooltip/paper-tooltip.js';
 
 import {beforeNextRender, html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
@@ -33,7 +34,9 @@
       /** @type {!string} */
       base: {type: String},
       /** @type {?Array<Emoji>} */
-      allVariants: {type: Array, readonly: true}
+      allVariants: {type: Array, readonly: true},
+      /** @type {!string} */
+      toolTip: {type: String, readonly: true},
     };
   }
 
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_group.html b/chrome/browser/resources/chromeos/emoji_picker/emoji_group.html
index f6d95f6b..8de8a482 100644
--- a/chrome/browser/resources/chromeos/emoji_picker/emoji_group.html
+++ b/chrome/browser/resources/chromeos/emoji_picker/emoji_group.html
@@ -77,7 +77,8 @@
 <div id="emoji">
   <template is="dom-repeat" items="[[data.emoji]]">
     <emoji-button emoji="[[getDisplayEmojiForEmoji(item.base.string)]]"
-      variants="[[item.alternates]]">
+      variants="[[item.alternates]]" tooltip="[[getTooltipForEmoji(item.base)]]"
+    >
     </emoji-button>
   </template>
 </div>
\ No newline at end of file
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_group.js b/chrome/browser/resources/chromeos/emoji_picker/emoji_group.js
index 461d912..e9b4595 100644
--- a/chrome/browser/resources/chromeos/emoji_picker/emoji_group.js
+++ b/chrome/browser/resources/chromeos/emoji_picker/emoji_group.js
@@ -35,6 +35,11 @@
     super();
   }
 
+  /** @param emoji {Emoji} */
+  getTooltipForEmoji(emoji) {
+    return emoji.name;
+  }
+
   getDisplayEmojiForEmoji(emoji) {
     return this.preferred[emoji] || emoji;
   }
diff --git a/chrome/browser/resources/chromeos/login/oobe_welcome_dialog.js b/chrome/browser/resources/chromeos/login/oobe_welcome_dialog.js
index 5f655e72..2fba5dd 100644
--- a/chrome/browser/resources/chromeos/login/oobe_welcome_dialog.js
+++ b/chrome/browser/resources/chromeos/login/oobe_welcome_dialog.js
@@ -335,7 +335,7 @@
     onBeforeShow() {
       if (this.isNewLayout_) {
         document.documentElement.setAttribute('new-layout', '');
-        this.$.newWelcomeAnimation.setPlay(true);
+        this.setVideoPlay_(true);
       } else {
         this.$.oldDialog.onBeforeShow();
       }
@@ -418,11 +418,13 @@
     },
 
     attached() {
-      this.welcomeVideoController_ = new WelcomeVideoController(
-          this.getVideoDeviceType_(), this.getVideoOrientationType_());
-      let videos = Polymer.dom(this.root).querySelectorAll('video');
-      for (let video of videos)
-        this.welcomeVideoController_.add(video);
+      if (!this.isNewLayout_) {
+        this.welcomeVideoController_ = new WelcomeVideoController(
+            this.getVideoDeviceType_(), this.getVideoOrientationType_());
+        let videos = Polymer.dom(this.root).querySelectorAll('video');
+        for (let video of videos)
+          this.welcomeVideoController_.add(video);
+      }
 
       this.titleLongTouchDetector_ = new TitleLongTouchDetector(
           this.isNewLayout_ ? this.$.newTitle : this.$.title,
@@ -459,15 +461,32 @@
       let visible = !newValue;
       if (visible) {
         this.focus();
-        this.welcomeVideoController_.play();
-      } else {
-        // Pause the welcome video to avoid using resources while
-        // this page is not visible
-        this.welcomeVideoController_.pause();
       }
 
-      if (this.isNewLayout_ && !this.isMeet_)
-        this.$.newWelcomeAnimation.setPlay(visible);
+      this.setVideoPlay_(visible);
+    },
+
+    /**
+     * Play or pause welcome video.
+     * @param Boolean play - whether play or pause welcome video.
+     * @private
+     */
+    setVideoPlay_(play) {
+      if (this.isNewLayout_) {
+        if (this.isMeet_)
+          return;
+        this.$.newWelcomeAnimation.setPlay(play);
+        return;
+      }
+
+      if (!this.welcomeVideoController_)
+        return;
+
+      if (play) {
+        this.welcomeVideoController_.play();
+      } else {
+        this.welcomeVideoController_.pause();
+      }
     },
 
     /**
@@ -494,14 +513,14 @@
      */
     showChromeVoxHint() {
       this.$.chromeVoxHint.showDialog();
-      this.welcomeVideoController_.pause();
+      this.setVideoPlay_(false);
     },
 
     /**
      * Called to close the ChromeVox hint dialog.
      */
     closeChromeVoxHint() {
-      this.welcomeVideoController_.play();
+      this.setVideoPlay_(true);
       this.$.chromeVoxHint.hideDialog();
     },
 
diff --git a/chrome/browser/resources/pdf/BUILD.gn b/chrome/browser/resources/pdf/BUILD.gn
index d03c39b..930e15d9 100644
--- a/chrome/browser/resources/pdf/BUILD.gn
+++ b/chrome/browser/resources/pdf/BUILD.gn
@@ -57,7 +57,7 @@
     "elements/viewer-bookmark.js",
     "elements/viewer-document-outline.js",
     "elements/viewer-download-controls.js",
-    "elements/viewer-error-screen.js",
+    "elements/viewer-error-dialog.js",
     "elements/viewer-page-selector.js",
     "elements/viewer-password-dialog.js",
     "elements/viewer-pdf-sidenav.js",
@@ -288,7 +288,6 @@
     ":pdf_viewer_utils",
     ":viewport",
     ":viewport_scroller",
-    "elements:viewer-error-screen",
     "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
     "//ui/webui/resources/js:assert.m",
     "//ui/webui/resources/js:event_tracker.m",
@@ -312,7 +311,7 @@
     ":pdf_scripting_api",
     ":pdf_viewer_base",
     ":pdf_viewer_utils",
-    "elements:viewer-error-screen",
+    "elements:viewer-error-dialog",
     "elements:viewer-password-dialog",
     "elements:viewer-pdf-sidenav",
     "elements:viewer-properties-dialog",
@@ -348,7 +347,7 @@
     ":pdf_viewer_utils",
     ":toolbar_manager",
     ":viewport",
-    "elements:viewer-error-screen",
+    "elements:viewer-error-dialog",
     "elements:viewer-page-indicator",
     "elements:viewer-zoom-toolbar",
     "//ui/webui/resources/js:assert.m",
diff --git a/chrome/browser/resources/pdf/elements/BUILD.gn b/chrome/browser/resources/pdf/elements/BUILD.gn
index c2b0dbd..60d88fd 100644
--- a/chrome/browser/resources/pdf/elements/BUILD.gn
+++ b/chrome/browser/resources/pdf/elements/BUILD.gn
@@ -12,7 +12,7 @@
     ":viewer-bookmark",
     ":viewer-document-outline",
     ":viewer-download-controls",
-    ":viewer-error-screen",
+    ":viewer-error-dialog",
     ":viewer-page-indicator",
     ":viewer-page-selector",
     ":viewer-password-dialog",
@@ -58,7 +58,7 @@
   ]
 }
 
-js_library("viewer-error-screen") {
+js_library("viewer-error-dialog") {
   deps = [ "//ui/webui/resources/cr_elements/cr_dialog:cr_dialog.m" ]
 }
 
@@ -187,7 +187,7 @@
     "viewer-bookmark.js",
     "viewer-document-outline.js",
     "viewer-download-controls.js",
-    "viewer-error-screen.js",
+    "viewer-error-dialog.js",
     "viewer-page-indicator.js",
     "viewer-page-selector.js",
     "viewer-password-dialog.js",
diff --git a/chrome/browser/resources/pdf/elements/viewer-error-screen.html b/chrome/browser/resources/pdf/elements/viewer-error-dialog.html
similarity index 71%
rename from chrome/browser/resources/pdf/elements/viewer-error-screen.html
rename to chrome/browser/resources/pdf/elements/viewer-error-dialog.html
index e2c210fbd..46b2d93b 100644
--- a/chrome/browser/resources/pdf/elements/viewer-error-screen.html
+++ b/chrome/browser/resources/pdf/elements/viewer-error-dialog.html
@@ -1,9 +1,9 @@
     <style include="cr-hidden-style"></style>
-    <cr-dialog id="dialog" no-cancel>
+    <cr-dialog id="dialog" no-cancel show-on-attach>
       <div slot="title">$i18n{errorDialogTitle}</div>
       <div slot="body">$i18n{pageLoadFailed}</div>
       <div slot="button-container" hidden$="[[!reloadFn]]">
-        <cr-button class="action-button" on-click="reload">
+        <cr-button class="action-button" on-click="onReload_">
           $i18n{pageReload}
         </cr-button>
       </div>
diff --git a/chrome/browser/resources/pdf/elements/viewer-error-screen.js b/chrome/browser/resources/pdf/elements/viewer-error-dialog.js
similarity index 72%
rename from chrome/browser/resources/pdf/elements/viewer-error-screen.js
rename to chrome/browser/resources/pdf/elements/viewer-error-dialog.js
index 7534b79..50bf0c552 100644
--- a/chrome/browser/resources/pdf/elements/viewer-error-screen.js
+++ b/chrome/browser/resources/pdf/elements/viewer-error-dialog.js
@@ -8,9 +8,9 @@
 
 import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
-export class ViewerErrorScreenElement extends PolymerElement {
+export class ViewerErrorDialogElement extends PolymerElement {
   static get is() {
-    return 'viewer-error-screen';
+    return 'viewer-error-dialog';
   }
 
   static get template() {
@@ -19,19 +19,17 @@
 
   static get properties() {
     return {
+      /** @type {?function(): undefined} */
       reloadFn: Function,
     };
   }
 
-  show() {
-    /** @type {!CrDialogElement} */ (this.$.dialog).showModal();
-  }
-
-  reload() {
+  /** @private */
+  onReload_() {
     if (this.reloadFn) {
       this.reloadFn();
     }
   }
 }
 
-customElements.define(ViewerErrorScreenElement.is, ViewerErrorScreenElement);
+customElements.define(ViewerErrorDialogElement.is, ViewerErrorDialogElement);
diff --git a/chrome/browser/resources/pdf/pdf_viewer.html b/chrome/browser/resources/pdf/pdf_viewer.html
index 1a24be3..63c75b3 100644
--- a/chrome/browser/resources/pdf/pdf_viewer.html
+++ b/chrome/browser/resources/pdf/pdf_viewer.html
@@ -179,6 +179,10 @@
   </div>
 </div>
 
+<template is="dom-if" if="[[showErrorDialog]]" on-dom-change="onErrorDialog_">
+  <viewer-error-dialog id="error-dialog"></viewer-error-dialog>
+</template>
+
 <template is="dom-if" if="[[showPasswordDialog_]]" restamp>
   <viewer-password-dialog id="password-dialog" on-close="onPasswordDialogClose_"
       on-password-submitted="onPasswordSubmitted_">
@@ -191,5 +195,3 @@
       page-count="[[docLength_]]" on-close="onPropertiesDialogClose_">
   </viewer-properties-dialog>
 </template>
-
-<viewer-error-screen id="error-screen"></viewer-error-screen>
diff --git a/chrome/browser/resources/pdf/pdf_viewer.js b/chrome/browser/resources/pdf/pdf_viewer.js
index 9812401..8e94766 100644
--- a/chrome/browser/resources/pdf/pdf_viewer.js
+++ b/chrome/browser/resources/pdf/pdf_viewer.js
@@ -22,7 +22,7 @@
 import {BrowserApi} from './browser_api.js';
 import {Attachment, DocumentMetadata, FittingType, Point, SaveRequestType} from './constants.js';
 import {PluginController} from './controller.js';
-import {ViewerErrorScreenElement} from './elements/viewer-error-screen.js';
+import {ViewerErrorDialogElement} from './elements/viewer-error-dialog.js';
 import {ViewerPdfSidenavElement} from './elements/viewer-pdf-sidenav.js';
 import {ViewerToolbarElement} from './elements/viewer-toolbar.js';
 // <if expr="chromeos">
@@ -327,11 +327,6 @@
     return /** @type {!HTMLDivElement} */ (this.$$('#sizer'));
   }
 
-  /** @override */
-  getErrorScreen() {
-    return /** @type {!ViewerErrorScreenElement} */ (this.$$('#error-screen'));
-  }
-
   /**
    * @return {!ViewerToolbarElement}
    * @private
@@ -710,6 +705,20 @@
   }
 
   /** @private */
+  onErrorDialog_() {
+    // The error screen can only reload from a normal tab.
+    if (!chrome.tabs || this.browserApi.getStreamInfo().tabId === -1) {
+      return;
+    }
+
+    const errorDialog = /** @type {!ViewerErrorDialogElement} */ (
+        this.shadowRoot.querySelector('#error-dialog'));
+    errorDialog.reloadFn = () => {
+      chrome.tabs.reload(this.browserApi.getStreamInfo().tabId);
+    };
+  }
+
+  /** @private */
   closePasswordDialog_() {
     const passwordDialog = this.shadowRoot.querySelector('#password-dialog');
     if (passwordDialog) {
diff --git a/chrome/browser/resources/pdf/pdf_viewer_base.js b/chrome/browser/resources/pdf/pdf_viewer_base.js
index d91e0b1..4c1b28c 100644
--- a/chrome/browser/resources/pdf/pdf_viewer_base.js
+++ b/chrome/browser/resources/pdf/pdf_viewer_base.js
@@ -11,7 +11,6 @@
 import {BrowserApi, ZoomBehavior} from './browser_api.js';
 import {FittingType, Point} from './constants.js';
 import {ContentController, MessageData, PluginController, PluginControllerEventType} from './controller.js';
-import {ViewerErrorScreenElement} from './elements/viewer-error-screen.js';
 import {record, recordFitTo, UserAction} from './metrics.js';
 import {OpenPdfParams, OpenPdfParamsParser} from './open_pdf_params_parser.js';
 import {LoadState} from './pdf_scripting_api.js';
@@ -45,6 +44,12 @@
 
   static get properties() {
     return {
+      /** @protected */
+      showErrorDialog: {
+        type: Boolean,
+        value: false,
+      },
+
       /** @protected {Object|undefined} */
       strings: Object,
     };
@@ -124,12 +129,6 @@
   getSizer() {}
 
   /**
-   * @return {!ViewerErrorScreenElement}
-   * @protected
-   */
-  getErrorScreen() {}
-
-  /**
    * @param {!FittingType} view
    * @protected
    */
@@ -216,13 +215,6 @@
       return PluginController.getInstance().getNamedDestination(destination);
     });
 
-    // Can only reload if we are in a normal tab.
-    if (chrome.tabs && this.browserApi.getStreamInfo().tabId !== -1) {
-      this.getErrorScreen().reloadFn = () => {
-        chrome.tabs.reload(this.browserApi.getStreamInfo().tabId);
-      };
-    }
-
     // Determine the scrolling container.
     const isPrintPreview =
         document.documentElement.hasAttribute('is-print-preview');
@@ -304,7 +296,7 @@
   updateProgress(progress) {
     if (progress === -1) {
       // Document load failed.
-      this.getErrorScreen().show();
+      this.showErrorDialog = true;
       this.getSizer().style.display = 'none';
       this.setLoadState(LoadState.FAILED);
       this.sendDocumentLoadedMessage();
diff --git a/chrome/browser/resources/pdf/pdf_viewer_pp.html b/chrome/browser/resources/pdf/pdf_viewer_pp.html
index ec56ed9..b376d90 100644
--- a/chrome/browser/resources/pdf/pdf_viewer_pp.html
+++ b/chrome/browser/resources/pdf/pdf_viewer_pp.html
@@ -25,8 +25,10 @@
     on-zoom-in="onZoomIn" on-zoom-out="onZoomOut">
 </viewer-zoom-toolbar>
 
-<viewer-error-screen id="error-screen"></viewer-error-screen>
-
 <viewer-page-indicator id="page-indicator"></viewer-page-indicator>
 
 <div id="content"></div>
+
+<template is="dom-if" if="[[showErrorDialog]]">
+  <viewer-error-dialog id="error-dialog"></viewer-error-dialog>
+</template>
diff --git a/chrome/browser/resources/pdf/pdf_viewer_pp.js b/chrome/browser/resources/pdf/pdf_viewer_pp.js
index 8c5d141..1c34830 100644
--- a/chrome/browser/resources/pdf/pdf_viewer_pp.js
+++ b/chrome/browser/resources/pdf/pdf_viewer_pp.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 './elements/viewer-error-screen.js';
+import './elements/viewer-error-dialog.js';
 import './elements/viewer-page-indicator.js';
 import './elements/viewer-zoom-toolbar.js';
 import './elements/shared-vars.js';
@@ -16,7 +16,6 @@
 import {BrowserApi} from './browser_api.js';
 import {FittingType} from './constants.js';
 import {MessageData, PluginController, PrintPreviewParams} from './controller.js';
-import {ViewerErrorScreenElement} from './elements/viewer-error-screen.js';
 import {DeserializeKeyEvent, LoadState, SerializeKeyEvent} from './pdf_scripting_api.js';
 import {PDFViewerBaseElement} from './pdf_viewer_base.js';
 import {DestinationMessageData, DocumentDimensionsMessageData, hasCtrlModifier, MessageObject, shouldIgnoreKeyEvents} from './pdf_viewer_utils.js';
@@ -58,11 +57,6 @@
   }
 
   /** @override */
-  getErrorScreen() {
-    return /** @type {!ViewerErrorScreenElement} */ (this.$$('#error-screen'));
-  }
-
-  /** @override */
   getBackgroundColor() {
     return PRINT_PREVIEW_BACKGROUND_COLOR;
   }
diff --git a/chrome/browser/resources/print_preview/BUILD.gn b/chrome/browser/resources/print_preview/BUILD.gn
index 4bb4a57..790293c 100644
--- a/chrome/browser/resources/print_preview/BUILD.gn
+++ b/chrome/browser/resources/print_preview/BUILD.gn
@@ -217,7 +217,7 @@
   in_files = [
     "pdf/elements/icons.js",
     "pdf/elements/shared-vars.js",
-    "pdf/elements/viewer-error-screen.js",
+    "pdf/elements/viewer-error-dialog.js",
     "pdf/elements/viewer-page-indicator.js",
     "pdf/elements/viewer-zoom-button.js",
     "pdf/elements/viewer-zoom-toolbar.js",
diff --git a/chrome/browser/send_tab_to_self/send_tab_to_self_util_unittest.cc b/chrome/browser/send_tab_to_self/send_tab_to_self_util_unittest.cc
index a3e9d36..c53623e 100644
--- a/chrome/browser/send_tab_to_self/send_tab_to_self_util_unittest.cc
+++ b/chrome/browser/send_tab_to_self/send_tab_to_self_util_unittest.cc
@@ -110,7 +110,7 @@
 }
 
 TEST_F(SendTabToSelfUtilTest, ShouldNotOfferFeatureForTelephoneLink) {
-  url_ = GURL("tel:07387252578");
+  url_ = GURL("tel:07399999999");
 
   AddTab(browser(), url_);
   SendTabToSelfSyncServiceFactory::GetInstance()->SetTestingFactory(
diff --git a/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.cc b/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.cc
index 74a2a38..1949120 100644
--- a/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.cc
+++ b/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.cc
@@ -5,11 +5,16 @@
 #include "chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.h"
 
 #include "base/android/jni_string.h"
+#include "base/callback_helpers.h"
 #include "base/check.h"
+#include "base/metrics/histogram_functions.h"
+#include "base/strings/strcat.h"
 #include "base/trace_event/trace_event.h"
 #include "chrome/android/chrome_jni_headers/ClickToCallMessageHandler_jni.h"
+#include "chrome/browser/sharing/click_to_call/click_to_call_utils.h"
 #include "chrome/browser/sharing/proto/click_to_call_message.pb.h"
 #include "chrome/browser/sharing/proto/sharing_message.pb.h"
+#include "url/gurl.h"
 
 ClickToCallMessageHandler::ClickToCallMessageHandler() = default;
 
@@ -20,12 +25,32 @@
     SharingMessageHandler::DoneCallback done_callback) {
   DCHECK(message.has_click_to_call_message());
   TRACE_EVENT0("sharing", "ClickToCallMessageHandler::OnMessage");
+  base::ScopedClosureRunner runner(
+      base::BindOnce(std::move(done_callback), /*response=*/nullptr));
 
   std::string phone_number = message.click_to_call_message().phone_number();
-  JNIEnv* env = base::android::AttachCurrentThread();
+  GURL phone_url(base::StrCat({"tel:", phone_number}));
+  bool is_valid_phone_number = IsUrlSafeForClickToCall(phone_url) &&
+                               phone_url.GetContent() == phone_number;
 
+  base::UmaHistogramBoolean("Sharing.ClickToCallPhoneNumberValid",
+                            is_valid_phone_number);
+
+  // This can happen if a user on an older version of Chrome on their desktop
+  // clicks on a tel link that contains url-escaped unsafe characters like #.
+  // Another reason might be if the remote sender is using a custom or
+  // compromised version of Chrome. In either case, ignoring the message is the
+  // safest option as we don't want to pass along this number to the Android
+  // Dialer.
+  if (!is_valid_phone_number)
+    return;
+
+  HandlePhoneNumber(phone_number);
+}
+
+void ClickToCallMessageHandler::HandlePhoneNumber(
+    const std::string& phone_number) {
+  JNIEnv* env = base::android::AttachCurrentThread();
   Java_ClickToCallMessageHandler_handleMessage(
       env, base::android::ConvertUTF8ToJavaString(env, phone_number));
-
-  std::move(done_callback).Run(/*response=*/nullptr);
 }
diff --git a/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.h b/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.h
index 6b9f0af..577f2588 100644
--- a/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.h
+++ b/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.h
@@ -18,6 +18,10 @@
   void OnMessage(chrome_browser_sharing::SharingMessage message,
                  SharingMessageHandler::DoneCallback done_callback) override;
 
+ protected:
+  // Calls into Java to handle a |phone_number|. Virtual for testing.
+  virtual void HandlePhoneNumber(const std::string& phone_number);
+
  private:
   DISALLOW_COPY_AND_ASSIGN(ClickToCallMessageHandler);
 };
diff --git a/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android_unittest.cc b/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android_unittest.cc
new file mode 100644
index 0000000..fc4e62a
--- /dev/null
+++ b/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android_unittest.cc
@@ -0,0 +1,63 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.h"
+
+#include <memory>
+#include <string>
+
+#include "base/callback_helpers.h"
+#include "base/optional.h"
+#include "chrome/browser/sharing/proto/click_to_call_message.pb.h"
+#include "chrome/browser/sharing/proto/sharing_message.pb.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+// Test implementation of ClickToCallMessageHandler that does not call out to
+// Java via JNI but records the last phone number it would have sent over.
+class TestClickToCallMessageHandler : public ClickToCallMessageHandler {
+ public:
+  TestClickToCallMessageHandler() = default;
+  ~TestClickToCallMessageHandler() override = default;
+
+  base::Optional<std::string> last_phone_number() { return last_phone_number_; }
+
+ protected:
+  void HandlePhoneNumber(const std::string& phone_number) override {
+    last_phone_number_ = phone_number;
+  }
+
+ private:
+  base::Optional<std::string> last_phone_number_;
+};
+
+}  // namespace
+
+TEST(ClickToCallMessageHandlerTest, HandlesValidPhoneNumber) {
+  TestClickToCallMessageHandler handler;
+  chrome_browser_sharing::SharingMessage message;
+
+  message.mutable_click_to_call_message()->set_phone_number("12345678");
+  handler.OnMessage(std::move(message), base::DoNothing());
+  EXPECT_EQ("12345678", handler.last_phone_number());
+}
+
+TEST(ClickToCallMessageHandlerTest, IgnoresInvalidPhoneNumbers) {
+  TestClickToCallMessageHandler handler;
+  chrome_browser_sharing::SharingMessage message;
+
+  message.mutable_click_to_call_message()->set_phone_number("*#06#");
+  handler.OnMessage(std::move(message), base::DoNothing());
+  EXPECT_FALSE(handler.last_phone_number().has_value());
+
+  message.mutable_click_to_call_message()->set_phone_number("%2A%2306%23");
+  handler.OnMessage(std::move(message), base::DoNothing());
+  EXPECT_FALSE(handler.last_phone_number().has_value());
+
+  message.mutable_click_to_call_message()->set_phone_number(
+      "%252A%252306%2523");
+  handler.OnMessage(std::move(message), base::DoNothing());
+  EXPECT_FALSE(handler.last_phone_number().has_value());
+}
diff --git a/chrome/browser/sharing/click_to_call/click_to_call_ui_controller.cc b/chrome/browser/sharing/click_to_call/click_to_call_ui_controller.cc
index 9e7b653..b8b9469 100644
--- a/chrome/browser/sharing/click_to_call/click_to_call_ui_controller.cc
+++ b/chrome/browser/sharing/click_to_call/click_to_call_ui_controller.cc
@@ -119,7 +119,7 @@
   if (ukm_recorder_)
     std::move(ukm_recorder_).Run(SharingClickToCallSelection::kDevice);
 
-  SendNumberToDevice(device, GetUnescapedURLContent(phone_url_),
+  SendNumberToDevice(device, phone_url_.GetContent(),
                      SharingClickToCallEntryPoint::kLeftClickLink);
 }
 
diff --git a/chrome/browser/sharing/click_to_call/click_to_call_ui_controller_unittest.cc b/chrome/browser/sharing/click_to_call/click_to_call_ui_controller_unittest.cc
index 84dc0e8..e881aba 100644
--- a/chrome/browser/sharing/click_to_call/click_to_call_ui_controller_unittest.cc
+++ b/chrome/browser/sharing/click_to_call/click_to_call_ui_controller_unittest.cc
@@ -33,8 +33,7 @@
 
 namespace {
 
-const char kPhoneNumber[] = "073%2087%202525%2078";
-const char kExpectedPhoneNumber[] = "073 87 2525 78";
+const char kPhoneNumber[] = "073%2099%209999%2099";
 const char kReceiverGuid[] = "test_receiver_guid";
 const char kReceiverName[] = "test_receiver_name";
 
@@ -85,7 +84,7 @@
 
   chrome_browser_sharing::SharingMessage sharing_message;
   sharing_message.mutable_click_to_call_message()->set_phone_number(
-      kExpectedPhoneNumber);
+      kPhoneNumber);
   EXPECT_CALL(
       *service(),
       SendMessageToDevice(
diff --git a/chrome/browser/sharing/click_to_call/click_to_call_utils.cc b/chrome/browser/sharing/click_to_call/click_to_call_utils.cc
index f9709ab..a52c792 100644
--- a/chrome/browser/sharing/click_to_call/click_to_call_utils.cc
+++ b/chrome/browser/sharing/click_to_call/click_to_call_utils.cc
@@ -10,6 +10,7 @@
 #include "base/optional.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
+#include "build/build_config.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/sharing/click_to_call/phone_number_regex.h"
 #include "chrome/browser/sharing/sharing_service.h"
@@ -34,6 +35,10 @@
 constexpr int kSelectionTextMaxDigits = 15;
 
 bool IsClickToCallEnabled(content::BrowserContext* browser_context) {
+#if defined(OS_ANDROID)
+  // We don't support sending phone numbers from Android.
+  return false;
+#else   // defined(OS_ANDROID)
   // Check Chrome enterprise policy for Click to Call.
   Profile* profile = Profile::FromBrowserContext(browser_context);
   if (profile && !profile->GetPrefs()->GetBoolean(prefs::kClickToCallEnabled))
@@ -42,6 +47,32 @@
   SharingService* sharing_service =
       SharingServiceFactory::GetForBrowserContext(browser_context);
   return sharing_service != nullptr;
+#endif  // defined(OS_ANDROID)
+}
+
+// Returns the first possible phone number in |selection_text| given the
+// |regex_variant| to be used or base::nullopt if the regex did not match.
+base::Optional<std::string> ExtractPhoneNumber(
+    const std::string& selection_text) {
+  std::string parsed_number;
+
+  const re2::RE2& regex = GetPhoneNumberRegex();
+  if (!re2::RE2::PartialMatch(selection_text, regex, &parsed_number))
+    return base::nullopt;
+
+  return base::UTF16ToUTF8(
+      base::TrimWhitespace(base::UTF8ToUTF16(parsed_number), base::TRIM_ALL));
+}
+
+// Unescapes and returns the URL contents.
+std::string GetUnescapedURLContent(const GURL& url) {
+  std::string content_string(url.GetContent());
+  url::RawCanonOutputT<char16_t> unescaped_content;
+  url::DecodeURLEscapeSequences(content_string.data(), content_string.size(),
+                                url::DecodeURLMode::kUTF8OrIsomorphic,
+                                &unescaped_content);
+  return base::UTF16ToUTF8(
+      std::u16string(unescaped_content.data(), unescaped_content.length()));
 }
 
 }  // namespace
@@ -49,7 +80,7 @@
 bool ShouldOfferClickToCallForURL(content::BrowserContext* browser_context,
                                   const GURL& url) {
   return !url.is_empty() && url.SchemeIs(url::kTelScheme) &&
-         !url.GetContent().empty() && IsClickToCallEnabled(browser_context);
+         IsUrlSafeForClickToCall(url) && IsClickToCallEnabled(browser_context);
 }
 
 base::Optional<std::string> ExtractPhoneNumberForClickToCall(
@@ -71,24 +102,13 @@
   return ExtractPhoneNumber(selection_text);
 }
 
-base::Optional<std::string> ExtractPhoneNumber(
-    const std::string& selection_text) {
-  std::string parsed_number;
-
-  const re2::RE2& regex = GetPhoneNumberRegex();
-  if (!re2::RE2::PartialMatch(selection_text, regex, &parsed_number))
-    return base::nullopt;
-
-  return base::UTF16ToUTF8(
-      base::TrimWhitespace(base::UTF8ToUTF16(parsed_number), base::TRIM_ALL));
-}
-
-std::string GetUnescapedURLContent(const GURL& url) {
-  std::string content_string(url.GetContent());
-  url::RawCanonOutputT<char16_t> unescaped_content;
-  url::DecodeURLEscapeSequences(content_string.data(), content_string.size(),
-                                url::DecodeURLMode::kUTF8OrIsomorphic,
-                                &unescaped_content);
-  return base::UTF16ToUTF8(
-      std::u16string(unescaped_content.data(), unescaped_content.length()));
+bool IsUrlSafeForClickToCall(const GURL& url) {
+  // Get the unescaped content as this is what we'll end up sending to the
+  // Android dialer.
+  std::string unescaped = GetUnescapedURLContent(url);
+  // We don't allow any number that contains any of these characters as they
+  // might be used to create USSD codes.
+  return !unescaped.empty() &&
+         std::none_of(unescaped.begin(), unescaped.end(),
+                      [](char c) { return c == '#' || c == '*' || c == '%'; });
 }
diff --git a/chrome/browser/sharing/click_to_call/click_to_call_utils.h b/chrome/browser/sharing/click_to_call/click_to_call_utils.h
index 194b00f..2edaadf 100644
--- a/chrome/browser/sharing/click_to_call/click_to_call_utils.h
+++ b/chrome/browser/sharing/click_to_call/click_to_call_utils.h
@@ -24,12 +24,9 @@
     content::BrowserContext* browser_context,
     const std::string& selection_text);
 
-// Returns the first possible phone number in |selection_text| given the
-// |regex_variant| to be used or base::nullopt if the regex did not match.
-base::Optional<std::string> ExtractPhoneNumber(
-    const std::string& selection_text);
-
-// Unescapes and returns the URL contents.
-std::string GetUnescapedURLContent(const GURL& url);
+// Checks if the given |url| is safe to be used by Click to Call to be sent to
+// remote Android devices. Note that the remote device might open the dialer
+// immediately with the given |url| so any USSD codes should return false here.
+bool IsUrlSafeForClickToCall(const GURL& url);
 
 #endif  // CHROME_BROWSER_SHARING_CLICK_TO_CALL_CLICK_TO_CALL_UTILS_H_
diff --git a/chrome/browser/sharing/click_to_call/click_to_call_utils_unittest.cc b/chrome/browser/sharing/click_to_call/click_to_call_utils_unittest.cc
index c5c7e17..41dba07e 100644
--- a/chrome/browser/sharing/click_to_call/click_to_call_utils_unittest.cc
+++ b/chrome/browser/sharing/click_to_call/click_to_call_utils_unittest.cc
@@ -112,6 +112,26 @@
   EXPECT_FALSE(ShouldOfferClickToCallForURL(&profile_, GURL(kNonTelUrl)));
 }
 
+TEST_F(ClickToCallUtilsTest, TelLinkWithFragment) {
+  GURL fragment("tel:123#456");
+  EXPECT_TRUE(ShouldOfferClickToCallForURL(&profile_, fragment));
+  EXPECT_EQ("123", fragment.GetContent());
+}
+
+TEST_F(ClickToCallUtilsTest, TelLinkWithEncodedCharacters) {
+  // %23 == '#'
+  EXPECT_FALSE(ShouldOfferClickToCallForURL(&profile_, GURL("tel:123%23456")));
+  // %2A == '*'
+  EXPECT_FALSE(ShouldOfferClickToCallForURL(&profile_, GURL("tel:123%2A456")));
+  EXPECT_FALSE(ShouldOfferClickToCallForURL(&profile_, GURL("tel:123*456")));
+  // %25 == '%'
+  EXPECT_FALSE(ShouldOfferClickToCallForURL(&profile_, GURL("tel:123%25456")));
+
+  // %2B == '+'
+  EXPECT_TRUE(ShouldOfferClickToCallForURL(&profile_, GURL("tel:%2B44123")));
+  EXPECT_TRUE(ShouldOfferClickToCallForURL(&profile_, GURL("tel:+44123")));
+}
+
 TEST_F(ClickToCallUtilsTest,
        SelectionText_ValidPhoneNumberRegex_OfferForSelection) {
   // Stores a mapping of selected text to expected phone number parsed.
@@ -187,3 +207,13 @@
   EXPECT_EQ(base::nullopt,
             ExtractPhoneNumberForClickToCall(&profile_, "+1234567890123456"));
 }
+
+TEST_F(ClickToCallUtilsTest, IsUrlSafeForClickToCall) {
+  EXPECT_FALSE(IsUrlSafeForClickToCall(GURL("tel:123%23456")));
+  EXPECT_FALSE(IsUrlSafeForClickToCall(GURL("tel:123%2A456")));
+  EXPECT_FALSE(IsUrlSafeForClickToCall(GURL("tel:123*456")));
+  EXPECT_FALSE(IsUrlSafeForClickToCall(GURL("tel:123%25456")));
+
+  EXPECT_TRUE(IsUrlSafeForClickToCall(GURL("tel:%2B44123")));
+  EXPECT_TRUE(IsUrlSafeForClickToCall(GURL("tel:+44123")));
+}
diff --git a/chrome/browser/translate/translate_manager_browsertest.cc b/chrome/browser/translate/translate_manager_browsertest.cc
index fe4d8c8..cd192b42 100644
--- a/chrome/browser/translate/translate_manager_browsertest.cc
+++ b/chrome/browser/translate/translate_manager_browsertest.cc
@@ -493,7 +493,9 @@
 
 // Test that the translation was successful in an about:blank page.
 // This is a regression test for https://crbug.com/943685.
-IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, PageTranslationAboutBlank) {
+// Disabled due to flakiness: https://crbug.com/1202065.
+IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest,
+                       DISABLED_PageTranslationAboutBlank) {
   SetTranslateScript(kTestValidScript);
   AddTabAtIndex(0, GURL(embedded_test_server()->GetURL("/french_page.html")),
                 ui::PAGE_TRANSITION_TYPED);
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
index e1d14e2..4733d8b 100644
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -606,6 +606,9 @@
       <message name="IDS_PASSWORD_ENTRY_VIEWER_VIEW_STORED_PASSWORD" desc='Content description for the button that allows users to view the stored password upon reauthentication.'>
         Unmask password
       </message>
+      <message name="IDS_PASSWORD_ENTRY_VIEWER_SHOW_STORED_PASSWORD" desc='Content description for the button that allows users to view the stored password upon reauthentication.'>
+        Show password
+      </message>
       <message name="IDS_PASSWORD_ENTRY_VIEWER_DELETE_STORED_PASSWORD_ACTION_TITLE" desc='Title for button on action bar that deletes the stored password.'>
         Delete password
       </message>
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_PASSWORD_ENTRY_VIEWER_SHOW_STORED_PASSWORD.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_PASSWORD_ENTRY_VIEWER_SHOW_STORED_PASSWORD.png.sha1
new file mode 100644
index 0000000..daca116
--- /dev/null
+++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_PASSWORD_ENTRY_VIEWER_SHOW_STORED_PASSWORD.png.sha1
@@ -0,0 +1 @@
+7ddbdb9ac201a1898750ca6ae453a32730f71114
\ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
index 4e5ca28..7317a70 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Skandeer</translation>
 <translation id="2518590038762162553">In Ligte modus laai Chrome bladsye vinniger en gebruik tot 60 persent minder data. Chrome stuur jou webverkeer na Google toe om die bladsye wat jy besoek, te optimeer. <ph name="BEGIN_LINK" />Kom meer te wete<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Stuur URL'e van bladsye wat jy besoek na Google toe</translation>
+<translation id="2527779675047087889">Versteek knipbordinhoud</translation>
 <translation id="2532336938189706096">Webaansig</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> items is uitgevee</translation>
 <translation id="2536728043171574184">Bekyk tans 'n vanlyn kopie van hierdie bladsy</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Artikels oor jou belangstellings op Chrome</translation>
 <translation id="3070005020161560471">Vertaal outomaties</translation>
 <translation id="3089395242580810162">Maak in incognito-oortjie oop</translation>
+<translation id="3091010850649238832">Wys knipbordinhoud</translation>
 <translation id="3098745985164956033">Sommige prente word na Google toe gestuur om hul beskrywings vir jou te verbeter</translation>
 <translation id="3114507951000454849">Lees vandag se nuus <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Aankondigings</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Verbeter sekuriteit vir jou en almal op die web.</translation>
 <translation id="6618554661997243500">Tik op die Tuisknoppie om topwerwe en -berigte te sien</translation>
 <translation id="6627583120233659107">Wysig vouer</translation>
+<translation id="6635718764393004944">Jou soekenjin is <ph name="DSE" />. Sien hulle instruksies om jou soekgeskiedenis uit te vee, indien nodig.</translation>
 <translation id="663674369910034433">Raadpleeg <ph name="BEGIN_LINK1" />Sinkronisering<ph name="END_LINK1" /> en <ph name="BEGIN_LINK2" />Google-dienste<ph name="END_LINK2" /> vir meer instellings wat verband hou met privaatheid, sekuriteit en data-insameling</translation>
 <translation id="6643016212128521049">Vee uit</translation>
 <translation id="6643649862576733715">Rangskik volgens hoeveelheid data bespaar</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
index 53a57f24..142b75982 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">ቃኝ</translation>
 <translation id="2518590038762162553">በቀላል ሁነታ ላይ Chrome ገጾችን በበለጠ ፍጥነት የሚጭን ሲሆን እስከ 60 በመቶ ያነሰ ውሂብ ይጠቀማል። የሚጎበኟቸው ገጾችን ለማትባት Chrome የድር ትራፊክዎን ወደ Google ይልካል። <ph name="BEGIN_LINK" />የበለጠ ለመረዳት<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">የሚጎበኙዋቸውን ገጾች ዩአርኤሎች ወደ Google ይልካል</translation>
+<translation id="2527779675047087889">የቅንጥብ ሰሌዳ ይዘቶችን ደብቅ</translation>
 <translation id="2532336938189706096">የድር ዕይታ</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> ንጥሎች ተሰርዟል</translation>
 <translation id="2536728043171574184">የዚህን ገጽ የመስመር ውጭ ቅጂ በመመልከት ላይ</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Chrome ላይ በእርስዎ ፍላጎቶች ላይ ያሉ ጽሑፎች</translation>
 <translation id="3070005020161560471">በራስ-ሰር ይተረጉሙ</translation>
 <translation id="3089395242580810162">ማንነትን በማያሳውቅ ትር ክፈት</translation>
+<translation id="3091010850649238832">የቅንጥብ ሰሌዳ ይዘቶችን አሳይ</translation>
 <translation id="3098745985164956033">ለእርስዎ መግለጫዎችን ለማሻሻል አንዳንድ ምስሎች ወደ Google ይላካሉ</translation>
 <translation id="3114507951000454849">የዛሬውን ዜና ያንብቡ <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">ማስታወቂያዎች</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">ለእርስዎ እና ለማናቸውም በድር ላይ ያለ ሁሉም ሰው ደህንነትን ያሻሽላል።</translation>
 <translation id="6618554661997243500">ለእርስዎ የሚሆኑ ከፍተኛዎቹን ጣቢያዎች እና ዘገባዎች ለማየት የመነሻ አዝራሩን መታ ያድርጉ</translation>
 <translation id="6627583120233659107">አቃፊ አርትዕ</translation>
+<translation id="6635718764393004944">የእርስዎ የፍለጋ ፕሮግራም <ph name="DSE" /> ነው። መተግበር የሚችል ከሆነ የፍለጋ ታሪክዎን ለመሰረዝ መመሪያዎቻቸውን ይመልከቱ።</translation>
 <translation id="663674369910034433">ከግላዊነት፣ ደህንነት እና የውሂብ ስብስብ ጋር ለሚዛመዱ ተጨማሪ ቅንብሮች <ph name="BEGIN_LINK1" />ስምረት<ph name="END_LINK1" /> እና <ph name="BEGIN_LINK2" />የGoogle አገልግሎቶች<ph name="END_LINK2" />ን ይመልከቱ</translation>
 <translation id="6643016212128521049">አጽዳ</translation>
 <translation id="6643649862576733715">በተቆጠበው የውሂብ መጠን ደርድር</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
index e8ce3e2d..456fc92 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
@@ -247,6 +247,7 @@
 <translation id="2612676031748830579">কার্ড নম্বৰ</translation>
 <translation id="2625189173221582860">পাছৱর্ডৰ প্ৰতিলিপি কৰা হ’ল</translation>
 <translation id="2631006050119455616">ছেভ হৈ থকা</translation>
+<translation id="2645657967708199252">আপোনাৰ <ph name="CONNECTION_TYPE" /> সংযোগে আপোনাৰ ডাউনল'ডটো লেহেমীয়া কৰিব পাৰে</translation>
 <translation id="2647434099613338025">ভাষা যোগ কৰক</translation>
 <translation id="2650751991977523696">ফাইল পুনৰ ডাইনল'ড কৰিবনে?</translation>
 <translation id="2651091186440431324">{FILE_COUNT,plural, =1{#টা অডিঅ' ফাইল}one{#টা অডিঅ' ফাইল}other{#টা অডিঅ' ফাইল}}</translation>
@@ -259,6 +260,7 @@
 <translation id="2718846868787000099">আপুনি অগ্ৰাধিকাৰ দিয়া ভাষাত সমল দেখুৱাবলৈ আপুনি চোৱা ছাইটসমূহে আপোনাৰ অগ্ৰাধিকাৰসমূহ চাব পাৰে</translation>
 <translation id="2723001399770238859">অডিঅ’</translation>
 <translation id="2728754400939377704">ছাইট অনুসৰি সজাওক</translation>
+<translation id="2739256783402597439">2G</translation>
 <translation id="2744248271121720757">ক্ষিপ্ৰভাৱে সন্ধান কৰিবলৈ আৰু প্ৰাসংগিক কার্যসমূহ চাবলৈ কোনো এটা শব্দত টিপক</translation>
 <translation id="2760989362628427051">আপোনাৰ ডিভাইচত গাঢ় থীম অথবা বেটাৰী সঞ্চয়কাৰী অন থাকিলে গাঢ় ৰঙৰ থীম অন কৰক</translation>
 <translation id="2762000892062317888">এইমাত্ৰ</translation>
@@ -435,6 +437,7 @@
 <translation id="3943557322767080599">আপোনাৰ Google একাউণ্টত ছাইন ইন কৰোঁতে Chromeৰ ছাইন-ইন প্ৰম্পট্‌ দেখুৱাওক</translation>
 <translation id="395206256282351086">সন্ধান আৰু ছাইটৰ চুপাৰিছ অক্ষম কৰা হ’ল</translation>
 <translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{আপোনাৰ পৃষ্ঠাটো সাজু হ'লে Chromeএ সেইটো ল'ড কৰিব}one{আপোনাৰ পৃষ্ঠাসমূহ সাজু হ'লে Chromeএ সেইটো ল'ড কৰিব}other{আপোনাৰ পৃষ্ঠাসমূহ সাজু হ'লে Chromeএ সেইটো ল'ড কৰিব}}</translation>
+<translation id="3962957115499249330">ৱাই-ফাইত এই ডাউনল'ডটো আৰম্ভ হ'লে আপুনি এটা জাননী দেখা পাব।</translation>
 <translation id="3963007978381181125">পাছফ্ৰেজ এনক্ৰিপশ্বনত Google Payৰ পৰিশোধ পদ্ধতি আৰু ঠিকনা অন্তৰ্ভুক্ত নহয়। আপোনাৰ পাছফ্ৰেজ জনা কোনোবাইহে আপুনি এনক্ৰিপ্ট কৰি থোৱা ডেটা পঢ়িব পাৰে। পাছফ্ৰেজটো ক’লৈকো পঠিওৱা নহয় আৰু সেইটো Googleত ষ্ট'ৰ কৰা নাথাকে। আপুনি যদি নিজৰ পাছফ্ৰেজটো পাহৰে বা এই ছেটিংটো সলাব বিচাৰে, ছিংক ৰিছেট কৰিব লাগিব। <ph name="BEGIN_LINK" />অধিক জানক<ph name="END_LINK" /></translation>
 <translation id="3969142555815019568">Chromeএ আপোনাৰ পাছৱৰ্ডসমূহ পৰীক্ষা কৰিব নোৱাৰে</translation>
 <translation id="3974987681202239636"><ph name="APP_NAME" /> Chromeত খুলিব। অব্যাহত ৰাখি আপুনি <ph name="BEGIN_LINK1" />Google সেৱাৰ চৰ্তাৱলী<ph name="END_LINK1" /> আৰু <ph name="BEGIN_LINK2" />Google Chrome আৰু Chrome OSৰ সেৱাৰ অতিৰিক্ত চৰ্তাৱলী<ph name="END_LINK2" />ত সন্মতি দিয়ে। <ph name="BEGIN_LINK3" />Family Linkৰ জৰিয়তে পৰিচালনা কৰা Google একাউণ্টৰ বাবে গোপনীয়তাৰ জাননী<ph name="END_LINK3" />টোও প্ৰযোজ্য হয়।</translation>
@@ -478,6 +481,7 @@
 <translation id="4256782883801055595">মুক্ত উত্‍সৰ অনুজ্ঞাপত্ৰ</translation>
 <translation id="4263656433980196874">Assistantৰ কণ্ঠধ্বনিৰদ্বাৰা সন্ধানৰ সন্মতিৰ ইউআই পূৰ্ণ উচ্চতাত খোল খাইছে</translation>
 <translation id="4269820728363426813">লিংকৰ ঠিকনাটো প্ৰতিলিপি কৰক</translation>
+<translation id="4290281343757112331">ইয়াৰ সলনি পাছত ডাউনল'ড কৰিবনে?</translation>
 <translation id="4298388696830689168">লিংক হৈ থকা ছাইটবোৰ</translation>
 <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="4307992518367153382">মৌলিক</translation>
@@ -540,6 +544,7 @@
 <translation id="4698034686595694889"><ph name="APP_NAME" />ত অফলাইন চাওক</translation>
 <translation id="4699172675775169585">কেশ্ব প্ৰতিচ্ছবি আৰু ফাইল</translation>
 <translation id="4714588616299687897">আপোনাৰ ডেটা ৬০% পর্যন্ত ৰাহি কৰক</translation>
+<translation id="4716066120200945007">ফ’ল’ কৰি থকা হৈছে</translation>
 <translation id="4719927025381752090">অনুবাদ কৰাৰ প্ৰস্তাৱ দিয়ক</translation>
 <translation id="4720023427747327413"><ph name="PRODUCT_NAME" />ত খোলক</translation>
 <translation id="4720982865791209136">Chromeক উন্নত কৰাত সহায় কৰক। <ph name="BEGIN_LINK" />সমীক্ষাত ভাগ লওক<ph name="END_LINK" /></translation>
@@ -620,6 +625,7 @@
 <translation id="5191251636205085390">তৃতীয় পক্ষৰ কুকিৰ স্থান ল'বলৈ বিচৰা নতুন প্ৰযুক্তিৰ বিষয়ে জানক আৰু সেইবোৰ নিয়ন্ত্ৰণ কৰক</translation>
 <translation id="5193988420012215838">আপোনাৰ ক্লিপব'ৰ্ডলৈ প্ৰতিলিপি কৰা হৈছে</translation>
 <translation id="5199929503336119739">কর্মস্থানৰ প্ৰ'ফাইল</translation>
+<translation id="5201464744567315552"><ph name="TIME" />ত ডাউনল'ড আৰম্ভ হ'লে আপুনি এটা জাননী দেখা পাব।</translation>
 <translation id="5204967432542742771">পাছৱৰ্ড দিয়ক</translation>
 <translation id="5210286577605176222">পূর্বৱর্তী টেবলৈ যাওক</translation>
 <translation id="5210365745912300556">টেব বন্ধ কৰক</translation>
@@ -630,6 +636,7 @@
 <translation id="5230560987958996918"><ph name="SITE" />এ নিকটৱৰ্তী ব্লুটুথ ডিভাইচবোৰ বিচাৰি স্কেন কৰিব বিচাৰে। এই ডিভাইচকেইটা বিচাৰি পোৱা গৈছে:</translation>
 <translation id="5233638681132016545">নতুন টেব</translation>
 <translation id="5250483651202458397">স্ক্ৰীনশ্বট। বন্ধ কৰিবলৈ টিপক।</translation>
+<translation id="5262378156578470238"><ph name="DATE" />ত ডাউনল'ড আৰম্ভ হ'লে আপুনি এটা জাননী দেখা পাব।</translation>
 <translation id="526421993248218238">এই পৃষ্ঠাটো ল’ড কৰিব নোৱাৰি</translation>
 <translation id="5271967389191913893">ডাউনল'ড কৰিবলগীয়া সমল ডিভাইচে খুলিব নোৱাৰে।</translation>
 <translation id="5292796745632149097">এইটোলৈ পঠিয়াওক</translation>
@@ -909,6 +916,7 @@
 <translation id="6981982820502123353">সাধ্য সুবিধাসমূহ</translation>
 <translation id="6989267951144302301">ডাউনল’ড কৰিব পৰা নগ’ল</translation>
 <translation id="6995899638241819463">ডেটা উলংঘনৰ ফলত পাছৱৰ্ডসমূহ ফাদিল হ’লে আপোনাক সকীয়নি দিয়ে</translation>
+<translation id="7001056293070445572">ফাইলটোৰ আকাৰ অতি বেছি ডাঙৰ (<ph name="FILE_SIZE" />)</translation>
 <translation id="7015203776128479407">প্ৰাৰম্ভিক ছিংকৰ ছেটআপ সম্পূর্ণ হোৱা নাই। ছিংক কৰা সুবিধাটো অফ কৰা আছে।</translation>
 <translation id="7022756207310403729">ব্ৰাউজাৰত খোলক</translation>
 <translation id="702463548815491781">টকবেক বা ছুইচৰ দ্বাৰা ব্যৱহাৰ কৰা অনুমতি অন থকা অৱস্থান এয়া চুপাৰিছ কৰা হয়</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb
index 7745998..8f6692e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Пошук</translation>
 <translation id="2518590038762162553">У спрошчаным рэжыме Chrome загружае старонкі хутчэй і зніжае выкарыстанне трафіка максімум на 60 працэнтаў. Каб аптымізаваць старонкі, якія вы наведваеце, Chrome адпраўляе даныя пра ваш інтэрнэт-трафік у Google. <ph name="BEGIN_LINK" />Даведацца больш<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Адпраўка URL-адрасоў наведаных вамі старонак у Google</translation>
+<translation id="2527779675047087889">Схаваць змесціва буфера абмену</translation>
 <translation id="2532336938189706096">Прагляд вэб-змесціва</translation>
 <translation id="2534155362429831547">Выдалена элементаў: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Вы праглядаеце пазасеткавую копію гэтай старонкі</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Цікавыя для вас артыкулы ў Chrome</translation>
 <translation id="3070005020161560471">Аўтаматычна перакладаць з наступных моў:</translation>
 <translation id="3089395242580810162">Адкрыць ва ўкладцы інкогніта</translation>
+<translation id="3091010850649238832">Паказаць змесціва буфера абмену</translation>
 <translation id="3098745985164956033">Некаторыя відарысы адпраўляюцца ў Google, каб палепшыць іх апісанне</translation>
 <translation id="3114507951000454849">Чытайце сённяшнія навіны <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Апавяшчэнні</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Павышае бяспеку для вас і іншых карыстальнікаў у інтэрнэце.</translation>
 <translation id="6618554661997243500">Каб прагледзець папулярныя сайты і падабраныя для вас артыкулы, націсніце кнопку "Галоўная старонка"</translation>
 <translation id="6627583120233659107">Рэдагаваць папку</translation>
+<translation id="6635718764393004944">Ваша пошукавая сістэма – <ph name="DSE" />. Каб выдаліць гісторыю пошуку, выканайце адпаведныя інструкцыі для гэтай сістэмы (калі яны даступныя).</translation>
 <translation id="663674369910034433">Дадатковыя налады прыватнасці, бяспекі і збору даных глядзіце ў раздзелах <ph name="BEGIN_LINK1" />Сінхранізацыя<ph name="END_LINK1" /> і <ph name="BEGIN_LINK2" />сэрвісы Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Ачысціць</translation>
 <translation id="6643649862576733715">Сартаваць па аб'ёме сэканомленага трафіка</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
index 70baf73b..c1c4356 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
@@ -247,6 +247,7 @@
 <translation id="2612676031748830579">কার্ড নম্বর</translation>
 <translation id="2625189173221582860">পাসওয়ার্ড কপি করা হয়েছে</translation>
 <translation id="2631006050119455616">সংরক্ষিত হয়েছে</translation>
+<translation id="2645657967708199252">আপনার <ph name="CONNECTION_TYPE" /> কানেকশনের ফলে ডাউনলোডের স্পিড কম হতে পারে</translation>
 <translation id="2647434099613338025">ভাষা যুক্ত করুন</translation>
 <translation id="2650751991977523696">আবার ফাইল ডাউনলোড করবেন?</translation>
 <translation id="2651091186440431324">{FILE_COUNT,plural, =1{#টি অডিও ফাইল}one{#টি অডিও ফাইল}other{#টি অডিও ফাইল}}</translation>
@@ -259,6 +260,7 @@
 <translation id="2718846868787000099">আপনার পছন্দের ভাষায় কন্টেন্ট দেখাতে, আপনি যেসব সাইট ভিজিট করেন সেগুলি আপনার ভাষার পছন্দ দেখতে পাবে</translation>
 <translation id="2723001399770238859">অডিও</translation>
 <translation id="2728754400939377704">সাইট অনুযায়ী সাজান</translation>
+<translation id="2739256783402597439">2G</translation>
 <translation id="2744248271121720757">ঝটপট সার্চ এবং সম্পর্কিত অ্যাকশন দেখতে একটি শব্দ ট্যাপ করুন</translation>
 <translation id="2760989362628427051">আপনার ডিভাইসে গাঢ় থিম বা ব্যাটারি সেভার চালু থাকলে, গাঢ় থিম চালু করুন</translation>
 <translation id="2762000892062317888">এখনই</translation>
@@ -435,6 +437,7 @@
 <translation id="3943557322767080599">আপনার Google অ্যাকাউন্টে সাইন-ইন করলে Chrome সাইন-ইন প্রম্পট দেখুন</translation>
 <translation id="395206256282351086">সার্চ এবং সাইটের প্রস্তাবনা অক্ষম করা আছে</translation>
 <translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{রেডি হলেই Chrome আপনার পৃষ্ঠা লোড করবে}one{রেডি হলেই Chrome আপনার পৃষ্ঠা লোড করবে}other{রেডি হলেই Chrome আপনার পৃষ্ঠা লোড করবে}}</translation>
+<translation id="3962957115499249330">ওয়াই-ফাই ব্যবহার করে এই ডাউনলোড শুরু হলে আপনাকে একটি বিজ্ঞপ্তি পাঠানো হবে।</translation>
 <translation id="3963007978381181125">পাসফ্রেজ এনক্রিপশনে Google Pay-এর পেমেন্ট পদ্ধতি ও ঠিকানা অন্তর্ভুক্ত থাকে না। 
 আপনার পাসফ্রেজ আছে এমন কেউই শুধু আপনার এনক্রিপ্ট করা ডেটা পড়তে পারবেন। 
 পাসফ্রেজ Google-এ পাঠানো হয় না বা Google তা সংরক্ষণ করে না। পাসফ্রেজ ভুলে গেলে বা এই সেটিং পরিবর্তন করতে চাইলে, আপনাকে সিঙ্ক রিসেট করতে হবে। <ph name="BEGIN_LINK" />আরও জানুন<ph name="END_LINK" /></translation>
@@ -480,6 +483,7 @@
 <translation id="4256782883801055595">ওপেন সোর্স লাইসেন্স</translation>
 <translation id="4263656433980196874">Assistant-এ ভয়েস সার্চ করার সম্মতি দেওয়ার UI সম্পূর্ণ স্ক্রিন জুড়ে খুলেছে</translation>
 <translation id="4269820728363426813">লিঙ্ক অ্যাড্রেস কপি করুন</translation>
+<translation id="4290281343757112331">এর বদলে পরে ডাউনলোড করতে চান?</translation>
 <translation id="4298388696830689168">লিঙ্ক করা সাইট</translation>
 <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="4307992518367153382">বুনিয়াদি</translation>
@@ -542,6 +546,7 @@
 <translation id="4698034686595694889"><ph name="APP_NAME" /> এ অফলাইনে দেখুন</translation>
 <translation id="4699172675775169585">ক্যাশে করা ছবি এবং ফাইলগুলি</translation>
 <translation id="4714588616299687897">আপনার ডেটা ৬০% পর্যন্ত সেভ করুন</translation>
+<translation id="4716066120200945007">ফলো করছেন</translation>
 <translation id="4719927025381752090">অনুবাদ করুন</translation>
 <translation id="4720023427747327413"><ph name="PRODUCT_NAME" /> এ খুলুন</translation>
 <translation id="4720982865791209136">Chrome উন্নত করতে সাহায্য করুন। <ph name="BEGIN_LINK" />সমীক্ষায় অংশ নিন।<ph name="END_LINK" /></translation>
@@ -622,6 +627,7 @@
 <translation id="5191251636205085390">থার্ড-পার্টি কুকি সরানোর নতুন প্রযুক্তি ও তা নিয়ন্ত্রণ সংক্রান্ত তথ্যগুলি জানুন</translation>
 <translation id="5193988420012215838">আপনার ক্লিপবোর্ডে কপি করা হয়েছে</translation>
 <translation id="5199929503336119739">কর্মস্থলের প্রোফাইল</translation>
+<translation id="5201464744567315552"><ph name="TIME" />-এ ডাউনলোড শুরু হলে আপনাকে একটি বিজ্ঞপ্তি পাঠানো হবে।</translation>
 <translation id="5204967432542742771">পাসওয়ার্ড প্রবেশ করান</translation>
 <translation id="5210286577605176222">পূর্ববর্তী ট্যাবে চলে যান</translation>
 <translation id="5210365745912300556">ট্যাব বন্ধ করুন</translation>
@@ -632,6 +638,7 @@
 <translation id="5230560987958996918">কাছাকাছি থাকা ব্লুটুথ ডিভাইসগুলিকে <ph name="SITE" /> স্ক্যান করতে চায়, এই ডিভাইসগুলি পাওয়া গেছে:</translation>
 <translation id="5233638681132016545">নতুন ট্যাব</translation>
 <translation id="5250483651202458397">স্ক্রিনশট। বন্ধ করতে ট্যাপ করুন।</translation>
+<translation id="5262378156578470238"><ph name="DATE" />-এ ডাউনলোড শুরু হলে আপনাকে একটি বিজ্ঞপ্তি পাঠানো হবে।</translation>
 <translation id="526421993248218238">পৃষ্ঠাটি লোড করা যাচ্ছে না</translation>
 <translation id="5271967389191913893">ডাউনলোড করা কন্টেন্ট ডিভাইস খুলতে পারবে না৷</translation>
 <translation id="5292796745632149097">এতে পাঠান:</translation>
@@ -912,6 +919,7 @@
 <translation id="6981982820502123353">ব্যবহারযোগ্যতা</translation>
 <translation id="6989267951144302301">ডাউনলোড করা যায়নি</translation>
 <translation id="6995899638241819463">আপনার পাসওয়ার্ড কোনও ডেটা নিরাপত্তা লঙ্ঘনের কারণে সর্বজনীনভাবে প্রকাশ হলে তা আপনাকে জানানো হবে</translation>
+<translation id="7001056293070445572">এই ফাইলটি বড় (<ph name="FILE_SIZE" />)</translation>
 <translation id="7015203776128479407">সিঙ্কের প্রাথমিক সেট-আপ সম্পূর্ণ হয়নি। সিঙ্ক বন্ধ আছে।</translation>
 <translation id="7022756207310403729">ব্রাউজারে খুলুন</translation>
 <translation id="702463548815491781">'টকব্যাক' অথবা 'অ্যাক্সেস পরিবর্তন করুন' চালু করা থাকলে এটি করার সাজেশন পাবেন</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
index 7c49d008..49db969 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Skeniraj</translation>
 <translation id="2518590038762162553">U jednostavnom načinu rada, Chrome brže učitava stranice i koristi do 60% manje podataka. Da optimizira stranice koje posjećujete, Chrome Googleu šalje informacije o vašem saobraćaju na internetu. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">URL-ove stranica koje posjećujete šalje Googleu</translation>
+<translation id="2527779675047087889">Sakrijte sadržaj međumemorije</translation>
 <translation id="2532336938189706096">Web prikaz</translation>
 <translation id="2534155362429831547">Broj izbrisanih stavki: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Gledate kopiju ove stranice van mreže</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Članci o vašim interesovanjima na Chromeu</translation>
 <translation id="3070005020161560471">Automatski prevodi</translation>
 <translation id="3089395242580810162">Otvori u anonimnoj kartici</translation>
+<translation id="3091010850649238832">Prikažite sadržaj međumemorije</translation>
 <translation id="3098745985164956033">Neke slike se šalju Googleu radi poboljšanja opisa</translation>
 <translation id="3114507951000454849">Pročitajte današnje vijesti <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Najave</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Poboljšava vašu i svačiju sigurnost na webu.</translation>
 <translation id="6618554661997243500">Da pogledate najpopularnije web lokacije i priče prilagođene vama, dodirnite dugme za početni ekran</translation>
 <translation id="6627583120233659107">Uredi folder</translation>
+<translation id="6635718764393004944">Vaš pretraživač je <ph name="DSE" />. Ako je primjenjivo, pogledajte upute pretraživača da izbrišete historiju pretraživanja.</translation>
 <translation id="663674369910034433">Više postavki koje se odnose na privatnost, sigurnost i prikupljanje podataka možete pronaći u odjeljcima <ph name="BEGIN_LINK1" />Sinhronizacija<ph name="END_LINK1" /> i <ph name="BEGIN_LINK2" />Googleove usluge<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Obriši</translation>
 <translation id="6643649862576733715">Sortiraj po iznosu sačuvanih podataka</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
index f5d53b7..26391ba4 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Escaneja</translation>
 <translation id="2518590038762162553">En el mode bàsic, Chrome carrega les pàgines més ràpidament i utilitza fins a un 60 per cent menys de dades. Per optimitzar les pàgines que visites, Chrome envia el teu trànsit web a Google. <ph name="BEGIN_LINK" />Més informació<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Envia a Google els URL de les pàgines que visites</translation>
+<translation id="2527779675047087889">Amaga els continguts del porta-retalls</translation>
 <translation id="2532336938189706096">Visualització web</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> elements suprimits</translation>
 <translation id="2536728043171574184">S'està mostrant una còpia sense connexió d'aquesta pàgina</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Articles relacionats amb els teus interessos a Chrome</translation>
 <translation id="3070005020161560471">Tradueix automàticament</translation>
 <translation id="3089395242580810162">Obre en pestanya d'incògnit</translation>
+<translation id="3091010850649238832">Mostra els continguts del porta-retalls</translation>
 <translation id="3098745985164956033">Algunes imatges s'envien a Google per millorar-ne les descripcions per a tu</translation>
 <translation id="3114507951000454849">Llegeix les notícies d'avui <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Anuncis</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Millora la seguretat per a tu i per a tots els usuaris del web.</translation>
 <translation id="6618554661997243500">Per consultar els llocs web i les històries que més visites, toca el botó d'inici</translation>
 <translation id="6627583120233659107">Edita la carpeta</translation>
+<translation id="6635718764393004944">El teu motor de cerca és <ph name="DSE" />. Si és necessari, consulta les seves instruccions per suprimir l'historial de cerques.</translation>
 <translation id="663674369910034433">Per trobar més opcions de configuració relacionades amb la privadesa, la seguretat i la recollida de dades, consulta <ph name="BEGIN_LINK1" />Sincronització<ph name="END_LINK1" /> i <ph name="BEGIN_LINK2" />serveis de Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Esborra</translation>
 <translation id="6643649862576733715">Ordena per quantitat de dades estalviades</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
index d07e58e..30b3948 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Vyhledat</translation>
 <translation id="2518590038762162553">Ve zjednodušeném režimu načítá Chrome stránky rychleji a používá až o 60 procent méně dat. Kvůli optimalizaci navštěvovaných stránek přijímá Chrome váš webový provoz přes Google. <ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Odesílá do Googlu adresy URL stránek, které navštěvujete</translation>
+<translation id="2527779675047087889">Skrýt obsah schránky</translation>
 <translation id="2532336938189706096">Webové zobrazení</translation>
 <translation id="2534155362429831547">Byly smazány položky (celkem <ph name="NUMBER_OF_ITEMS" />)</translation>
 <translation id="2536728043171574184">Prohlížíte offline kopii stránky</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Články o vašich zájmech v Chromu</translation>
 <translation id="3070005020161560471">Automatický překlad</translation>
 <translation id="3089395242580810162">Otevřít na anonymní kartě</translation>
+<translation id="3091010850649238832">Zobrazit obsah schránky</translation>
 <translation id="3098745985164956033">Za účelem zlepšení popisů se některé obrázky odesílají do Googlu</translation>
 <translation id="3114507951000454849">Přečtěte si dnešní zprávy <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Oznámení</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Zlepšuje bezpečnost pro vás i všechny ostatní uživatele internetu.</translation>
 <translation id="6618554661997243500">Chcete-li zobrazit své top weby a příběhy, klepněte na tlačítko domovské stránky</translation>
 <translation id="6627583120233659107">Upravit složku</translation>
+<translation id="6635718764393004944">Váš vyhledávač je <ph name="DSE" />. Prostudujte si pokyny k vymazání historie vyhledávání v příslušném vyhledávači.</translation>
 <translation id="663674369910034433">Další nastavení související s ochranou soukromí, zabezpečením a shromažďováním dat najdete v částech <ph name="BEGIN_LINK1" />Synchronizace<ph name="END_LINK1" /> a <ph name="BEGIN_LINK2" />Služby Google<ph name="END_LINK2" />.</translation>
 <translation id="6643016212128521049">Vymazat</translation>
 <translation id="6643649862576733715">Seřadit podle množství uspořených dat</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
index b3032946..02fb7c5 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Scan</translation>
 <translation id="2518590038762162553">Chrome indlæser sider hurtigere og bruger op til 60 procent mindre data i Lite-tilstand. Chrome sender din webtrafik til Google for at optimere de sider, du besøger. <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Sender webadresser på de sider, du besøger, til Google</translation>
+<translation id="2527779675047087889">Skjul indhold i udklipsholderen</translation>
 <translation id="2532336938189706096">Webvisning</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> elementer blev slettet</translation>
 <translation id="2536728043171574184">Du ser en offlinekopi af denne side</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Artikler om dine interesser i Chrome</translation>
 <translation id="3070005020161560471">Oversæt automatisk</translation>
 <translation id="3089395242580810162">Åbn på inkognitofane</translation>
+<translation id="3091010850649238832">Vis indhold i udklipsholderen</translation>
 <translation id="3098745985164956033">Nogle billeder sendes til Google for at give dig bedre beskrivelser</translation>
 <translation id="3114507951000454849">Læs dagens nyheder <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Meddelelser</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Forbedrer din og alles sikkerhed på nettet.</translation>
 <translation id="6618554661997243500">Tryk på knappen Hjem for at se de mest anvendte websites og anbefalede artikler</translation>
 <translation id="6627583120233659107">Rediger mappen</translation>
+<translation id="6635718764393004944">Dine standardsøgemaskine er <ph name="DSE" />. Se evt. vejledningen til denne søgemaskine for at slette din søgehistorik.</translation>
 <translation id="663674369910034433">Du kan finde flere indstillinger vedrørende privatliv, sikkerhed og dataindsamling under <ph name="BEGIN_LINK1" />Synkronisering<ph name="END_LINK1" /> og <ph name="BEGIN_LINK2" />Google-tjenester<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Ryd</translation>
 <translation id="6643649862576733715">Sortér efter mængden af data, der blev sparet</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
index ac76b0d..58c7e7c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Scannen</translation>
 <translation id="2518590038762162553">Im Lite-Modus werden Seiten schneller in Chrome geladen und es werden bis zu 60 % weniger Daten verbraucht. Zum Optimieren der von Ihnen besuchten Seiten sendet Chrome Ihren Datenverkehr an Google. <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">URLs der von Ihnen besuchten Seiten werden an Google gesendet</translation>
+<translation id="2527779675047087889">Inhalte der Zwischenablage ausblenden</translation>
 <translation id="2532336938189706096">Web-Ansicht</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> Einträge gelöscht</translation>
 <translation id="2536728043171574184">Eine Offline-Kopie dieser Seite wird angezeigt.</translation>
@@ -247,6 +248,7 @@
 <translation id="2612676031748830579">Kartennummer</translation>
 <translation id="2625189173221582860">Passwort kopiert</translation>
 <translation id="2631006050119455616">Eingespart</translation>
+<translation id="2645657967708199252">Ihr Download kann wegen Ihrer <ph name="CONNECTION_TYPE" />-Verbindung sehr lange dauern</translation>
 <translation id="2647434099613338025">Sprache hinzufügen</translation>
 <translation id="2650751991977523696">Datei noch einmal herunterladen?</translation>
 <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# Audiodatei}other{# Audiodateien}}</translation>
@@ -259,6 +261,7 @@
 <translation id="2718846868787000099">Zum Anzeigen von Inhalten in Ihren bevorzugten Sprachen müssen Websites, die Sie besuchen, Ihre Einstellungen abrufen können</translation>
 <translation id="2723001399770238859">Audio</translation>
 <translation id="2728754400939377704">Nach Website sortieren</translation>
+<translation id="2739256783402597439">2G</translation>
 <translation id="2744248271121720757">Tippen Sie auf ein Wort, um eine Sofortsuche zu starten oder weitere Aktionen anzuzeigen</translation>
 <translation id="2760989362628427051">Dunkles Design verwenden, wenn beim Gerät das dunkle Design oder der Energiesparmodus aktiviert ist</translation>
 <translation id="2762000892062317888">gerade eben</translation>
@@ -312,6 +315,7 @@
 <translation id="3062802207422175757">Artikel zu Ihren Interessen in Chrome</translation>
 <translation id="3070005020161560471">Automatisch übersetzen</translation>
 <translation id="3089395242580810162">In Inkognitotab öffnen</translation>
+<translation id="3091010850649238832">Inhalte der Zwischenablage anzeigen</translation>
 <translation id="3098745985164956033">Einige Bilder werden an Google gesendet, um die Beschreibungen zu verbessern</translation>
 <translation id="3114507951000454849">Nachrichten von heute lesen <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Ankündigungen</translation>
@@ -435,6 +439,7 @@
 <translation id="3943557322767080599">Aufforderung zur Anmeldung in Chrome anzeigen, wenn Sie sich in Ihrem Google-Konto anmelden</translation>
 <translation id="395206256282351086">Vorschläge für Suchbegriffe und Websites deaktiviert</translation>
 <translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome lädt Ihre Seite, sobald diese bereit ist}other{Chrome lädt Ihre Seiten, sobald diese bereit sind}}</translation>
+<translation id="3962957115499249330">Sie erhalten eine Benachrichtigung, wenn dieser Download im WLAN gestartet wird.</translation>
 <translation id="3963007978381181125">Die Passphrasenverschlüsselung enthält keine Zahlungsmethoden oder Adressen von Google Pay. Nur Personen mit Ihrer Passphrase können Ihre verschlüsselten Daten lesen. Die Passphrase wird nicht an Google gesendet oder von Google gespeichert. Falls Sie sie vergessen oder diese Einstellung ändern möchten, müssen Sie die Synchronisierung zurücksetzen. <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation>
 <translation id="3969142555815019568">Chrome kann Ihre Passwörter nicht prüfen</translation>
 <translation id="3974987681202239636"><ph name="APP_NAME" /> wird in Chrome geöffnet. Wenn Sie fortfahren, stimmen Sie den <ph name="BEGIN_LINK1" />Nutzungsbedingungen von Google<ph name="END_LINK1" /> und den <ph name="BEGIN_LINK2" />zusätzlichen Nutzungsbedingungen für Google Chrome und Chrome OS<ph name="END_LINK2" /> zu. Außerdem gelten die <ph name="BEGIN_LINK3" />Datenschutzhinweise für mit Family Link verwaltete Google-Konten<ph name="END_LINK3" />.</translation>
@@ -478,6 +483,7 @@
 <translation id="4256782883801055595">Open Source-Lizenzen</translation>
 <translation id="4263656433980196874">Benutzeroberfläche für die Einwilligung in die Sprachsuche von Assistant ganz geöffnet</translation>
 <translation id="4269820728363426813">URL kopieren</translation>
+<translation id="4290281343757112331">Später herunterladen?</translation>
 <translation id="4298388696830689168">Verknüpfte Websites</translation>
 <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="4307992518367153382">Grundeinstellungen</translation>
@@ -540,6 +546,7 @@
 <translation id="4698034686595694889">Offline in <ph name="APP_NAME" /> ansehen</translation>
 <translation id="4699172675775169585">Bilder und Dateien im Cache</translation>
 <translation id="4714588616299687897">Reduzieren Sie Ihre Daten um bis zu 60 %</translation>
+<translation id="4716066120200945007">FOLGE ICH</translation>
 <translation id="4719927025381752090">Übersetzung anbieten</translation>
 <translation id="4720023427747327413">In <ph name="PRODUCT_NAME" /> öffnen</translation>
 <translation id="4720982865791209136">Helfen Sie uns, Chrome zu verbessern. <ph name="BEGIN_LINK" />An Umfrage teilnehmen<ph name="END_LINK" /></translation>
@@ -620,6 +627,7 @@
 <translation id="5191251636205085390">Weitere Informationen zu neuen Technologien als Ersatz für Drittanbieter-Cookies und ihrer Nutzung</translation>
 <translation id="5193988420012215838">In die Zwischenablage kopiert</translation>
 <translation id="5199929503336119739">Arbeitsprofil</translation>
+<translation id="5201464744567315552">Sie erhalten eine Benachrichtigung, wenn dieser Download um <ph name="TIME" /> gestartet wird.</translation>
 <translation id="5204967432542742771">Passwort eingeben</translation>
 <translation id="5210286577605176222">Zum vorherigen Tab wechseln</translation>
 <translation id="5210365745912300556">Schließen</translation>
@@ -630,6 +638,7 @@
 <translation id="5230560987958996918"><ph name="SITE" /> möchte nach Bluetooth-Geräten in der Nähe suchen. Die folgenden Geräte wurden gefunden:</translation>
 <translation id="5233638681132016545">Neuer Tab</translation>
 <translation id="5250483651202458397">Screenshot. Zum Schließen tippen.</translation>
+<translation id="5262378156578470238">Sie erhalten eine Benachrichtigung, wenn dieser Download am <ph name="DATE" /> gestartet wird.</translation>
 <translation id="526421993248218238">Fehler beim Laden der Seite</translation>
 <translation id="5271967389191913893">Das Gerät kann den Inhalt, der heruntergeladen werden soll, nicht öffnen.</translation>
 <translation id="5292796745632149097">Senden an</translation>
@@ -858,6 +867,7 @@
 <translation id="661266467055912436">Verbessert die Sicherheit für Sie und alle im Internet.</translation>
 <translation id="6618554661997243500">Auf die Schaltfläche "Startseite" tippen, um Ihre Top-Websites und Meldungen aufzurufen</translation>
 <translation id="6627583120233659107">Ordner bearbeiten</translation>
+<translation id="6635718764393004944">Sie haben <ph name="DSE" /> als Suchmaschine festgelegt. Informationen zum Löschen Ihres Suchverlaufs finden Sie ggf. in der Anleitung der Suchmaschine.</translation>
 <translation id="663674369910034433">Weitere Einstellungen in Verbindung mit Datenschutz, Sicherheit und der Erhebung von Daten finden Sie unter <ph name="BEGIN_LINK1" />Synchronisierung<ph name="END_LINK1" /> und <ph name="BEGIN_LINK2" />Google-Dienste<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Löschen</translation>
 <translation id="6643649862576733715">Nach Menge der gespeicherten Daten sortieren</translation>
@@ -910,6 +920,7 @@
 <translation id="6981982820502123353">Bedienungshilfen</translation>
 <translation id="6989267951144302301">Fehler beim Download</translation>
 <translation id="6995899638241819463">Warnen, wenn Passwörter durch eine Datenpanne preisgegeben werden</translation>
+<translation id="7001056293070445572">Diese Datei ist groß (<ph name="FILE_SIZE" />)</translation>
 <translation id="7015203776128479407">Die erstmalige Einrichtung der Synchronisierung wurde nicht abgeschlossen. Synchronisierung ist deaktiviert.</translation>
 <translation id="7022756207310403729">Im Browser öffnen</translation>
 <translation id="702463548815491781">Empfohlen, wenn TalkBack oder der Schalterzugriff aktiviert ist</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
index 719d442..7986331 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Σάρωση</translation>
 <translation id="2518590038762162553">Στη λειτουργία Lite, το Chrome φορτώνει τις σελίδες πιο γρήγορα και χρησιμοποιεί έως και 60% λιγότερα δεδομένα. Για να βελτιστοποιήσει τις σελίδες που επισκέπτεστε, το Chrome στέλνει την επισκεψιμότητα ιστού σας στο Google. <ph name="BEGIN_LINK" />Μάθετε περισσότερα<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Αποστέλλει στην Google URL των σελίδων που επισκέπτεστε</translation>
+<translation id="2527779675047087889">Απόκρυψη περιεχομένων πρόχειρου</translation>
 <translation id="2532336938189706096">Προβολή ιστού</translation>
 <translation id="2534155362429831547">Διαγράφηκαν <ph name="NUMBER_OF_ITEMS" /> στοιχεία</translation>
 <translation id="2536728043171574184">Προβολή ενός αντιγράφου αυτής της σελίδας εκτός σύνδεσης</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Άρθρα για τα ενδιαφέροντά σας στο Chrome</translation>
 <translation id="3070005020161560471">Να γίνεται μετάφραση αυτόματα</translation>
 <translation id="3089395242580810162">Άνοιγμα σε καρτ. ανών. περιήγ.</translation>
+<translation id="3091010850649238832">Εμφάνιση περιεχομένων πρόχειρου</translation>
 <translation id="3098745985164956033">Ορισμένες εικόνες αποστέλλονται στην Google για τη βελτίωση των περιγραφών για εσάς.</translation>
 <translation id="3114507951000454849">Διαβάστε τις σημερινές ειδήσεις <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Ανακοινώσεις</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Βελτιώνει την ασφάλεια για εσάς και όλους στον ιστό.</translation>
 <translation id="6618554661997243500">Για να δείτε κορυφαίους ιστοτόπους και ειδήσεις για εσάς, πατήστε το κουμπί αρχικής οθόνης.</translation>
 <translation id="6627583120233659107">Επεξεργασία φακέλου</translation>
+<translation id="6635718764393004944">Χρησιμοποιείτε τη μηχανή αναζήτησης <ph name="DSE" />. Εάν θέλετε, ανατρέξτε στις οδηγίες της για να διαγράψετε το ιστορικό αναζήτησής σας.</translation>
 <translation id="663674369910034433">Για περισσότερες ρυθμίσεις που σχετίζονται με το απόρρητο, την ασφάλεια και τη συλλογή δεδομένων, ανατρέξτε στην ενότητα <ph name="BEGIN_LINK1" />Συγχρονισμός<ph name="END_LINK1" /> και <ph name="BEGIN_LINK2" />υπηρεσίες Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Διαγραφή</translation>
 <translation id="6643649862576733715">Ταξινόμηση κατά όγκο δεδομένων που εξοικονομήθηκαν</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
index 57a7335..eafd6132 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
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Scan</translation>
 <translation id="2518590038762162553">In Lite mode, Chrome loads pages faster and uses up to 60 per cent less data. To optimise the pages that you visit, Chrome sends your web traffic to Google. <ph name="BEGIN_LINK" />Find out more<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Sends URLs of pages that you visit to Google</translation>
+<translation id="2527779675047087889">Hide clipboard contents</translation>
 <translation id="2532336938189706096">Web View</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> items deleted</translation>
 <translation id="2536728043171574184">Viewing an offline copy of this page</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Articles on your interests on Chrome</translation>
 <translation id="3070005020161560471">Automatically translate</translation>
 <translation id="3089395242580810162">Open in incognito tab</translation>
+<translation id="3091010850649238832">Show clipboard contents</translation>
 <translation id="3098745985164956033">Some images are sent to Google to improve descriptions for you</translation>
 <translation id="3114507951000454849">Read today's news <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Announcements</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Improves security for you and everyone on the web.</translation>
 <translation id="6618554661997243500">To see top sites and stories for you, tap the Home button</translation>
 <translation id="6627583120233659107">Edit folder</translation>
+<translation id="6635718764393004944">Your search engine is <ph name="DSE" />. If applicable, see their instructions to delete your search history.</translation>
 <translation id="663674369910034433">For more settings that relate to privacy, security and data collection, see <ph name="BEGIN_LINK1" />Sync<ph name="END_LINK1" /> and <ph name="BEGIN_LINK2" />Google services<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Clear</translation>
 <translation id="6643649862576733715">Sort by amount of data saved</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
index 675b693..0c47fd8 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Buscar</translation>
 <translation id="2518590038762162553">En el modo lite, Chrome carga las páginas más rápido y usa hasta un 60% menos de datos. Para optimizar las páginas que visitas, Chrome envía tu tráfico en la Web a Google. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Envía a Google las URL de las páginas que visitas</translation>
+<translation id="2527779675047087889">Oculta el contenido del portapapeles</translation>
 <translation id="2532336938189706096">Vista web</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> elementos borrados</translation>
 <translation id="2536728043171574184">Visualizando una copia sin conexión de la página</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Artículos de Chrome relacionados con tus intereses</translation>
 <translation id="3070005020161560471">Traducir automáticamente</translation>
 <translation id="3089395242580810162">Abrir en pestaña de incógnito</translation>
+<translation id="3091010850649238832">Muestra el contenido del portapapeles</translation>
 <translation id="3098745985164956033">Se envían algunas imágenes a Google para proporcionarte mejores descripciones.</translation>
 <translation id="3114507951000454849">Lee las noticias de hoy <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Anuncios</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Mejora la seguridad para ti y todos los usuarios de la Web.</translation>
 <translation id="6618554661997243500">Para ver los sitios que más visitas y las historias que más lees, presiona el botón de la página principal</translation>
 <translation id="6627583120233659107">Editar la carpeta</translation>
+<translation id="6635718764393004944">Tu motor de búsqueda es <ph name="DSE" />. Si corresponde, consulta sus instrucciones para borrar tu historial de búsqueda.</translation>
 <translation id="663674369910034433">Para ver más opciones de configuración relacionadas con la privacidad, seguridad y recopilación de datos, visita <ph name="BEGIN_LINK1" />Sincronización<ph name="END_LINK1" /> y <ph name="BEGIN_LINK2" />Servicios de Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Borrar</translation>
 <translation id="6643649862576733715">Ordenar por cantidad de datos ahorrados</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
index 5c0a7fe..3badaddd 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Escanear</translation>
 <translation id="2518590038762162553">En el modo básico, Chrome carga las páginas más rápido y reduce el uso de datos hasta un 60 %. Chrome también envía tu tráfico web a Google para optimizar las páginas que visitas. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Envía las URL de las páginas que visitas a Google</translation>
+<translation id="2527779675047087889">Oculta el contenido del portapapeles</translation>
 <translation id="2532336938189706096">Vista web</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> elementos eliminados</translation>
 <translation id="2536728043171574184">Viendo una copia sin conexión de esta página</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Artículos sobre tus intereses en Chrome</translation>
 <translation id="3070005020161560471">Traducir automáticamente</translation>
 <translation id="3089395242580810162">Abrir en pestaña de incógnito</translation>
+<translation id="3091010850649238832">Muestra el contenido del portapapeles</translation>
 <translation id="3098745985164956033">Algunas imágenes se envían a Google para mejorar las descripciones que recibes</translation>
 <translation id="3114507951000454849">Lee las noticias de hoy <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Anuncios</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Mejora tu seguridad y la de todo el mundo en la Web.</translation>
 <translation id="6618554661997243500">Para ver tus sitios favoritos e historias, toca el botón de inicio</translation>
 <translation id="6627583120233659107">Editar carpeta</translation>
+<translation id="6635718764393004944">Usas el buscador <ph name="DSE" />. Si procede, consulta sus instrucciones sobre cómo eliminar tu historial de búsqueda.</translation>
 <translation id="663674369910034433">Para ver más ajustes relacionados con la privacidad, la seguridad y la recogida de datos, consulta <ph name="BEGIN_LINK1" />Sincronización<ph name="END_LINK1" /> y <ph name="BEGIN_LINK2" />Servicios de Google<ph name="END_LINK2" />.</translation>
 <translation id="6643016212128521049">Borrar</translation>
 <translation id="6643649862576733715">Ordenar por cantidad de datos ahorrados</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
index c632fbb..ff38859 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Kontrolli</translation>
 <translation id="2518590038762162553">Lihtsustatud režiimis laadib Chrome lehti kiiremini ja kasutab kuni 60% vähem andmemahtu. Külastatud lehtede optimeerimiseks saadab Chrome teie veebiliikluse Google’ile. <ph name="BEGIN_LINK" />Lisateave<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Saadab Google'ile teie külastatud lehtede URL-id</translation>
+<translation id="2527779675047087889">Peida lõikelaua sisu</translation>
 <translation id="2532336938189706096">Veebi kuva</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> üksust kustutati</translation>
 <translation id="2536728043171574184">Kuvatakse on lehe võrguühenduseta koopia</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Teie huvidega seotud artiklid Chrome'is</translation>
 <translation id="3070005020161560471">Tõlgi automaatselt</translation>
 <translation id="3089395242580810162">Ava inkognito vahelehel</translation>
+<translation id="3091010850649238832">Kuva lõikelaua sisu</translation>
 <translation id="3098745985164956033">Mõned pildid saadetakse kirjelduste täiendamiseks Google'ile</translation>
 <translation id="3114507951000454849">Lugege tänaseid uudiseid <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Teadaanded</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Täiendab turvalisust teie ja kõigi teiste veebikasutajate jaoks.</translation>
 <translation id="6618554661997243500">Sageli külastatud saitide ja populaarsete lugude vaatamiseks puudutage avakuva nuppu</translation>
 <translation id="6627583120233659107">Muuda kausta</translation>
+<translation id="6635718764393004944">Teie otsingumootor on <ph name="DSE" />. Võimaluse korral vaadake selle juhiseid otsinguajaloo kustutamiseks.</translation>
 <translation id="663674369910034433">Privaatsuse, turvalisuse ning andmete kogumisega seotud lisaseadete nägemiseks vaadake jaotisi <ph name="BEGIN_LINK1" />Sünkroonimine<ph name="END_LINK1" /> ja <ph name="BEGIN_LINK2" />Google'i teenused<ph name="END_LINK2" />.</translation>
 <translation id="6643016212128521049">Tühjenda</translation>
 <translation id="6643649862576733715">Sordi säästetud andmemahu alusel</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
index cc40e008..a34425e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Bilatu</translation>
 <translation id="2518590038762162553">Oinarrizko moduari esker, Chrome-k bizkorrago kargatzen ditu orriak, datuen % 60raino aurreztuta. Bisitatzen dituzun orriak optimizatzeko, Chrome-k Google-ra bidaltzen du sareko trafikoa. <ph name="BEGIN_LINK" />Lortu informazio gehiago<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Bisitatzen dituzun orrien URLak bidaltzen dizkio Google-ri</translation>
+<translation id="2527779675047087889">Ezkutatu arbeleko edukia</translation>
 <translation id="2532336938189706096">Web-ikuspegia</translation>
 <translation id="2534155362429831547">Ezabatu dira <ph name="NUMBER_OF_ITEMS" /> elementu</translation>
 <translation id="2536728043171574184">Orriaren konexiorik gabeko kopia ikusten ari zara</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Interesatzen zaizkizun gaiei buruzko artikuluak Chrome-n</translation>
 <translation id="3070005020161560471">Itzuli automatikoki edukia hizkuntza hauetako batean badago:</translation>
 <translation id="3089395242580810162">Ireki ezkutuko fitxa batean</translation>
+<translation id="3091010850649238832">Erakutsi arbeleko edukia</translation>
 <translation id="3098745985164956033">Jasotzen dituzun deskribapenak hobetzeko bidaltzen zaizkio irudi batzuk Google-ri</translation>
 <translation id="3114507951000454849">Irakurri gaurko albisteak <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Iragarpenak</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Segurtasuna hobetzen du, bai zuretzat, bai sareko gainontzeko erabiltzaileentzat.</translation>
 <translation id="6618554661997243500">Zuretzat hautatutako webgune eta istorio nagusiak ikusteko, sakatu Hasiera botoia</translation>
 <translation id="6627583120233659107">Editatu karpeta</translation>
+<translation id="6635718764393004944">Bilatzailea <ph name="DSE" /> da. Ikusi bilaketa-historia ezabatzeko argibideak, halakorik badago.</translation>
 <translation id="663674369910034433">Pribatutasunarekin, segurtasunarekin eta datu-bilketarekin lotutako ezarpen gehiago ikusteko, joan <ph name="BEGIN_LINK1" />Sinkronizazioa<ph name="END_LINK1" /> eta <ph name="BEGIN_LINK2" />Google-ren zerbitzuak<ph name="END_LINK2" /> ataletara.</translation>
 <translation id="6643016212128521049">Garbitu</translation>
 <translation id="6643649862576733715">Ordenatu aurreztutako datu kopuruaren arabera</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
index cc366f7..7180e75 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
@@ -125,7 +125,7 @@
 <translation id="1877026089748256423">‏نسخه Chrome قدیمی است</translation>
 <translation id="1883903952484604915">فایل‌های من</translation>
 <translation id="189358972401248634">زبان‌های دیگر</translation>
-<translation id="1918175104945982129">رابط کاربری رضایت برای جستجوی گفتاری «دستیار» تا نیمه باز شد</translation>
+<translation id="1918175104945982129">میانای کاربر رضایت برای جستجوی گفتاری «دستیار» تا نیمه باز شد</translation>
 <translation id="1919130412786645364">‏مجاز کردن ورود به سیستم Chrome</translation>
 <translation id="1922362554271624559">زبان‌های پیشنهادشده</translation>
 <translation id="1925021887439448749">نشانی وب سفارشی وارد کنید</translation>
@@ -157,7 +157,7 @@
 <translation id="2056878612599315956">سایت موقتاً متوقف شد</translation>
 <translation id="2067805253194386918">نوشتار</translation>
 <translation id="2068748236079642969">تماشای ویدیوی بعدی</translation>
-<translation id="2074143993849053708">رابط کاربری رضایت برای جستجوی گفتاری «دستیار» بسته شد</translation>
+<translation id="2074143993849053708">میانای کاربر رضایت برای جستجوی گفتاری «دستیار» بسته شد</translation>
 <translation id="2082238445998314030"><ph name="RESULT_NUMBER" /> نتیجه از <ph name="TOTAL_RESULTS" /></translation>
 <translation id="2096012225669085171">همگام‌سازی و شخصی‌سازی در همه دستگاه‌ها</translation>
 <translation id="2100273922101894616">ورود به سیستم خودکار</translation>
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">اسکن</translation>
 <translation id="2518590038762162553">‏در «حالت ساده»، Chrome صفحه‌ها را سریع‌تر بار می‌کند و تا ۶۰ درصد مصرف داده را کاهش می‌دهد. برای بهینه‌سازی صفحاتی که بازدید می‌کنید، Chrome ترافیک وب شما را به Google ارسال می‌کند. <ph name="BEGIN_LINK" />بیشتر بدانید<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">‏نشانی وب صفحه‌هایی را که بازدید می‌کنید برای Google ارسال می‌کند</translation>
+<translation id="2527779675047087889">پنهان کردن محتوای بریده‌دان</translation>
 <translation id="2532336938189706096">نمای وب</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> مورد حذف شد</translation>
 <translation id="2536728043171574184">مشاهده یک کپی آفلاین از این صفحه</translation>
@@ -305,7 +306,7 @@
 <translation id="3006881078666935414">هیچ داده مصرفی وجود ندارد</translation>
 <translation id="3016635187733453316">مطمئن شوید این دستگاه به اینترنت متصل باشد</translation>
 <translation id="3029704984691124060">عبارت‌های عبور مطابقت ندارند</translation>
-<translation id="3031225630520268969">رابط کاربری رضایت برای جستجوی گفتاری «دستیار»</translation>
+<translation id="3031225630520268969">میانای کاربر رضایت برای جستجوی گفتاری «دستیار»</translation>
 <translation id="3036750288708366620"><ph name="BEGIN_LINK" />دریافت راهنمایی<ph name="END_LINK" /></translation>
 <translation id="3046945242843292318">دفعه بعدی سریع‌تر به این سایت دسترسی پیدا کنید</translation>
 <translation id="305593374596241526">‏مکان خاموش است، آن را در <ph name="BEGIN_LINK" />تنظیمات Android<ph name="END_LINK" /> روشن کنید.</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">‏مقاله‌های مربوط با علایقتان در Chrome</translation>
 <translation id="3070005020161560471">ترجمه خودکار</translation>
 <translation id="3089395242580810162">باز کردن در برگه ناشناس</translation>
+<translation id="3091010850649238832">نمایش محتوای بریده‌دان</translation>
 <translation id="3098745985164956033">‏برخی از تصاویر به Google ارسال می‌شوند تا شرح آن‌ها برایتان بهبود یابد</translation>
 <translation id="3114507951000454849">اخبار <ph name="NEWS_ICON" /> امروز را بخوانید</translation>
 <translation id="3123734510202723619">اطلاعیه‌ها</translation>
@@ -383,7 +385,7 @@
 <translation id="3513704683820682405">واقعیت افزوده</translation>
 <translation id="3518985090088779359">پذیرش و ادامه</translation>
 <translation id="3522247891732774234">به‌روزرسانی موجود است. گزینه‌های بیشتر</translation>
-<translation id="3524138585025253783">رابط کاربری برنامه‌نویس</translation>
+<translation id="3524138585025253783">میانای کاربر برنامه‌نویس</translation>
 <translation id="3527085408025491307">پوشه</translation>
 <translation id="3542235761944717775"><ph name="KILOBYTES" /> کیلوبایت دردسترس است</translation>
 <translation id="3549657413697417275">جستجو در سابقه</translation>
@@ -479,7 +481,7 @@
 <translation id="4248098802131000011">گذرواژه خود را از نقض داده و سایر مسائل امنیتی ایمن نگه دارید</translation>
 <translation id="4250229828105606438">نماگرفت</translation>
 <translation id="4256782883801055595">مجوزهای متن‌باز</translation>
-<translation id="4263656433980196874">رابط کاربری رضایت برای جستجوی گفتاری «دستیار» به‌صورت کامل باز شد</translation>
+<translation id="4263656433980196874">میانای کاربر رضایت برای جستجوی گفتاری «دستیار» به‌صورت کامل باز شد</translation>
 <translation id="4269820728363426813">کپی نشانی پیوند</translation>
 <translation id="4290281343757112331">بعداً بارگیری شود؟</translation>
 <translation id="4298388696830689168">سایت‌های مرتبط</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">امنیت را برای شما و همه کاربران دیگر وب بهبود می‌بخشد.</translation>
 <translation id="6618554661997243500">برای دیدن سایت‌ها و داستان‌های برتر ویژه شما، روی دکمه «صفحه اصلی» ضربه بزنید</translation>
 <translation id="6627583120233659107">ویرایش پوشه</translation>
+<translation id="6635718764393004944">موتور جستجوی شما <ph name="DSE" /> است. درصورت وجود، دستورالعمل‌های حذف سابقه جستجو را ببینید.</translation>
 <translation id="663674369910034433">‏برای تنظیمات بیشتر مرتبط با حریم‌خصوصی، امنیت، و جمع‌آوری داده، <ph name="BEGIN_LINK1" />همگام‌سازی<ph name="END_LINK1" /> و <ph name="BEGIN_LINK2" />سرویس‌های Google<ph name="END_LINK2" /> را ببینید.</translation>
 <translation id="6643016212128521049">پاک کردن</translation>
 <translation id="6643649862576733715">به‌ترتیب مقدار داده صرفه‌جویی‌شده</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
index 6d0486a..c0ed633 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Etsi</translation>
 <translation id="2518590038762162553">Yksinkertaistetussa tilassa Chrome lataa sivuja nopeammin ja käyttää jopa 60 % vähemmän dataa. Chrome lähettää verkkoliikenteesi tietoja Googlelle avaamiesi sivujen optimoimiseksi. <ph name="BEGIN_LINK" />Lue lisää<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Lähettää avaamiesi sivujen URL-osoitteet Googlelle</translation>
+<translation id="2527779675047087889">Piilota leikepöydän sisältö</translation>
 <translation id="2532336938189706096">Verkkonäkymä</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> kohdetta poistettu</translation>
 <translation id="2536728043171574184">Näkyvissä on sivun offline-versio.</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Artikkeleita kiinnostuksen kohteistasi Chromessa</translation>
 <translation id="3070005020161560471">Käännä nämä automaattisesti</translation>
 <translation id="3089395242580810162">Avaa incognito-välilehdellä</translation>
+<translation id="3091010850649238832">Näytä leikepöydän sisältö</translation>
 <translation id="3098745985164956033">Jotkin kuvat lähetetään Googlelle, jotta näkemiäsi kuvauksia voidaan parantaa</translation>
 <translation id="3114507951000454849">Lue päivän uutiset <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Ilmoitukset</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Parantaa sinun ja kaikkien verkon käyttäjien suojausta</translation>
 <translation id="6618554661997243500">Katso suositut sivustosi ja sinulle valitut jutut napauttamalla Etusivu-painiketta</translation>
 <translation id="6627583120233659107">Muokkaa kansiota</translation>
+<translation id="6635718764393004944">Hakukoneesi on <ph name="DSE" />. Katso sen mahdolliset ohjeet hakuhistorian tyhjentämiseen.</translation>
 <translation id="663674369910034433">Näet lisää yksityisyyteen, tietoturvaan ja datankeruuseen liittyviä asetuksia kohdista <ph name="BEGIN_LINK1" />Synkronointi<ph name="END_LINK1" /> ja <ph name="BEGIN_LINK2" />Googlen palvelut<ph name="END_LINK2" />.</translation>
 <translation id="6643016212128521049">Tyhjennä</translation>
 <translation id="6643649862576733715">Lajittele säästetyn datan määrän mukaan</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
index f70e8c0..09def8a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">I-scan</translation>
 <translation id="2518590038762162553">Sa Lite mode, mas mabilis na naglo-load ng mga page ang Chrome at gumagamit ito ng hanggang 60 porsyentong mas kaunting data. Para i-optimize ang mga page na binibisita mo, ipinapadala ng Chrome ang iyong trapiko sa web sa Google. <ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Ipinapadala sa Google ang mga URL ng mga page na binibisita mo</translation>
+<translation id="2527779675047087889">Itago ang mga content ng clipboard</translation>
 <translation id="2532336938189706096">View ng Web</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> (na) item ang na-delete</translation>
 <translation id="2536728043171574184">Tinitingnan ang isang offline na kopya ng page na ito</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Mga artikulo tungkol sa iyong mga interes sa Chrome</translation>
 <translation id="3070005020161560471">Awtomatikong isalin</translation>
 <translation id="3089395242580810162">Buksan sa tab na incognito</translation>
+<translation id="3091010850649238832">Ipakita ang mga content ng clipboard</translation>
 <translation id="3098745985164956033">Ipinapadala sa Google ang ilang larawan para mapahusay ang mga paglalarawan para sa iyo</translation>
 <translation id="3114507951000454849">Basahin ang balita ngayong araw <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Mga Anunsyo</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Pinapahusay ang seguridad para sa iyo at sa lahat ng tao sa web.</translation>
 <translation id="6618554661997243500">Para makita ang mga nangungunang site at kuwento para sa iyo, i-tap ang button ng Home</translation>
 <translation id="6627583120233659107">I-edit ang folder</translation>
+<translation id="6635718764393004944"><ph name="DSE" /> ang iyong search engine. Kung naaangkop, tingnan ang kanilang mga tagubilin para i-delete ang iyong history ng paghahanap.</translation>
 <translation id="663674369910034433">Para sa higit pang setting na nauugnay sa privacy, seguridad, at pagkolekta ng data, tingnan ang <ph name="BEGIN_LINK1" />Pag-sync<ph name="END_LINK1" /> at <ph name="BEGIN_LINK2" />Mga serbisyo ng Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">I-clear</translation>
 <translation id="6643649862576733715">Pagbukud-bukurin ayon sa dami ng data na natipid</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb
index bbe49ea6..75e457e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Rechercher</translation>
 <translation id="2518590038762162553">En mode simplifié, Chrome charge les pages plus vite et utilise jusqu'à 60 % moins de données. Pour optimiser les pages que vous visitez, Chrome achemine votre trafic Web vers Google. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Envoie les URL des pages que vous consultez à Google</translation>
+<translation id="2527779675047087889">Masquer le contenu du presse-papier</translation>
 <translation id="2532336938189706096">Affichage Web</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> éléments supprimés</translation>
 <translation id="2536728043171574184">Affichage d’une copie hors ligne de cette page en cours</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Articles portant sur vos centres d'intérêt dans Chrome</translation>
 <translation id="3070005020161560471">Traduire automatiquement les pages rédigées en</translation>
 <translation id="3089395242580810162">Ouvrir dans onglet nav. privée</translation>
+<translation id="3091010850649238832">Afficher le contenu du presse-papier</translation>
 <translation id="3098745985164956033">Certaines images sont envoyées à Google afin d'améliorer les descriptions pour vous</translation>
 <translation id="3114507951000454849">Actualités du jour <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Annonces</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Il renforce votre sécurité et celle de tous les utilisateurs sur le Web.</translation>
 <translation id="6618554661997243500">Pour consulter les sites les plus fréquentés et des articles sélectionnés pour vous, touchez le bouton Accueil</translation>
 <translation id="6627583120233659107">Modifier le dossier</translation>
+<translation id="6635718764393004944">Vous utilisez <ph name="DSE" /> comme moteur de recherche. Le cas échéant, consultez ses instructions pour apprendre comment supprimer votre historique de recherche.</translation>
 <translation id="663674369910034433">Pour voir plus de paramètres relatifs à la confidentialité, à la sécurité et à la collecte de données, reportez-vous aux rubriques <ph name="BEGIN_LINK1" />Synchronisation<ph name="END_LINK1" /> et <ph name="BEGIN_LINK2" />Services Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Effacer</translation>
 <translation id="6643649862576733715">Trier par quantité de données enregistrées</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
index 19e8b20..b43c113 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Rechercher</translation>
 <translation id="2518590038762162553">En mode simplifié, Chrome charge les pages plus rapidement et consomme jusqu'à 60 % de données en moins. Pour optimiser les pages que vous consultez, Chrome envoie votre trafic Web à Google. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Envoie les URL des pages que vous consultez à Google</translation>
+<translation id="2527779675047087889">Masquer le contenu du presse-papiers</translation>
 <translation id="2532336938189706096">Vue Web</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> éléments supprimés</translation>
 <translation id="2536728043171574184">Affichage d'une copie hors connexion de la page</translation>
@@ -247,6 +248,7 @@
 <translation id="2612676031748830579">Numéro de carte</translation>
 <translation id="2625189173221582860">Mot de passe copié</translation>
 <translation id="2631006050119455616">Économisées</translation>
+<translation id="2645657967708199252">Votre connexion <ph name="CONNECTION_TYPE" /> risque de ralentir votre téléchargement</translation>
 <translation id="2647434099613338025">Ajouter une langue</translation>
 <translation id="2650751991977523696">Télécharger de nouveau le fichier ?</translation>
 <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# fichier audio}one{# fichier audio}other{# fichiers audio}}</translation>
@@ -259,6 +261,7 @@
 <translation id="2718846868787000099">Permet d'afficher le contenu dans vos langues favorites. Les sites que vous visitez peuvent voir vos préférences</translation>
 <translation id="2723001399770238859">audio</translation>
 <translation id="2728754400939377704">Trier par site</translation>
+<translation id="2739256783402597439">2G</translation>
 <translation id="2744248271121720757">Appuyez sur un mot pour lancer une recherche instantanée ou afficher les actions associées</translation>
 <translation id="2760989362628427051">Activer le thème sombre lorsque le thème sombre ou l'économiseur de batterie de votre appareil est activé</translation>
 <translation id="2762000892062317888">à l'instant</translation>
@@ -312,6 +315,7 @@
 <translation id="3062802207422175757">Articles sur vos centres d'intérêt dans Chrome</translation>
 <translation id="3070005020161560471">Traduire automatiquement</translation>
 <translation id="3089395242580810162">Ouvrir onglet navig. privée</translation>
+<translation id="3091010850649238832">Afficher le contenu du presse-papiers</translation>
 <translation id="3098745985164956033">Les images sont envoyées à Google afin de vous proposer de meilleures descriptions</translation>
 <translation id="3114507951000454849">Lisez les actualités du jour <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Annonces</translation>
@@ -435,6 +439,7 @@
 <translation id="3943557322767080599">Une invite de connexion à Chrome s'affiche lorsque vous vous connectez à votre compte Google</translation>
 <translation id="395206256282351086">Suggestions de recherches et de sites désactivées</translation>
 <translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome chargera votre page dès qu'elle sera prête}one{Chrome chargera votre page dès qu'elle sera prête}other{Chrome chargera vos pages dès qu'elles seront prêtes}}</translation>
+<translation id="3962957115499249330">Vous recevrez une notification lorsque ce téléchargement débutera en Wi-Fi.</translation>
 <translation id="3963007978381181125">Le chiffrement par phrase secrète ne s'applique pas aux modes de paiement et adresses Google Pay. Seule une personne connaissant votre phrase secrète peut lire vos données chiffrées. La phrase secrète ne nous est pas envoyée et nous ne la stockons pas. Si vous l'oubliez ou si vous souhaitez modifier ce paramètre, vous devrez réinitialiser la synchronisation. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation>
 <translation id="3969142555815019568">Chrome ne parvient pas à vérifier vos mots de passe</translation>
 <translation id="3974987681202239636">L'application <ph name="APP_NAME" /> va s'ouvrir dans Chrome. En continuant, vous acceptez les <ph name="BEGIN_LINK1" />Conditions d'utilisation de Google<ph name="END_LINK1" /> et les <ph name="BEGIN_LINK2" />Conditions d'utilisation supplémentaires de Google Chrome et Chrome OS<ph name="END_LINK2" />. L'<ph name="BEGIN_LINK3" />Avis de confidentialité relatif aux comptes Google gérés avec Family Link<ph name="END_LINK3" /> s'applique également.</translation>
@@ -478,6 +483,7 @@
 <translation id="4256782883801055595">Licences Open Source</translation>
 <translation id="4263656433980196874">Interface d'autorisation pour la recherche vocale de l'Assistant ouverte à hauteur maximale</translation>
 <translation id="4269820728363426813">Copier l'adresse du lien</translation>
+<translation id="4290281343757112331">Télécharger plus tard ?</translation>
 <translation id="4298388696830689168">Sites associés</translation>
 <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="4307992518367153382">Paramètres de base</translation>
@@ -540,6 +546,7 @@
 <translation id="4698034686595694889">Afficher hors connexion dans <ph name="APP_NAME" /></translation>
 <translation id="4699172675775169585">Images et fichiers en cache</translation>
 <translation id="4714588616299687897">Économisez jusqu'à 60 % de vos données</translation>
+<translation id="4716066120200945007">SUIVI</translation>
 <translation id="4719927025381752090">Proposer de traduire</translation>
 <translation id="4720023427747327413">Ouvrir dans <ph name="PRODUCT_NAME" /></translation>
 <translation id="4720982865791209136">Aidez-nous à améliorer Chrome. <ph name="BEGIN_LINK" />Répondez à notre enquête<ph name="END_LINK" /></translation>
@@ -620,6 +627,7 @@
 <translation id="5191251636205085390">Découvrez et contrôlez les nouvelles technologies qui visent à remplacer les cookies tiers</translation>
 <translation id="5193988420012215838">Copié dans le presse-papiers</translation>
 <translation id="5199929503336119739">Profil professionnel</translation>
+<translation id="5201464744567315552">Vous recevrez une notification lorsque ce téléchargement débutera à <ph name="TIME" />.</translation>
 <translation id="5204967432542742771">Mot de passe</translation>
 <translation id="5210286577605176222">Accéder à l'onglet précédent</translation>
 <translation id="5210365745912300556">Fermer l'onglet</translation>
@@ -630,6 +638,7 @@
 <translation id="5230560987958996918">Le site <ph name="SITE" /> souhaite rechercher les appareils Bluetooth à proximité. Les appareils suivants ont été détectés :</translation>
 <translation id="5233638681132016545">Nouvel onglet</translation>
 <translation id="5250483651202458397">Capture d'écran. Appuyez pour fermer.</translation>
+<translation id="5262378156578470238">Vous recevrez une notification lorsque ce téléchargement débutera le <ph name="DATE" />.</translation>
 <translation id="526421993248218238">Impossible de charger cette page</translation>
 <translation id="5271967389191913893">Impossible d'ouvrir le contenu à télécharger sur l'appareil.</translation>
 <translation id="5292796745632149097">Envoyer sur</translation>
@@ -858,6 +867,7 @@
 <translation id="661266467055912436">Il renforce votre sécurité et celle de tous les utilisateurs sur le Web.</translation>
 <translation id="6618554661997243500">Appuyez sur le bouton d'accueil pour retrouver les meilleurs sites et articles pour vous.</translation>
 <translation id="6627583120233659107">Modifier le dossier</translation>
+<translation id="6635718764393004944">Votre moteur de recherche est <ph name="DSE" />. Le cas échéant, consultez ses instructions pour supprimer votre historique des recherches.</translation>
 <translation id="663674369910034433">Pour accéder à d'autres paramètres liés à la confidentialité, à la sécurité et à la collecte de données, consultez les pages <ph name="BEGIN_LINK1" />Synchronisation<ph name="END_LINK1" /> et <ph name="BEGIN_LINK2" />Services Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Effacer</translation>
 <translation id="6643649862576733715">Trier en fonction de la quantité de données économisées</translation>
@@ -910,6 +920,7 @@
 <translation id="6981982820502123353">Accessibilité</translation>
 <translation id="6989267951144302301">Échec du téléchargement</translation>
 <translation id="6995899638241819463">Recevoir une alerte si des mots de passe sont compromis lors d'une violation des données</translation>
+<translation id="7001056293070445572">Fichier volumineux (<ph name="FILE_SIZE" />)</translation>
 <translation id="7015203776128479407">La configuration de la synchronisation initiale n'était pas terminée. La synchronisation est désactivée.</translation>
 <translation id="7022756207310403729">Ouvrir dans le navigateur</translation>
 <translation id="702463548815491781">Recommandé quand TalkBack ou Switch Access sont activés</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb
index a38ff0ac..e482ae2 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Buscar</translation>
 <translation id="2518590038762162553">No modo básico, Chrome carga as páxinas máis rápido e usa un 60 % menos de datos. Para optimizar as páxinas que visitas, Chrome envíalle o teu tráfico web a Google. <ph name="BEGIN_LINK" />Máis información<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Envía a Google os URL das páxinas que visitas</translation>
+<translation id="2527779675047087889">Ocultar contido do portapapeis</translation>
 <translation id="2532336938189706096">Vista web</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> elementos eliminados</translation>
 <translation id="2536728043171574184">Visualización dunha copia sen conexión desta páxina</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Artigos sobre os teus intereses en Chrome</translation>
 <translation id="3070005020161560471">Traducir automaticamente</translation>
 <translation id="3089395242580810162">Abrir en pestana de incógnito</translation>
+<translation id="3091010850649238832">Mostrar contido do portapapeis</translation>
 <translation id="3098745985164956033">Algunhas imaxes envíanse a Google coa finalidade de mellorar as descricións para ti</translation>
 <translation id="3114507951000454849">Le as noticias do día <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Avisos</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Mellora a túa seguranza e a do resto dos usuarios da Web.</translation>
 <translation id="6618554661997243500">Tocar botón Inicio para ver os principais sitios e historias recomendados para ti</translation>
 <translation id="6627583120233659107">Editar cartafol</translation>
+<translation id="6635718764393004944">O teu motor de busca é <ph name="DSE" />. En caso aplicable, consulta as súas instrucións para eliminar o historial de busca.</translation>
 <translation id="663674369910034433">Para ver máis opcións de configuración relacionadas coa privacidade, a seguranza e a recompilación de datos, consulta <ph name="BEGIN_LINK1" />Sincronización<ph name="END_LINK1" /> e <ph name="BEGIN_LINK2" />Servizos de Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Borrar</translation>
 <translation id="6643649862576733715">Ordenar por cantidade de datos aforrados</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
index afd7bf6..4bb9371 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
@@ -247,6 +247,7 @@
 <translation id="2612676031748830579">કાર્ડ નંબર</translation>
 <translation id="2625189173221582860">પાસવર્ડ કૉપિ કર્યો</translation>
 <translation id="2631006050119455616">બચાવેલ</translation>
+<translation id="2645657967708199252">તમારું <ph name="CONNECTION_TYPE" /> કનેક્શન કદાચ ડાઉનલોડ કરવાની તમારી પ્રક્રિયાને ધીમી કરી શકે છે</translation>
 <translation id="2647434099613338025">ભાષા ઉમેરો</translation>
 <translation id="2650751991977523696">ફાઇલને ફરીથી ડાઉનલોડ કરીએ?</translation>
 <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# ઑડિયો ફાઇલ}one{# ઑડિયો ફાઇલો}other{# ઑડિયો ફાઇલો}}</translation>
@@ -259,6 +260,7 @@
 <translation id="2718846868787000099">તમારી પસંદગીની ભાષાઓમાં કન્ટેન્ટ બતાવવા માટે, તમે મુલાકાત લો તે સાઇટ તમારી પસંદગીઓ જોઈ શકશે</translation>
 <translation id="2723001399770238859">ઑડિઓ</translation>
 <translation id="2728754400939377704">સાઇટ અનુસાર સૉર્ટ કરો</translation>
+<translation id="2739256783402597439">2G</translation>
 <translation id="2744248271121720757">ઝટપટ શોધ કરવા માટે શબ્દ પર ટૅપ કરો અથવા સંબંધિત ક્રિયાઓ જુઓ</translation>
 <translation id="2760989362628427051">જ્યારે તમારા ડિવાઇસની ઘેરી થીમ અથવા બૅટરી સેવર ચાલુ હોય ત્યારે ઘેરી થીમ ચાલુ કરો</translation>
 <translation id="2762000892062317888">હમણાં જ</translation>
@@ -435,6 +437,7 @@
 <translation id="3943557322767080599">તમે તમારા Google એકાઉન્ટમાં સાઇન ઇન કરો ત્યારે Chromeમાં સાઇન ઇન માટેના સંકેતો બતાવો</translation>
 <translation id="395206256282351086">શોધ અને સાઇટ સૂચનો બંધ છે</translation>
 <translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{તૈયાર હશે ત્યારે Chrome તમારું પેજ લોડ કરશે}one{તૈયાર હશે ત્યારે Chrome તમારાં પેજ લોડ કરશે}other{તૈયાર હશે ત્યારે Chrome તમારાં પેજ લોડ કરશે}}</translation>
+<translation id="3962957115499249330">આ ડાઉનલોડ જ્યારે વાઇ-ફાઇ પર શરૂ થાય, ત્યારે તમે નોટિફિકેશન જોશો.</translation>
 <translation id="3963007978381181125">પાસફ્રેઝ એન્ક્રિપ્શનમાં Google Payની ચુકવણી પદ્ધતિઓ અને ઍડ્રેસ સામેલ હોતા નથી. માત્ર તમારા પાસફ્રેઝ ધરાવતી કોઈ વ્યક્તિ જ તમારા એન્ક્રિપ્ટ કરેલા ડેટાને વાંચી શકે છે. Googleને પાસફ્રેઝ મોકલવામાં આવતો નથી કે તેના દ્વારા સંગ્રહિત કરવામાં આવતો નથી. જો તમે તમારો પાસફ્રેઝ ભૂલી જાઓ અથવા આ સેટિંગ બદલવા માંગતા હો, તો તમારે સિંકને રીસેટ કરવું પડશે. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation>
 <translation id="3969142555815019568">Chrome તમારા પાસવર્ડ ચેક કરી શકતું નથી</translation>
 <translation id="3974987681202239636"><ph name="APP_NAME" /> Chromeમાં ખૂલશે. આગળ વધીને, તમે <ph name="BEGIN_LINK1" />Googleની સેવાની શરતો<ph name="END_LINK1" /> અને <ph name="BEGIN_LINK2" />Google Chrome તથા Chrome OSની વધારાની સેવાની શરતો<ph name="END_LINK2" /> સાથે સંમત થાઓ છો. <ph name="BEGIN_LINK3" />Family Link વડે મેનેજ કરવામાં આવતા Google એકાઉન્ટ માટેની પ્રાઇવસી નોટિસ<ph name="END_LINK3" /> પણ લાગુ.</translation>
@@ -478,6 +481,7 @@
 <translation id="4256782883801055595">ઓપન સોર્સ લાઇસન્સ</translation>
 <translation id="4263656433980196874">Assistant વૉઇસ શોધની સંમતિ માટેનું UI સંપૂર્ણ ઊંચાઈએ ખોલ્યું</translation>
 <translation id="4269820728363426813">લિંક સરનામું કૉપિ કરો</translation>
+<translation id="4290281343757112331">તેના બદલે પછીથી ડાઉનલોડ કરીએ?</translation>
 <translation id="4298388696830689168">લિંક કરેલી સાઇટ</translation>
 <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="4307992518367153382">પાયાગત</translation>
@@ -540,6 +544,7 @@
 <translation id="4698034686595694889"><ph name="APP_NAME" />માં ઑફલાઇન જુઓ</translation>
 <translation id="4699172675775169585">કેશ કરેલ છબીઓ અને ફાઇલો</translation>
 <translation id="4714588616299687897">તમારો 60% જેટલો ડેટા બચાવો</translation>
+<translation id="4716066120200945007">ફૉલો કરી રહ્યાં છીએ</translation>
 <translation id="4719927025381752090">અનુવાદ કરવાની ઑફર કરો</translation>
 <translation id="4720023427747327413"><ph name="PRODUCT_NAME" /> માં ખોલો</translation>
 <translation id="4720982865791209136">Chromeને બહેતર બનાવવામાં સહાય કરો. <ph name="BEGIN_LINK" />સર્વેક્ષણમાં ભાગ લો<ph name="END_LINK" /></translation>
@@ -620,6 +625,7 @@
 <translation id="5191251636205085390">ત્રીજા પક્ષની કુકીને બદલે વાપરવાના ઉદ્દેશ્યથી બનાવવામાં આવેલી નવી ટેક્નોલોજી વિશે જાણો અને તેમને નિયંત્રિત કરો</translation>
 <translation id="5193988420012215838">તમારા ક્લિપબોર્ડ પર કૉપિ કરવામાં આવી</translation>
 <translation id="5199929503336119739">ઑફિસની પ્રોફાઇલ</translation>
+<translation id="5201464744567315552">આ ડાઉનલોડ જ્યારે <ph name="TIME" /> વાગ્યે શરૂ થાય, ત્યારે તમને નોટિફિકેશન પ્રાપ્ત થશે.</translation>
 <translation id="5204967432542742771">પાસવર્ડ દાખલ કરો</translation>
 <translation id="5210286577605176222">પાછલી ટૅબ પર જાઓ</translation>
 <translation id="5210365745912300556">ટૅબ બંધ કરો</translation>
@@ -630,6 +636,7 @@
 <translation id="5230560987958996918"><ph name="SITE" /> નજીકના બ્લૂટૂથ ડિવાઇસ માટે સ્કૅન કરવા માગે છે. નીચે મુજબના ડિવાઇસ મળ્યા છે:</translation>
 <translation id="5233638681132016545">નવું ટૅબ</translation>
 <translation id="5250483651202458397">સ્ક્રીનશૉટ. બંધ કરવા માટે ટૅપ કરો.</translation>
+<translation id="5262378156578470238">આ ડાઉનલોડ જ્યારે <ph name="DATE" />ના રોજ શરૂ થાય, ત્યારે તમે નોટિફિકેશન જોશો.</translation>
 <translation id="526421993248218238">આ પેજ લોડ કરી શકાતું નથી</translation>
 <translation id="5271967389191913893">ડિવાઇસ, ડાઉનલોડ કરવાની કન્ટેન્ટ ખોલી શકતું નથી.</translation>
 <translation id="5292796745632149097">આના પર મોકલો</translation>
@@ -910,6 +917,7 @@
 <translation id="6981982820502123353">ઍક્સેસિબિલિટી</translation>
 <translation id="6989267951144302301">ડાઉનલોડ ન કરી શક્યા</translation>
 <translation id="6995899638241819463">જો ડેટા ઉલ્લંઘનમાં પાસવર્ડ જાહેર થાય તો તમને ચેતવણી આપવામાં આવે છે</translation>
+<translation id="7001056293070445572">જ્યારે ફાઇલ (<ph name="FILE_SIZE" />)થી મોટી હોય</translation>
 <translation id="7015203776128479407">આરંભિક સિંક સેટઅપ પૂરું થયું નથી. સિંક કરવાનું બંધ છે.</translation>
 <translation id="7022756207310403729">બ્રાઉઝરમાં ખોલો</translation>
 <translation id="702463548815491781">જ્યારે ટૉકબૅક અથવા સ્વિચ ઍક્સેસ ચાલુ હોય ત્યારે આપેલ સુઝાવ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
index 929975e..244228a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">स्कैन करें</translation>
 <translation id="2518590038762162553">Chrome, लाइट मोड में पेजों को ज़्यादा तेज़ी से लोड करता है और 60 प्रतिशत तक कम डेटा इस्तेमाल करता है. जिन पेजों पर आप जाते हैं उनको ऑप्टिमाइज़ करने के लिए Chrome आपके वेब ट्रैफ़िक की जानकारी Google को भेजता है. <ph name="BEGIN_LINK" />ज़्यादा जानें<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">आप जिन पेजों पर जाते हैं उनके यूआरएल Google को भेजती है</translation>
+<translation id="2527779675047087889">क्लिपबोर्ड का कॉन्टेंट छिपाएं</translation>
 <translation id="2532336938189706096">वेब व्यू</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> आइटम मिटाए गए</translation>
 <translation id="2536728043171574184">इस पृष्‍ठ की ऑफ़लाइन कॉपी देख रहे हैं</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Chrome पर आपकी पसंद के लेख</translation>
 <translation id="3070005020161560471">अपने-आप अनुवाद करें</translation>
 <translation id="3089395242580810162">गुप्त टैब में खोलें</translation>
+<translation id="3091010850649238832">क्लिपबोर्ड का कॉन्टेंट दिखाएं</translation>
 <translation id="3098745985164956033">कुछ इमेज Google को भेजी जाती हैं, ताकि आपको मिलने वाली जानकारी को बेहतर बनाया जा सके</translation>
 <translation id="3114507951000454849">आज की खबरें <ph name="NEWS_ICON" /> पढ़ें</translation>
 <translation id="3123734510202723619">एलान</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">यह सुविधा, वेब पर आपकी और सभी उपयोगकर्ताओं की सुरक्षा को बेहतर बनाती है.</translation>
 <translation id="6618554661997243500">अपने हिसाब से खास साइटें और खबरें देखने के लिए, होम बटन पर टैप करें</translation>
 <translation id="6627583120233659107">फ़ोल्‍डर में बदलाव करें</translation>
+<translation id="6635718764393004944">आपका सर्च इंजन <ph name="DSE" /> है. अगर लागू हो, तो अपना खोज इतिहास मिटाने के लिए, उनके निर्देश देखें.</translation>
 <translation id="663674369910034433">निजता, सुरक्षा और डेटा इकट्ठा करने से जुड़ी ज़्यादा सेटिंग के लिए, <ph name="BEGIN_LINK1" />सिंक करें<ph name="END_LINK1" /> और <ph name="BEGIN_LINK2" />Google की सेवाएं<ph name="END_LINK2" /> देखें</translation>
 <translation id="6643016212128521049">साफ़ करें</translation>
 <translation id="6643649862576733715">सेव किए गए डेटा की मात्रा के हिसाब से क्रम में लगाएं</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
index daf9e35..e28d4b6 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Traži</translation>
 <translation id="2518590038762162553">U Jednostavnom načinu Chrome učitava stranice brže i smanjuje podatkovni promet do 60 posto. Chrome šalje vaš web-promet Googleu radi optimizacije stranica koje posjećujete. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Šalje Googleu URL-ove stranica koje posjećujete</translation>
+<translation id="2527779675047087889">Sakrij sadržaj međuspremnika</translation>
 <translation id="2532336938189706096">Web-prikaz</translation>
 <translation id="2534155362429831547">Broj izbrisanih stavki: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Prikaz izvanmrežne kopije stranice</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Članci o vašim interesima na Chromeu</translation>
 <translation id="3070005020161560471">Automatski prevedi</translation>
 <translation id="3089395242580810162">Otvori na anonimnoj kartici</translation>
+<translation id="3091010850649238832">Prikaži sadržaj međuspremnika</translation>
 <translation id="3098745985164956033">Neke se slike šalju Googleu radi poboljšanja opisa za vas</translation>
 <translation id="3114507951000454849">Pročitajte današnje vijesti <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Najave</translation>
@@ -864,6 +866,7 @@
 <translation id="661266467055912436">Poboljšava sigurnost za vas i sve ostale na webu.</translation>
 <translation id="6618554661997243500">Za prikaz web-lokacija koje najčešće posjećujete i vijesti prilagođenih vama dodirnite gumb početnog zaslona</translation>
 <translation id="6627583120233659107">Uredi mapu</translation>
+<translation id="6635718764393004944">Vaša tražilica je <ph name="DSE" />. Ako je primjenjivo, pročitajte upute da biste izbrisali svoju povijest pretraživanja.</translation>
 <translation id="663674369910034433">Više postavki koje se odnose na privatnost, sigurnost i prikupljanje podataka dostupno je u odjeljcima <ph name="BEGIN_LINK1" />Sinkronizacija<ph name="END_LINK1" /> i <ph name="BEGIN_LINK2" />Googleove usluge<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Izbriši</translation>
 <translation id="6643649862576733715">Poredaj po količini spremljenih podataka</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
index 8cdf7a85..d160392e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Keresés</translation>
 <translation id="2518590038762162553">Lite módban a Chrome gyorsabban betölti az oldalakat, és akár 60 százalékkal kisebb adatforgalmat generál. A felkeresett oldalak optimalizálása érdekében a Chrome elküldi az internetes forgalmát a Google-nak. <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" />.</translation>
 <translation id="2523184218357549926">A felkeresett oldalak URL-címének elküldése a Google-nak</translation>
+<translation id="2527779675047087889">Vágólap tartalmának elrejtése</translation>
 <translation id="2532336938189706096">Internetes megtekintés</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> elem törölve</translation>
 <translation id="2536728043171574184">Az oldal offline példányának megtekintése</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Az érdeklődési köreihez kapcsolódó cikkek a Chrome-ban</translation>
 <translation id="3070005020161560471">Automatikusan fordított nyelvek</translation>
 <translation id="3089395242580810162">Megnyitás inkognitó lapon</translation>
+<translation id="3091010850649238832">Vágólap tartalmának mutatása</translation>
 <translation id="3098745985164956033">A leírások pontosítása érdekében a böngésző egyes képeket elküld a Google-nak</translation>
 <translation id="3114507951000454849">Olvassa el a mai híreket <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Hirdetmények</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Javítja az Ön és mindenki más biztonságát az interneten.</translation>
 <translation id="6618554661997243500">Ha szeretné megtekinteni a legkedveltebb webhelyeit és a legfrissebb híreket, koppintson a Kezdőképernyő gombra</translation>
 <translation id="6627583120233659107">Mappa szerkesztése</translation>
+<translation id="6635718764393004944">Az Ön keresőmotorja a következő: <ph name="DSE" />. Adott esetben tekintse meg az utasításokat a keresési előzmények törléséhez.</translation>
 <translation id="663674369910034433">A <ph name="BEGIN_LINK1" />Szinkronizálás<ph name="END_LINK1" /> és a <ph name="BEGIN_LINK2" />Google-szolgáltatások<ph name="END_LINK2" /> részben további beállításokat talál az adatvédelemre, biztonságra és adatgyűjtésre vonatkozóan.</translation>
 <translation id="6643016212128521049">Törlés</translation>
 <translation id="6643649862576733715">Rendezés a megtakarított adatmennyiség szerint</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 2e1f991..d3700d1 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
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Որոնել</translation>
 <translation id="2518590038762162553">Lite ռեժիմում Chrome-ն ավելի արագ է բեռնում էջերը և օգտագործում է մինչև 60% պակաս թրաֆիկ: Ձեր այցելած էջերն օպտիմալացնելու համար Chrome-ը ձեր վեբ թրաֆիկն ուղարկում է Google-ին։ <ph name="BEGIN_LINK" />Իմանալ ավելին<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Ձեր այցելած էջերի URL-ներն ուղարկում է Google-ին</translation>
+<translation id="2527779675047087889">Թաքցնել սեղմատախտակի բովանդակությունը</translation>
 <translation id="2532336938189706096">Վեբ տարբերակ</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> տարր ջնջվեց</translation>
 <translation id="2536728043171574184">Դուք դիտում եք տվյալ էջի անցանց պատճենը</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Ձեր հետաքրքրությունների հիման վրա ընտրված հոդվածներ՝ Chrome-ում</translation>
 <translation id="3070005020161560471">Ավտոմատ թարգմանել</translation>
 <translation id="3089395242580810162">Բացել ինկոգնիտո ներդիրում</translation>
+<translation id="3091010850649238832">Ցույց տալ սեղմատախտակի բովանդակությունը</translation>
 <translation id="3098745985164956033">Պատկերներն ուղարկվում են Google-ին՝ նկարագրությունները բարելավելու նպատակով</translation>
 <translation id="3114507951000454849">Կարդացեք այսօրվա նորությունները <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Հայտարարություններ</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Համացանցը դարձնում է ավելի անվտանգ ձեր և մյուս օգտատերերի համար։</translation>
 <translation id="6618554661997243500">Ձեր թոփ կայքերն ու հոդվածները տեսնելու համար սեղմեք գլխավոր էկրանի կոճակը</translation>
 <translation id="6627583120233659107">Փոփոխել պանակը</translation>
+<translation id="6635718764393004944">Դուք օգտագործում եք <ph name="DSE" /> որոնման համակարգը։ Անհրաժեշտության դեպքում դիտեք, թե ինչպես համակարգի ցուցումներում ջնջել որոնումների պատմությունը։</translation>
 <translation id="663674369910034433">Գաղտնիության, անվտանգության և տվյալների հավաքման հետ կապված լրացուցիչ կարգավորումներին կարող եք ծանոթանալ <ph name="BEGIN_LINK1" />Համաժամացում<ph name="END_LINK1" /> և <ph name="BEGIN_LINK2" />Google-ի ծառայություններ<ph name="END_LINK2" /> բաժիններում։</translation>
 <translation id="6643016212128521049">Մաքրել</translation>
 <translation id="6643649862576733715">Դասավորել ըստ պահված տվյալների ծավալի</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
index 0bfc435..dc95c33 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Pindai</translation>
 <translation id="2518590038762162553">Dalam Mode Ringan, Chrome memuat halaman lebih cepat dan menghemat data hingga 60 persen. Untuk mengoptimalkan halaman yang Anda kunjungi, Chrome akan mengirimkan traffic web ke Google. <ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Mengirimkan URL halaman yang Anda buka ke Google</translation>
+<translation id="2527779675047087889">Sembunyikan konten papan klip</translation>
 <translation id="2532336938189706096">Tampilan Web</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> item dihapus</translation>
 <translation id="2536728043171574184">Melihat salinan offline halaman ini</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Artikel di Chrome terkait minat Anda</translation>
 <translation id="3070005020161560471">Otomatis terjemahkan</translation>
 <translation id="3089395242580810162">Buka di tab samaran</translation>
+<translation id="3091010850649238832">Tampilkan konten papan klip</translation>
 <translation id="3098745985164956033">Beberapa gambar dikirim ke Google guna menyempurnakan deskripsi untuk Anda</translation>
 <translation id="3114507951000454849">Baca berita hari ini <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Pengumuman</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Meningkatkan keamanan untuk Anda dan semua orang di web.</translation>
 <translation id="6618554661997243500">Untuk melihat situs dan artikel teratas untuk Anda, ketuk tombol Beranda</translation>
 <translation id="6627583120233659107">Edit folder</translation>
+<translation id="6635718764393004944">Mesin telusur Anda adalah <ph name="DSE" />. Jika berlaku, lihat petunjuknya untuk menghapus histori penelusuran Anda.</translation>
 <translation id="663674369910034433">Untuk setelan lainnya yang berkaitan dengan privasi, keamanan, dan pengumpulan data, lihat <ph name="BEGIN_LINK1" />Sinkronisasi<ph name="END_LINK1" /> dan <ph name="BEGIN_LINK2" />Layanan Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Hapus</translation>
 <translation id="6643649862576733715">Urutkan menurut jumlah kuota yang dihemat</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
index 757f952..ac4083c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Leita</translation>
 <translation id="2518590038762162553">Í léttútgáfu hleður Chrome síðum hraðar og notar allt að 60% minna gagnamagn. Chrome sendir vefumferð þína til Google til þess að geta fínstillt síðurnar sem þú opnar. <ph name="BEGIN_LINK" />Frekari upplýsingar<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Sendir vefslóðir síðna sem þú skoðar til Google</translation>
+<translation id="2527779675047087889">Fela innihald klippiborðs</translation>
 <translation id="2532336938189706096">Vefyfirlit</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> atriðum eytt</translation>
 <translation id="2536728043171574184">Skoðar ótengt afrit af þessari síðu</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Greinar sem tengjast áhugamálum þínum í Chrome</translation>
 <translation id="3070005020161560471">Þýða sjálfkrafa</translation>
 <translation id="3089395242580810162">Opna í huliðsflipa</translation>
+<translation id="3091010850649238832">Sýna innihald klippiborðs</translation>
 <translation id="3098745985164956033">Sumar myndir eru sendar til Google til að bæta lýsingar</translation>
 <translation id="3114507951000454849">Lestu fréttir dagsins <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Tilkynningar</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Eykur öryggi þitt og allra á vefnum.</translation>
 <translation id="6618554661997243500">Ýttu á heimahnappinn til að sjá mest sóttu vefsvæðin og sögur fyrir þig</translation>
 <translation id="6627583120233659107">Breyta möppu</translation>
+<translation id="6635718764393004944">Leitarvélin þín er <ph name="DSE" />. Skoðaðu leiðbeiningar hennar til að eyða leitarferlinum þínum, ef slíkt á við.</translation>
 <translation id="663674369910034433">Frekari upplýsingar sem tengjast persónuvernd, öryggi og gagnasöfnun má finna í <ph name="BEGIN_LINK1" />Samstilling<ph name="END_LINK1" /> og <ph name="BEGIN_LINK2" />Google þjónustur<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Hreinsa</translation>
 <translation id="6643649862576733715">Raða eftir gagnasparnaði</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
index 86eb803..6ba03b3 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Scansiona</translation>
 <translation id="2518590038762162553">Nella modalità Lite, Chrome carica le pagine più rapidamente e utilizza fino al 60% di dati in meno. Per ottimizzare le pagine che visiti, Chrome invia il tuo traffico web a Google. <ph name="BEGIN_LINK" />Ulteriori informazioni<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Invia a Google gli URL delle pagine che visiti</translation>
+<translation id="2527779675047087889">Nascondi contenuti degli appunti</translation>
 <translation id="2532336938189706096">Visualizzazione web</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> elementi eliminati</translation>
 <translation id="2536728043171574184">È visualizzata una copia offline della pagina</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Articoli relativi ai tuoi interessi su Chrome</translation>
 <translation id="3070005020161560471">Traduci automaticamente</translation>
 <translation id="3089395242580810162">Apri in scheda in incognito</translation>
+<translation id="3091010850649238832">Mostra contenuti degli appunti</translation>
 <translation id="3098745985164956033">Alcune immagini vengono inviate a Google per migliorare le descrizioni</translation>
 <translation id="3114507951000454849">Leggi le notizie di oggi <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Annunci</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Migliora il livello di sicurezza per te e per chiunque sul Web.</translation>
 <translation id="6618554661997243500">Per vedere notizie e siti principali personalizzati, tocca il pulsante Home</translation>
 <translation id="6627583120233659107">Modifica cartella</translation>
+<translation id="6635718764393004944">Il tuo motore di ricerca è <ph name="DSE" />. Se pertinente, leggi le relative istruzioni per eliminare la cronologia delle ricerche.</translation>
 <translation id="663674369910034433">Per altre impostazioni relative a privacy, sicurezza e raccolta dei dati, consulta le sezioni <ph name="BEGIN_LINK1" />Sincronizzazione<ph name="END_LINK1" /> e <ph name="BEGIN_LINK2" />Servizi Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Cancella</translation>
 <translation id="6643649862576733715">Ordina per quantità di dati risparmiati</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
index f637e93045..63ee6ea 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">סריקה</translation>
 <translation id="2518590038762162553">‏במצב טעינה מהירה, Chrome טוען דפים מהר יותר ומפחית את השימוש בנתונים בשיעור של עד 60 אחוזים. כדי לבצע אופטימיזציה לדפים שהמשתמש נכנס אליהם, Chrome שולח אל Google את התנועה שלו באינטרנט. <ph name="BEGIN_LINK" />מידע נוסף<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">‏שליחת כתובות אתרים של דפים שבהם ביקרת ל-Google</translation>
+<translation id="2527779675047087889">הסתרת התוכן שבלוח</translation>
 <translation id="2532336938189706096">תצוגת אינטרנט</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> פריטים נמחקו</translation>
 <translation id="2536728043171574184">מוצג העתק לא מקוון של עמוד זה</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">‏ב-Chrome מחכים לך מאמרים בנושאים שמעניינים אותך</translation>
 <translation id="3070005020161560471">יש לתרגם אוטומטית</translation>
 <translation id="3089395242580810162">פתיחה בכרטיסייה אנונימית</translation>
+<translation id="3091010850649238832">הצגת התוכן שבלוח</translation>
 <translation id="3098745985164956033">‏חלק מהתמונות נשלחות אל Google כדי לשפר עבורך את התיאורים</translation>
 <translation id="3114507951000454849">קראת חדשות היום? <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">הודעות</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">רמת אבטחה משופרת עבורך ועבור כל מי שמתחבר לאינטרנט.</translation>
 <translation id="6618554661997243500">להצגת הכתבות והאתרים המובילים שלך, יש להקיש על הלחצן הראשי</translation>
 <translation id="6627583120233659107">עריכת התיקייה</translation>
+<translation id="6635718764393004944">מנוע החיפוש שלך הוא <ph name="DSE" />. אם יש הוראות לגביו, יש לעיין בהן כדי למחוק את היסטוריית החיפושים.</translation>
 <translation id="663674369910034433">‏אפשר למצוא הגדרות נוספות בנושא פרטיות, אבטחה ואיסוף נתונים בדפים <ph name="BEGIN_LINK1" />סנכרון<ph name="END_LINK1" /> ו<ph name="BEGIN_LINK2" />שירותי Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">ניקוי</translation>
 <translation id="6643649862576733715">מיון לפי כמות הנתונים שנחסכו</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
index f4f499b..13cc400 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">スキャン</translation>
 <translation id="2518590038762162553">ライトモードを使用すると、Chrome でページの読み込みが高速化され、データ使用量も最大 60% 抑えることができます。アクセスするページを最適化するため、ウェブ トラフィックが Chrome から Google に送信されます。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">アクセスしたページの URL を Google に送信します</translation>
+<translation id="2527779675047087889">クリップボードの内容を非表示</translation>
 <translation id="2532336938189706096">ウェブ表示</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" />件の項目を削除しました</translation>
 <translation id="2536728043171574184">このページのオフライン コピーを表示しています</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Chrome の履歴に基づくおすすめの記事を表示します</translation>
 <translation id="3070005020161560471">自動的に翻訳する</translation>
 <translation id="3089395242580810162">シークレット タブで開く</translation>
+<translation id="3091010850649238832">クリップボードの内容を表示</translation>
 <translation id="3098745985164956033">正確な説明を生成するため、画像が Google に送信される場合があります</translation>
 <translation id="3114507951000454849">今日のニュースをチェック <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">お知らせ</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">すべてのウェブユーザーの安全性を高めます。</translation>
 <translation id="6618554661997243500">よく使用するサイトや記事を表示するには、ホームボタンをタップします</translation>
 <translation id="6627583120233659107">フォルダを編集</translation>
+<translation id="6635718764393004944">検索エンジンは <ph name="DSE" /> に設定されています。この検索エンジンの検索履歴を削除するには、以下の手順をご覧ください。</translation>
 <translation id="663674369910034433">プライバシー、セキュリティ、データ収集に関連するその他の設定については、<ph name="BEGIN_LINK1" />同期<ph name="END_LINK1" />と <ph name="BEGIN_LINK2" />Google サービス<ph name="END_LINK2" />をご覧ください</translation>
 <translation id="6643016212128521049">削除</translation>
 <translation id="6643649862576733715">データ節約量で並べ替え</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
index 9c64148..a68255d1 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">სკანირება</translation>
 <translation id="2518590038762162553">Lite რეჟიმში Chrome უფრო სწრაფად ტვირთავს გვერდებს და 60%-ით ნაკლებ ტრაფიკს მოიხმარს. თქვენ მიერ მონახულებული გვერდების ოპტიმიზაციის მიზნით, Chrome თქვენს ვებ-ტრაფიკს Google-ს უგზავნის. <ph name="BEGIN_LINK" />შეიტყვეთ მეტი<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Google-ს უგზავნის თქვენ მიერ მონახულებული გვერდების URL-ებს</translation>
+<translation id="2527779675047087889">გაცვლის ბუფერის შიგთავსის დამალვა</translation>
 <translation id="2532336938189706096">ვებ-ხედი</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> ერთეული წაიშალა</translation>
 <translation id="2536728043171574184">თქვენ ამ გვერდის ხაზგარეშე ასლს ნახულობთ</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">თქვენს ინტერესებთან დაკავშირებული სტატიები Chrome-ში</translation>
 <translation id="3070005020161560471">ავტომატურად ითარგმნოს</translation>
 <translation id="3089395242580810162">ინკოგნიტო ჩანართში გახსნა</translation>
+<translation id="3091010850649238832">გაცვლის ბუფერის შიგთავსის ჩვენება</translation>
 <translation id="3098745985164956033">ზოგიერთი სურათი გაეგზავნება Google-ს, უკეთესი აღწერილობები რომ შემოგთავაზოთ</translation>
 <translation id="3114507951000454849">გაეცანით დღის სიახლეებს <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">განცხადებები</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">უსაფრთხოების გაუმჯობესება თქვენთვის და ვების ყველა მომხმარებლისთვის.</translation>
 <translation id="6618554661997243500">თქვენთვის შერჩეული საუკეთესო საიტებისა და ამბების სანახავად შეეხეთ საწყისი გვერდის ღილაკს</translation>
 <translation id="6627583120233659107">საქაღალდის რედაქტირება</translation>
+<translation id="6635718764393004944">თქვენი საძიებო სისტემაა <ph name="DSE" />. ძიების ისტორიის წასაშლელად გაეცანით მის ინსტრუქციას (ასეთის არსებობის შემთხვევაში).</translation>
 <translation id="663674369910034433">კონფიდენციალურობასთან, უსაფრთხოებასთან და მონაცემთა შეგროვებასთან დაკავშირებული სხვა პარამეტრებისთვის იხილეთ <ph name="BEGIN_LINK1" />სინქრონიზაცია<ph name="END_LINK1" /> და <ph name="BEGIN_LINK2" />Google სერვისები<ph name="END_LINK2" />.</translation>
 <translation id="6643016212128521049">გასუფთავება</translation>
 <translation id="6643649862576733715">დალაგება დაზოგილი მონაცემების მიხედვით</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
index a79cd1d..5d5a0abb 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">ស្កេន</translation>
 <translation id="2518590038762162553">Chrome ផ្ទុកទំព័រ​រហ័សជាងមុន និងប្រើទិន្នន័យ​តិចជាងមុន​រហូតដល់ 60 ភាគរយ នៅក្នុង​មុខងារស្រាល។ ដើម្បី​បង្កើន​ប្រសិទ្ធភាព​ទំព័រ​ដែល​អ្នក​ចូលមើល Chrome ផ្ញើ​ចរាចរណ៍​បណ្ដាញ​របស់អ្នក​ទៅ Google ។ <ph name="BEGIN_LINK" />ស្វែងយល់​បន្ថែម<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">ផ្ញើ​ URL នៃ​ទំព័រ​ដែលអ្នក​ចូល​មើលទៅ Google</translation>
+<translation id="2527779675047087889">លាក់ខ្លឹមសារឃ្លីបបត</translation>
 <translation id="2532336938189706096">មើលគេហទំព័រ</translation>
 <translation id="2534155362429831547">បានលុបធាតុ <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">កំពុងមើលច្បាប់ចម្លងនៃទំព័រនេះនៅក្រៅបណ្តាញ</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">អត្ថបទអំពីចំណាប់អារម្មណ៍​របស់អ្នកនៅលើ Chrome</translation>
 <translation id="3070005020161560471">បកប្រែដោយស្វ័យប្រវត្តិ</translation>
 <translation id="3089395242580810162">បើកនៅក្នុងផ្ទាំងអនាមិក</translation>
+<translation id="3091010850649238832">បង្ហាញខ្លឹមសារឃ្លីបបត</translation>
 <translation id="3098745985164956033">រូបភាពមួយចំនួន​ត្រូវបានផ្ញើទៅ Google ដើម្បីកែលម្អ​ការពណ៌នា​សម្រាប់អ្នក</translation>
 <translation id="3114507951000454849">អាន​ព័ត៌មាននៅថ្ងៃនេះ <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">សេចក្តីប្រកាស</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">ពង្រឹងសុវត្ថិភាព​សម្រាប់អ្នក និងអ្នកគ្រប់គ្នានៅលើអ៊ីនធឺណិត។</translation>
 <translation id="6618554661997243500">ដើម្បី​មើល​ឃើញអត្ថបទ និង​គេហទំព័រ​ពេញនិយម​សម្រាប់អ្នក សូមចុច​ប៊ូតុងដើម</translation>
 <translation id="6627583120233659107">កែសម្រួលថតឯកសារ</translation>
+<translation id="6635718764393004944">ម៉ាស៊ីន​ស្វែងរករបស់អ្នកគឺ <ph name="DSE" />។ ប្រសិនបើអាច សូមមើលការណែនាំរបស់ម៉ាស៊ីន​ស្វែងរកនេះ ដើម្បីលុបប្រវត្តិ​ស្វែងរករបស់អ្នក។</translation>
 <translation id="663674369910034433">សម្រាប់​ការកំណត់​ជាច្រើនទៀត ដែលពាក់ព័ន្ធនឹង​ឯកជន​ភាព សុវត្ថិភាព និង​ការ​ប្រមូល​ទិន្នន័យ សូមមើល<ph name="BEGIN_LINK1" />សមកាលកម្ម​<ph name="END_LINK1" /> និង<ph name="BEGIN_LINK2" />សេវាកម្ម Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">ជម្រះ</translation>
 <translation id="6643649862576733715">តម្រៀបតាម​បរិមាណ​ទិន្នន័យ​ដែលបានសន្សំ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
index 2d0a9cc1..237a27d 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">검색</translation>
 <translation id="2518590038762162553">Chrome의 라이트 모드를 사용하면 페이지가 더 빠르게 로드되고 데이터가 최대 60퍼센트 절약됩니다. Chrome에서는 사용자가 방문하는 페이지를 최적화하기 위해 웹 트래픽을 Google에 전송합니다. <ph name="BEGIN_LINK" />자세히 알아보기<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">방문한 페이지의 URL을 Google에 전송</translation>
+<translation id="2527779675047087889">클립보드 내용 숨기기</translation>
 <translation id="2532336938189706096">웹 보기</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" />개 항목 삭제함</translation>
 <translation id="2536728043171574184">이 페이지의 오프라인 사본 보는 중</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Chrome에서 관심분야 기사를 읽어보세요.</translation>
 <translation id="3070005020161560471">자동으로 번역</translation>
 <translation id="3089395242580810162">시크릿 탭에서 열기</translation>
+<translation id="3091010850649238832">클립보드 내용 표시</translation>
 <translation id="3098745985164956033">설명을 개선하기 위해 일부 이미지가 Google에 전송됨</translation>
 <translation id="3114507951000454849">오늘의 뉴스 읽기 <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">공지사항</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">모든 웹 사용자를 위해 보안을 향상합니다.</translation>
 <translation id="6618554661997243500">맞춤 인기 사이트 및 뉴스를 보려면 홈 버튼 탭하기</translation>
 <translation id="6627583120233659107">폴더 수정</translation>
+<translation id="6635718764393004944">기본 검색엔진은 <ph name="DSE" />입니다. 해당하는 경우, 검색엔진에서 방문 기록을 삭제하는 방법을 확인하세요.</translation>
 <translation id="663674369910034433">개인정보 보호, 보안, 데이터 수집에 관한 추가 설정을 보려면 <ph name="BEGIN_LINK1" />동기화<ph name="END_LINK1" /> 및 <ph name="BEGIN_LINK2" />Google 서비스<ph name="END_LINK2" />를 참고하세요.</translation>
 <translation id="6643016212128521049">삭제</translation>
 <translation id="6643649862576733715">저장된 데이터 양에 따라 정렬</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
index 7b3c489c..a848a42 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">ສະແກນ</translation>
 <translation id="2518590038762162553">ໃນໂໝດ Lite, Chrome ໂຫຼດໜ້າໄດ້ໄວກວ່າ ແລະ ໃຊ້ອິນເຕີເນັດບໍ່ເກີນ 60 ເປີເຊັນ. ເພື່ອປັບໜ້າເວັບທີ່ທ່ານເຂົ້າເບິ່ງໃຫ້ເໝາະສົມ, Chrome ສົ່ງການຮັບສົ່ງຂໍ້ມູນເວັບຂອງທ່ານໃຫ້ Google. <ph name="BEGIN_LINK" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">ສົ່ງ URL ຂອງໜ້າຕ່າງໆທີ່ທ່ານເຂົ້າເບິ່ງໃຫ້ Google</translation>
+<translation id="2527779675047087889">ເຊື່ອງເນື້ອຫາຄລິບບອດ</translation>
 <translation id="2532336938189706096">ມຸມມອງເວັບ</translation>
 <translation id="2534155362429831547">ລຶບ <ph name="NUMBER_OF_ITEMS" /> ລາຍ​ການ​​ແລ້ວ</translation>
 <translation id="2536728043171574184">ກຳ​ລັງ​ເຂົ້າ​ເບິ່ງ​ສຳ​ເນົາ​ອັອບ​ລາຍ​ຂອງ​ໜ້າ​ນີ້</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">ບົດຄວາມທີ່ທ່ານສົນໃຈໃນ Chrome</translation>
 <translation id="3070005020161560471">ແປໂດຍອັດຕະໂນມັດ</translation>
 <translation id="3089395242580810162">ເປີດ​ໃນ​ແຖບ​ບໍ່ເປີດເຜີຍຕົນຕົວ</translation>
+<translation id="3091010850649238832">ສະແດງເນື້ອຫາຄລິບບອດ</translation>
 <translation id="3098745985164956033">ລະບົບຈະສົ່ງບາງຮູບໃຫ້ Google ເພື່ອປັບປຸງຄຳອະທິບາຍສຳລັບທ່ານ.</translation>
 <translation id="3114507951000454849">ອ່ານຂ່າວຂອງມື້ນີ້ <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">ການປະກາດ</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">ປັບປຸງຄວາມປອດໄພສຳລັບທ່ານ ແລະ ທຸກຄົນໃນເວັບ.</translation>
 <translation id="6618554661997243500">ເພື່ອເຫັນເວັບໄຊ ແລະ ຂ່າວຍອດນິຍົມສຳລັບທ່ານ, ກະລຸນາແຕະປຸ່ມໜ້າທຳອິດ</translation>
 <translation id="6627583120233659107">ແກ້ໄຂໂຟລເດີ</translation>
+<translation id="6635718764393004944">ໂປຣແກຣມຊອກຫາຂອງທ່ານແມ່ນ <ph name="DSE" />. ເບິ່ງຄຳແນະນຳເພື່ອລຶບປະ​ຫວັດ​ການ​ຊອກຫາຂອງທ່ານ, ຖ້າມີ.</translation>
 <translation id="663674369910034433">ສຳລັບການຕັ້ງຄ່າເພີ່ມເຕີມທີ່ກ່ຽວຂ້ອງກັບຄວາມເປັນສ່ວນຕົວ, ຄວາມປອດໄພ ແລະ ການເກັບກຳຂໍ້ມູນ, ກະລຸນາເບິ່ງ <ph name="BEGIN_LINK1" />ການຊິ້ງຂໍ້ມູນ<ph name="END_LINK1" /> ແລະ <ph name="BEGIN_LINK2" />ການບໍລິການຂອງ Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">ລຶບ</translation>
 <translation id="6643649862576733715">ຮຽງຕາມປະລິມານອິນເຕີເນັດທີ່ປະຢັດໄດ້</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
index a703b087..364018d 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Nuskaityti</translation>
 <translation id="2518590038762162553">Kai įjungtas supaprastintasis režimas, „Chrome“ sparčiau įkelia puslapius ir sunaudoja iki 60 proc. mažiau duomenų. „Chrome“ siunčia žiniatinklio srauto duomenis sistemai „Google“, kad optimizuotų puslapius, kuriuose lankotės. <ph name="BEGIN_LINK" />Sužinokite daugiau<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Siunčiami „Google“ puslapių, kuriuose lankotės, URL</translation>
+<translation id="2527779675047087889">Slėpti iškarpinės turinį</translation>
 <translation id="2532336938189706096">Žiniatinklio rodinys</translation>
 <translation id="2534155362429831547">Ištrinta elementų: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Žiūrima neprisijungus naudojama šio puslapio kopija</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Su jūsų pomėgiais susiję straipsniai naršyklėje „Chrome“</translation>
 <translation id="3070005020161560471">Versti automatiškai</translation>
 <translation id="3089395242580810162">Atidaryti inkognito skirtuko lape</translation>
+<translation id="3091010850649238832">Rodyti iškarpinės turinį</translation>
 <translation id="3098745985164956033">Vaizdai siunčiami „Google“ norint patobulinti jums teikiamus aprašus</translation>
 <translation id="3114507951000454849">Skaitykite šiandienos naujienas <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Pranešimai</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Sustiprina jūsų ir visų žiniatinklio naudotojų saugą.</translation>
 <translation id="6618554661997243500">Norėdami peržiūrėti populiariausias svetaines ir jums skirtus pasakojimus palieskite pagrindinio ekrano mygtuką</translation>
 <translation id="6627583120233659107">Redaguoti aplanką</translation>
+<translation id="6635718764393004944">Jūsų paieškos variklis yra „<ph name="DSE" />“. Jei yra, peržiūrėkite jo instrukcijas, kaip ištrinti paieškos istoriją.</translation>
 <translation id="663674369910034433">Daugiau nustatymų, susijusių su privatumu, sauga ir duomenų rinkimu, žr. skiltyse <ph name="BEGIN_LINK1" />„Sinchronizavimas“<ph name="END_LINK1" /> ir <ph name="BEGIN_LINK2" />„Google“ paslaugos“<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Išvalyti</translation>
 <translation id="6643649862576733715">Rūšiuoti pagal išsaugotų duomenų kiekį</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
index c199a82..c989d28 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Meklēt</translation>
 <translation id="2518590038762162553">Pārlūka Chrome vienkāršotajā režīmā lapas tiek ielādētas ātrāk un tiek patērēts pat par 60 procentiem mazāk datu. Lai optimizētu jūsu apmeklētās lapas, no pārlūka Chrome tiek nosūtīta jūsu tīmekļa datplūsma uzņēmumam Google. <ph name="BEGIN_LINK" />Uzziniet vairāk<ph name="END_LINK" />.</translation>
 <translation id="2523184218357549926">Nosūta Google serveriem apmeklēto lapu vietrāžus URL</translation>
+<translation id="2527779675047087889">Slēpt starpliktuves saturu</translation>
 <translation id="2532336938189706096">Tīmekļa skatījums</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> vienumi tika izdzēsti</translation>
 <translation id="2536728043171574184">Skata šīs lapas kopiju bezsaistē</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Ar jūsu interesēm saistīti raksti pārlūkā Chrome</translation>
 <translation id="3070005020161560471">Automātiski tulkot</translation>
 <translation id="3089395242580810162">Atvērt inkognito režīma cilnē</translation>
+<translation id="3091010850649238832">Rādīt starpliktuves saturu</translation>
 <translation id="3098745985164956033">Daži attēli tiek sūtīti uz Google serveriem, lai uzlabotu aprakstus</translation>
 <translation id="3114507951000454849">Lasiet šodienas ziņas <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Paziņojumi</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Šis režīms efektīvāk aizsargā gan jūs, gan visus citus tīmekļa lietotājus.</translation>
 <translation id="6618554661997243500">Lai skatītu vietnes, ko apmeklējat visbiežāk, un ieteicamos rakstus, pieskarieties pogai Sākumlapa</translation>
 <translation id="6627583120233659107">Rediģēt mapi</translation>
+<translation id="6635718764393004944">Jūsu meklētājprogramma ir <ph name="DSE" />. Skatiet tās norādījumus par meklēšanas vēstures dzēšanu, ja tādi ir pieejami.</translation>
 <translation id="663674369910034433">Papildu iestatījumus, kas attiecas uz konfidencialitāti, drošību un datu vākšanu, skatiet sadaļās <ph name="BEGIN_LINK1" />Sinhronizēšana<ph name="END_LINK1" /> un <ph name="BEGIN_LINK2" />Google pakalpojumi<ph name="END_LINK2" />.</translation>
 <translation id="6643016212128521049">Notīrīt</translation>
 <translation id="6643649862576733715">Kārtot pēc saglabāto datu apjoma</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb
index 217479c..f2cacc3 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Скенирај</translation>
 <translation id="2518590038762162553">Во Lite-режим, Chrome побрзо ги вчитува страниците и користи до 60 проценти помалку интернет. За да ги оптимизира страниците што ги посетувате, Chrome го испраќа вашиот сообраќај на интернет во Google. <ph name="BEGIN_LINK" />Дознајте повеќе<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Испраќа URL-адреси од страници што ги посетувате до Google</translation>
+<translation id="2527779675047087889">Сокриј содржини од привремената меморија</translation>
 <translation id="2532336938189706096">Преглед на веб</translation>
 <translation id="2534155362429831547">Избришани се <ph name="NUMBER_OF_ITEMS" /> ставки</translation>
 <translation id="2536728043171574184">Се прикажува офлајн копија на страницата</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Статии за она што ве интересира на Chrome</translation>
 <translation id="3070005020161560471">Автоматски преведувај</translation>
 <translation id="3089395242580810162">Отвори во инкогнито картичка</translation>
+<translation id="3091010850649238832">Прикажи содржини од привремената меморија</translation>
 <translation id="3098745985164956033">Некои слики се испраќаат во Google за да им се подобрат описите</translation>
 <translation id="3114507951000454849">Прочитајте ги денешните вести <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Соопштенија</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Ја подобрува безбедноста за вас и сите останати на интернет.</translation>
 <translation id="6618554661997243500">За да ги гледате најдобрите сајтови и стории за вас, допрете го копчето за почетен екран</translation>
 <translation id="6627583120233659107">Уредувај папка</translation>
+<translation id="6635718764393004944">Вашиот пребарувач е <ph name="DSE" />. Ако е применливо, погледнете ги упатствата за да ја избришете историјата на пребарување.</translation>
 <translation id="663674369910034433">За повеќе поставки што се однесуваат на приватноста, безбедноста и прибирањето податоци, одете на <ph name="BEGIN_LINK1" />Синхронизација<ph name="END_LINK1" /> и <ph name="BEGIN_LINK2" />Услуги на Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Исчисти</translation>
 <translation id="6643649862576733715">Подреди по количина на заштеден сообраќај</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
index b805c1a..7633eff 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
@@ -247,6 +247,7 @@
 <translation id="2612676031748830579">कार्ड नंबर</translation>
 <translation id="2625189173221582860">पासवर्ड कॉपी केला</translation>
 <translation id="2631006050119455616">वाचवला</translation>
+<translation id="2645657967708199252">तुमच्या <ph name="CONNECTION_TYPE" /> कनेक्शनमुळे तुमच्या डाउनलोडचा वेग कमी होऊ शकतो</translation>
 <translation id="2647434099613338025">भाषा जोडा</translation>
 <translation id="2650751991977523696">फाइल पुन्हा डाउनलोड करायची?</translation>
 <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# ऑडिओ फाइल}other{# ऑडिओ फाइल}}</translation>
@@ -259,6 +260,7 @@
 <translation id="2718846868787000099">तुमच्या प्राधान्यकृत भाषांमध्ये आशय दाखवण्यासाठी, तुम्ही भेट देता त्या साइट तुमची प्राधान्ये पाहू शकतात</translation>
 <translation id="2723001399770238859">ऑडिओ</translation>
 <translation id="2728754400939377704">साइटनुसार क्रमाने लावा</translation>
+<translation id="2739256783402597439">2G</translation>
 <translation id="2744248271121720757">झटपट शोधण्यासाठी किंवा संबंधित ॲक्‍शन पाहण्यासाठी एखाद्या शब्दावर टॅप करा</translation>
 <translation id="2760989362628427051">तुमच्या डिव्हाइसची गडद थीम किंवा बॅटरी सेव्हर सुरू असताना गडद थीम सुरू करा</translation>
 <translation id="2762000892062317888">आत्ताच</translation>
@@ -435,6 +437,7 @@
 <translation id="3943557322767080599">तुम्ही तुमच्या Google खाते मध्ये साइन इन करता तेव्हा Chrome मध्ये साइन इन सूचना दाखवा</translation>
 <translation id="395206256282351086">शोध आणि साइट सूचना बंद आहेत</translation>
 <translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{तयार झाल्यावर, Chrome तुमचे पेज लोड करेल}other{तयार झाल्यावर, Chrome तुमची पेज लोड करेल}}</translation>
+<translation id="3962957115499249330">हा डाउनलोड वाय-फाय वर सुरू होईल तेव्हा तुम्हाला सूचना दिसेल.</translation>
 <translation id="3963007978381181125">पासफ्रेज एंक्रिप्शनमध्ये Google Pay वरील पेमेंट पद्धतींचा आणि पत्त्यांचा समावेश नसतो. फक्त तुमचा पासफ्रेज असलेली एखादी व्यक्ती तुमचा एंक्रिप्ट केलेला डेटा वाचू शकते. पासफ्रेज Google कडे पाठवला किंवा त्याद्वारे स्टोअर केला जात नाही. तुम्ही तुमचा पासफ्रेज विसरल्यास किंवा तुम्हाला हे सेटिंग बदलायचे असल्यास, तुम्हाला सिंक रीसेट करण्याची आवश्यकता असेल. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation>
 <translation id="3969142555815019568">Chrome तुमचे पासवर्ड तपासू शकत नाही</translation>
 <translation id="3974987681202239636"><ph name="APP_NAME" /> हे Chrome मध्ये उघडेल. सुरू ठेवून, तुम्ही <ph name="BEGIN_LINK1" />Google सेवा अटी<ph name="END_LINK1" /> आणि <ph name="BEGIN_LINK2" />Google Chrome व Chrome OS अतिरिक्त सेवा अटी<ph name="END_LINK2" /> यांना सहमती दर्शवता. <ph name="BEGIN_LINK3" />Family Link सोबत व्यवस्थापित केलेली Google खाती यांसाठी गोपनीयतेची सूचना<ph name="END_LINK3" /> देखील लागू होते.</translation>
@@ -478,6 +481,7 @@
 <translation id="4256782883801055595">मुक्त स्रोत परवाने</translation>
 <translation id="4263656433980196874">Assistant च्या व्हॉइस शोध संमतीशी संबंधित UI स्क्रीनवर पूर्ण उंचीपर्यंत उघडले</translation>
 <translation id="4269820728363426813">लिंकचा पत्ता कॉपी करा</translation>
+<translation id="4290281343757112331">त्याऐवजी नंतर डाउनलोड करायचे का?</translation>
 <translation id="4298388696830689168">लिंक केलेल्या साइट</translation>
 <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="4307992518367153382">मूलभूत</translation>
@@ -540,6 +544,7 @@
 <translation id="4698034686595694889"><ph name="APP_NAME" /> मध्ये ऑफलाइन पाहा</translation>
 <translation id="4699172675775169585">कॅशे   इमेज आणि फाइल</translation>
 <translation id="4714588616299687897">तुमचा सुमारे 60% डेटा वाचवा</translation>
+<translation id="4716066120200945007">फॉलो करत आहे</translation>
 <translation id="4719927025381752090">भाषांतर करण्यास ऑफर करा</translation>
 <translation id="4720023427747327413"><ph name="PRODUCT_NAME" /> मध्‍ये उघडा</translation>
 <translation id="4720982865791209136">Chrome सुधारण्यात मदत करा. <ph name="BEGIN_LINK" />सर्वेक्षण करा<ph name="END_LINK" /></translation>
@@ -620,6 +625,7 @@
 <translation id="5191251636205085390">तृतीय पक्षाच्या कुकी बदलण्याचा उद्देश असलेल्या नवीन तंत्रज्ञान आणि ते कसे नियंत्रित करायचे याविषयी जाणून घ्या</translation>
 <translation id="5193988420012215838">तुमच्या क्लिपबोर्डवर कॉपी केले</translation>
 <translation id="5199929503336119739">कार्य प्रोफाइल</translation>
+<translation id="5201464744567315552">हा डाउनलोड <ph name="TIME" /> वाजता सुरू होईल तेव्हा तुम्हाला सूचना दिसेल.</translation>
 <translation id="5204967432542742771">पासवर्ड एंटर करा</translation>
 <translation id="5210286577605176222">मागील टॅबवर जा</translation>
 <translation id="5210365745912300556">टॅब बंद करा</translation>
@@ -630,6 +636,7 @@
 <translation id="5230560987958996918"><ph name="SITE" /> ला जवळपासची ब्लूटूथ डिव्हाइस स्कॅन करायची आहेत. खालील डिव्हाइस आढळली:</translation>
 <translation id="5233638681132016545">नवीन टॅब</translation>
 <translation id="5250483651202458397">स्क्रीनशॉट. बंद करण्यासाठी टॅप करा.</translation>
+<translation id="5262378156578470238">हा डाउनलोड <ph name="DATE" /> रोजी सुरू होईल तेव्हा तुम्हाला सूचना दिसेल.</translation>
 <translation id="526421993248218238">हे पेज लोड करू शकत नाही</translation>
 <translation id="5271967389191913893">डाउनलोड केली जाण्यासाठी डिव्हाइस आशय उघडू शकत नाही.</translation>
 <translation id="5292796745632149097">यांना पाठवा</translation>
@@ -910,6 +917,7 @@
 <translation id="6981982820502123353">ॲक्सेसिबिलिटी</translation>
 <translation id="6989267951144302301">डाउनलोड करता आले नाही</translation>
 <translation id="6995899638241819463">डेटा भंगामध्ये पासवर्ड उघड झाल्यास, तुम्हाला चेतावणी द्या</translation>
+<translation id="7001056293070445572">ही फाइल मोठी आहे (<ph name="FILE_SIZE" />)</translation>
 <translation id="7015203776128479407">सुरुवातीचे सिंक सेट करणे पूर्ण झाले नाही. सिंक बंद आहे.</translation>
 <translation id="7022756207310403729">ब्राउझरमध्ये उघडा</translation>
 <translation id="702463548815491781">TalkBack किंवा स्विच ॲक्सेस सुरू असताना शिफारस केलेले</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
index 7936e85..61e3e77 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Imbas</translation>
 <translation id="2518590038762162553">Dalam mod Ringkas, Chrome memuatkan halaman lebih pantas dan mengurangkan penggunaan data sehingga 60 peratus. Untuk mengoptimumkan halaman yang anda lawati, Chrome menghantar trafik web anda kepada Google. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Menghantar URL halaman yang anda lawati kepada Google</translation>
+<translation id="2527779675047087889">Sembunyikan kandungan papan keratan</translation>
 <translation id="2532336938189706096">Paparan Web</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> item dipadamkan</translation>
 <translation id="2536728043171574184">Melihat salinan luar talian halaman ini</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Artikel tentang minat anda di Chrome</translation>
 <translation id="3070005020161560471">Terjemah secara automatik</translation>
 <translation id="3089395242580810162">Buka dalam tab inkognito</translation>
+<translation id="3091010850649238832">Paparkan kandungan papan keratan</translation>
 <translation id="3098745985164956033">Sesetengah imej dihantar kepada Google untuk meningkatkan perihalan untuk anda</translation>
 <translation id="3114507951000454849">Baca berita hari ini <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Pengumuman</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Meningkatkan keselamatan untuk anda dan semua orang yang melayari web.</translation>
 <translation id="6618554661997243500">Untuk melihat tapak web dan cerita yang paling kerap anda lawati, ketik butang Skrin Utama</translation>
 <translation id="6627583120233659107">Edit folder</translation>
+<translation id="6635718764393004944">Enjin carian anda ialah <ph name="DSE" />. Jika berkenaan, lihat arahan enjin carian itu untuk memadamkan sejarah carian anda.</translation>
 <translation id="663674369910034433">Untuk mendapatkan pelbagai lagi tetapan yang berkaitan dengan privasi, keselamatan dan pengumpulan data, lihat <ph name="BEGIN_LINK1" />Penyegerakan<ph name="END_LINK1" /> dan <ph name="BEGIN_LINK2" />perkhidmatan Google<ph name="END_LINK2" />.</translation>
 <translation id="6643016212128521049">Kosongkan</translation>
 <translation id="6643649862576733715">Isih mengikut jumlah penjimatan data</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb
index acda6ddc..626f0763 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">ရှာဖွေရန်</translation>
 <translation id="2518590038762162553">'အပေါ့စားမုဒ်' တွင် Chrome သည် စာမျက်နှာများကို ပိုမိုမြန်ဆန်စွာဖွင့်ပြီး ဒေတာကို ၆၀ ရာခိုင်နှုန်းအထိ လျှော့သုံးပါသည်။ သင်ဝင်ကြည့်သည့် စာမျက်နှာများကို အကောင်းဆုံးချိန်ညှိရန် Chrome သည် သင့်ဝဘ် ဒေတာအသွားအလာများကို Google သို့ ပို့ပါသည်။ <ph name="BEGIN_LINK" />ပိုမိုလေ့လာရန်<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">သင်ကြည့်ရှုသည့် စာမျက်နှာများ၏ URL များကို Google သို့ ပို့သည်</translation>
+<translation id="2527779675047087889">ကလစ်ဘုတ်အကြောင်းအရာများကို ဖျောက်ရန်</translation>
 <translation id="2532336938189706096">ဝဘ် မြင်ကွင်း</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> ခုဖျက်ပြီးပြီ</translation>
 <translation id="2536728043171574184">ဤစာမျက်နှာ၏ အော့ဖ်လိုင်း မိတ္တူကို ကြည့်ရှုနေ</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Chrome ရှိ သင်စိတ်ဝင်စားသော ဆောင်းပါးများ</translation>
 <translation id="3070005020161560471">အလိုအလျောက် ဘာသာပြန်ပါ</translation>
 <translation id="3089395242580810162">ရုပ်ဖျက်တဘ်တွင် ဖွင့်ရန်</translation>
+<translation id="3091010850649238832">ကလစ်ဘုတ်အကြောင်းအရာများကို ပြရန်</translation>
 <translation id="3098745985164956033">သင့်အတွက် ရှင်းလင်းချက်များ ပိုကောင်းမွန်စေရန် ပုံအချို့ကို Google သို့ ပို့သည်</translation>
 <translation id="3114507951000454849">ယနေ့သတင်းများကို ဖတ်ရန် <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">ကြေညာချက်များ</translation>
@@ -864,6 +866,7 @@
 <translation id="661266467055912436">သင်နှင့် ဝဘ်ပေါ်ရှိ လူအားလုံးအတွက် လုံခြုံရေးကို တိုးမြှင့်ထားသည်။</translation>
 <translation id="6618554661997243500">သင့်အတွက် ထိပ်တန်းဝဘ်ဆိုက်များနှင့် သတင်းဆောင်းပါးများကြည့်ရန် 'ပင်မခလုတ်' ကို တို့ပါ</translation>
 <translation id="6627583120233659107">ဖိုလ်ဒါ တည်းဖြတ်ရန်</translation>
+<translation id="6635718764393004944">သင်၏ရှာဖွေရေး အင်ဂျင်သည် <ph name="DSE" /> ဖြစ်သည်။ သက်ဆိုင်မှုရှိပါက သင့်ရှာဖွေမှတ်တမ်းကို ဖျက်ရန် ၎င်း၏ညွှန်ကြားချက်များကို ကြည့်ပါ။</translation>
 <translation id="663674369910034433">ပုဂ္ဂိုလ်ရေးဆိုင်ရာ၊ လုံခြုံရေး၊ ဒေတာစုဆောင်းမှုတို့နှင့် ဆက်စပ်နေသည့် နောက်ထပ် ဆက်တင်များအတွက် <ph name="BEGIN_LINK1" />စင့်ခ်လုပ်ခြင်း<ph name="END_LINK1" /> နှင့် <ph name="BEGIN_LINK2" />Google ဝန်ဆောင်မှုများ<ph name="END_LINK2" /> ကို ကြည့်ပါ</translation>
 <translation id="6643016212128521049">ရှင်းရန်</translation>
 <translation id="6643649862576733715">သိမ်းဆည်းလိုက်သည့် ဒေတာပမာဏအလိုက် စီရန်</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
index ba15788..47d5e97 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Scannen</translation>
 <translation id="2518590038762162553">In de Lite-versie van Chrome worden pagina's sneller geladen en wordt tot wel 60 procent minder data verbruikt. Chrome stuurt je webverkeer naar Google om de pagina's te optimaliseren die je bezoekt. <ph name="BEGIN_LINK" />Meer informatie<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Hiermee worden de URL's van pagina's die je bezoekt, verzonden naar Google</translation>
+<translation id="2527779675047087889">Content op het klembord verbergen</translation>
 <translation id="2532336938189706096">Webweergave</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> items verwijderd</translation>
 <translation id="2536728043171574184">Een offline exemplaar van deze pagina bekijken</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Artikelen over je interesses in Chrome</translation>
 <translation id="3070005020161560471">Automatisch vertalen</translation>
 <translation id="3089395242580810162">Openen op incognitotabblad</translation>
+<translation id="3091010850649238832">Content op het klembord tonen</translation>
 <translation id="3098745985164956033">Sommige afbeeldingen worden naar Google gestuurd om de beschrijvingen voor je te verbeteren</translation>
 <translation id="3114507951000454849">Lees het nieuws van vandaag <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Aankondigingen</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Verbetert de beveiliging voor jou en alle andere internetgebruikers.</translation>
 <translation id="6618554661997243500">Tik op de startknop om je populaire sites en recente artikelen te bekijken</translation>
 <translation id="6627583120233659107">Map bewerken</translation>
+<translation id="6635718764393004944">Je zoekmachine is <ph name="DSE" />. Bekijk indien van toepassing de bijbehorende instructies om je zoekgeschiedenis te verwijderen.</translation>
 <translation id="663674369910034433">Bekijk <ph name="BEGIN_LINK1" />Synchronisatie<ph name="END_LINK1" /> en <ph name="BEGIN_LINK2" />Google-services<ph name="END_LINK2" /> voor meer instellingen over privacy, beveiliging en gegevensverzameling.</translation>
 <translation id="6643016212128521049">Wissen</translation>
 <translation id="6643649862576733715">Sorteren op hoeveelheid bespaarde data</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
index f0abc75..e653b557 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Skann</translation>
 <translation id="2518590038762162553">I forenklet modus laster Chrome inn sider raskere og bruker opptil 60 prosent mindre data. For å optimalisere sidene du besøker, sender Chrome nettrafikken din til Google. <ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Sender Google nettadressene til sider du besøker</translation>
+<translation id="2527779675047087889">Skjul innholdet på utklippstavlen</translation>
 <translation id="2532336938189706096">Nettvisning</translation>
 <translation id="2534155362429831547">Slettet <ph name="NUMBER_OF_ITEMS" /> elementer</translation>
 <translation id="2536728043171574184">Ser på en lokalt lagret versjon av denne siden</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Artikler om interessene dine i Chrome</translation>
 <translation id="3070005020161560471">Oversett automatisk</translation>
 <translation id="3089395242580810162">Åpne i inkognitofane</translation>
+<translation id="3091010850649238832">Vis innholdet på utklippstavlen</translation>
 <translation id="3098745985164956033">Noen bilder blir sendt til Google for å gjøre beskrivelsene bedre</translation>
 <translation id="3114507951000454849">Les dagens nyheter <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Kunngjøringer</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Øker sikkerheten for deg og alle andre på nettet.</translation>
 <translation id="6618554661997243500">For å se anbefalte nettsteder og nyhetssaker for deg, trykk på knappen Gå til startsiden</translation>
 <translation id="6627583120233659107">Rediger mappen</translation>
+<translation id="6635718764393004944">Søkemotoren din er <ph name="DSE" />. Se eventuelt instruksjonene deres for hvordan du sletter søkeloggen din.</translation>
 <translation id="663674369910034433">Se <ph name="BEGIN_LINK1" />Synkronisering<ph name="END_LINK1" /> og <ph name="BEGIN_LINK2" />Google-tjenester<ph name="END_LINK2" /> for flere innstillinger knyttet til personvern, sikkerhet og datainnsamling.</translation>
 <translation id="6643016212128521049">Tøm</translation>
 <translation id="6643649862576733715">Sortér etter mengden data som er spart</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
index 923c9eaa..96c1415c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
@@ -247,6 +247,7 @@
 <translation id="2612676031748830579">କାର୍ଡ ସଂଖ୍ୟା</translation>
 <translation id="2625189173221582860">ପାସ୍‍ୱର୍ଡ କପି ହୋଇଛି</translation>
 <translation id="2631006050119455616">ସେଭ୍‌ ହୋଇଗଲା</translation>
+<translation id="2645657967708199252">ଆପଣଙ୍କ <ph name="CONNECTION_TYPE" /> ସଂଯୋଗ ଆପଣଙ୍କର ଡାଉନଲୋଡକୁ ସ୍ଲୋ କରିପାରେ</translation>
 <translation id="2647434099613338025">ଭାଷା ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="2650751991977523696">ଫାଇଲ୍‌ଟି ପୁଣି ଡାଉନ୍‌ଲୋଡ୍ କରିବେ?</translation>
 <translation id="2651091186440431324">{FILE_COUNT,plural, =1{#ଟି ଅଡିଓ ଫାଇଲ୍‌}other{#ଟି ଅଡିଓ ଫାଇଲ୍‌}}</translation>
@@ -259,6 +260,7 @@
 <translation id="2718846868787000099">ଆପଣଙ୍କ ପସନ୍ଦର ଭାଷାଗୁଡ଼ିକରେ ବିଷୟବସ୍ତୁ ଦେଖାଇବା ପାଇଁ, ଆପଣ ଭିଜିଟ୍ କରୁଥିବା ସାଇଟଗୁଡ଼ିକ ଆପଣଙ୍କ ପସନ୍ଦଗୁଡ଼ିକୁ ଦେଖିପାରିବ</translation>
 <translation id="2723001399770238859">ଅଡିଓ</translation>
 <translation id="2728754400939377704">ସାଇଟ୍ ଅନୁସାରେ ସଜାନ୍ତୁ</translation>
+<translation id="2739256783402597439">2G</translation>
 <translation id="2744248271121720757">ତତ୍‍କ୍ଷଣାତ୍‍ ସର୍ଚ୍ଚ କରିବାକୁ କିମ୍ବା ସେହି ସମ୍ବନ୍ଧିତ କାର୍ଯ୍ୟ ଦେଖିବାକୁ ଏକ ଶଦ୍ଦ ଟାପ୍‍ କରନ୍ତୁ</translation>
 <translation id="2760989362628427051">ଆପଣଙ୍କ ଡିଭାଇସ୍‌ର ଗାଢା ଥିମ୍ ବା ବ୍ୟାଟେରୀ ସେଭର୍ ଚାଲୁଥିବା ସମୟରେ ଗାଢା ଥିମ୍ ଚାଲୁ କରନ୍ତୁ</translation>
 <translation id="2762000892062317888">ଏହିକ୍ଷଣି</translation>
@@ -435,6 +437,7 @@
 <translation id="3943557322767080599">ଆପଣ ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ ସାଇନ୍ ଇନ୍ କରିବା ବେଳେ Chrome ସାଇନ୍-ଇନ୍ ପ୍ରମ୍ପ୍ଟଗୁଡ଼ିକୁ ଦେଖାନ୍ତୁ</translation>
 <translation id="395206256282351086">ସନ୍ଧାନ ଏବଂ ସାଇଟ୍‍ର ପରାମର୍ଶଗୁଡ଼ିକ ଅକ୍ଷମ କରାଗଲା</translation>
 <translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{ଯେତେବେଳେ ପ୍ରସ୍ତୁତ ହୋ‍ଇଯିବ, ସେତେବେଳେ Chrome ଆପଣଙ୍କର ପୃଷ୍ଠା ଲୋଡ୍‌ କରିବ}other{ଯେତେବେଳେ ପ୍ରସ୍ତୁତ ହୋ‍ଇଯିବ, ସେତେବେଳେ Chrome ଆପଣଙ୍କର ପୃଷ୍ଠା ଲୋଡ୍‌ କରିବ}}</translation>
+<translation id="3962957115499249330">ୱାଇ-ଫାଇରେ ଏହି ଡାଉନଲୋଡ୍ ଆରମ୍ଭ ହେଲେ ଆପଣ ଏକ ବିଜ୍ଞପ୍ତି ଦେଖିବେ।</translation>
 <translation id="3963007978381181125">ପାସଫ୍ରେଜ୍ ଏନକ୍ରିପ୍ସନ୍, Google Payରୁ ପେମେଣ୍ଟ ପଦ୍ଧତି ଓ ଠିକଣାଗୁଡ଼ିକୁ ଅନ୍ତର୍ଭୁକ୍ତ କରେ ନାହିଁ। ଆପଣଙ୍କ ଏନ୍‌କ୍ରିପ୍ଟ ହୋଇଥିବା ଡାଟାକୁ କେବଳ ଆପଣଙ୍କ ପାସ୍‍‍ଫ୍ରେଜ୍ ଥିବା ଜଣେ ବ୍ୟକ୍ତି ପଢ଼ିପାରିବେ। ଏହି ପାସଫ୍ରେଜ୍ Googleକୁ ପଠାଯାଏ ନାହିଁ କିମ୍ବା Google.ଦ୍ୱାରା ଷ୍ଟୋର୍ କରାଯାଏ ନାହିଁ। ଯଦି ଆପଣ ଆପଣଙ୍କର ପାସଫ୍ରେଜ୍ ଭୁଲିଯାଇଛନ୍ତି କିମ୍ବା ଏହି ସେଟିଂ ପରିବର୍ତ୍ତନ କରିବାକୁ ଚାହୁଁଛନ୍ତି, ତେବେ ଆପଣଙ୍କୁ ସିଙ୍କ ରିସେଟ୍ କରିବାକୁ ହେବ। <ph name="BEGIN_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK" /></translation>
 <translation id="3969142555815019568">Chrome ଆପଣଙ୍କ ପାସୱାର୍ଡଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରିପାରିବ ନାହିଁ</translation>
 <translation id="3974987681202239636"><ph name="APP_NAME" /> Chromeରେ ଖୋଲିବ। ଜାରି ରଖିବା ଦ୍ୱାରା, ଆପଣ <ph name="BEGIN_LINK1" />Google ସେବାର ସର୍ତ୍ତାବଳୀ<ph name="END_LINK1" /> ଏବଂ <ph name="BEGIN_LINK2" />Google Chrome ଏବଂ Chrome OS ଅତିରିକ୍ତ ସେବାର ସର୍ତ୍ତାବଳୀ<ph name="END_LINK2" /> ସହିତ ସହମତ ହେଉଛନ୍ତି। <ph name="BEGIN_LINK3" />Family Link ମାଧ୍ୟମରେ ପରିଚାଳନା କରାଯାଇଥିବା Google ଆକାଉଣ୍ଟଗୁଡ଼ିକ ପାଇଁ ଗୋପନୀୟତା ନୋଟିସ୍<ph name="END_LINK3" /> ମଧ୍ୟ ଲାଗୁ ହୋଇଥାଏ।</translation>
@@ -478,6 +481,7 @@
 <translation id="4256782883801055595">ମୁକ୍ତ ଉତ୍ସ ଲାଇସେନ୍ସ</translation>
 <translation id="4263656433980196874">Assistantର ଭଏସ୍ ମାଧ୍ୟମରେ ସନ୍ଧାନ ପାଇଁ ସମ୍ମତିର ui ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନରେ ଖୋଲିଛି</translation>
 <translation id="4269820728363426813">ଲିଙ୍କ୍ ଠିକଣା କପି କରନ୍ତୁ</translation>
+<translation id="4290281343757112331">ଏହା ପରିବର୍ତ୍ତେ ପରେ ଡାଉନଲୋଡ୍ କରିବେ କି?</translation>
 <translation id="4298388696830689168">ଲିଙ୍କ୍‌ ହୋ‍ଇଥିବା ସାଇଟ୍‍ଗୁଡ଼ିକ</translation>
 <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="4307992518367153382">ଆଧାରଗୁଡିକ</translation>
@@ -540,6 +544,7 @@
 <translation id="4698034686595694889"><ph name="APP_NAME" /> ମାଧ୍ୟମରେ ଅଫ୍‌ଲାଇନ୍‌ରେ ଦେଖନ୍ତୁ</translation>
 <translation id="4699172675775169585">କେଚ୍‍ ଛବି ଏବଂ ଫାଇଲ୍‌</translation>
 <translation id="4714588616299687897">ଆପଣଙ୍କ ଡାଟାର 60% ପର୍ଯ୍ୟନ୍ତ ସେଭ୍ କରନ୍ତୁ</translation>
+<translation id="4716066120200945007">ଅନୁସରଣ କରୁଛନ୍ତି</translation>
 <translation id="4719927025381752090">ଅନୁବାଦ କରିବାକୁ ପ୍ରସ୍ତାବ ଦିଅନ୍ତୁ</translation>
 <translation id="4720023427747327413"><ph name="PRODUCT_NAME" />ରେ ଖୋଲନ୍ତୁ</translation>
 <translation id="4720982865791209136">Chromeକୁ ଉନ୍ନତ କରିବାରେ ସହାୟତା କରନ୍ତୁ। <ph name="BEGIN_LINK" />ସର୍ବେକ୍ଷଣରେ ଭାଗ ନିଅନ୍ତୁ<ph name="END_LINK" /></translation>
@@ -620,6 +625,7 @@
 <translation id="5191251636205085390">ତୃତୀୟ-ପକ୍ଷ କୁକୀଗୁଡ଼ିକୁ ପରିବର୍ତ୍ତନ କରିବାକୁ ଲକ୍ଷ୍ୟ ରଖୁଥିବା ନୂଆ ଟେକ୍ନୋଲୋଜିଗୁଡ଼ିକ ବିଷୟରେ ଜାଣନ୍ତୁ ଏବଂ ସେଗୁଡ଼ିକୁ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ</translation>
 <translation id="5193988420012215838">ଆପଣଙ୍କର କ୍ଲିପ୍‌ବୋର୍ଡକୁ କପି କରାଯାଇଛି</translation>
 <translation id="5199929503336119739">ୱର୍କ ପ୍ରୋଫାଇଲ୍‌</translation>
+<translation id="5201464744567315552"><ph name="TIME" />ରେ ଏହି ଡାଉନଲୋଡ୍ ଆରମ୍ଭ ହେଲେ ଆପଣ ଏକ ବିଜ୍ଞପ୍ତି ଦେଖିବେ।</translation>
 <translation id="5204967432542742771">ପାସ୍‌ୱର୍ଡ ଲେଖନ୍ତୁ</translation>
 <translation id="5210286577605176222">ପୂର୍ବବର୍ତ୍ତୀ ଟାବ୍‍କୁ ଯାଆନ୍ତୁ</translation>
 <translation id="5210365745912300556">ଟ୍ୟାବ୍ ବନ୍ଦ କରନ୍ତୁ</translation>
@@ -630,6 +636,7 @@
 <translation id="5230560987958996918"><ph name="SITE" /> ଆଖପାଖର ବ୍ଲୁଟୁଥ୍ ଡିଭାଇସ୍‌ଗୁଡ଼ିକୁ ସ୍କାନ୍ କରିବାକୁ ଚାହୁଁଛି। ନିମ୍ନୋକ୍ତ ଡିଭାଇସ୍‌ଗୁଡ଼ିକ ମିଳିଛି:</translation>
 <translation id="5233638681132016545">ନୂତନ ଟ୍ୟାବ୍</translation>
 <translation id="5250483651202458397">ସ୍କ୍ରିନସଟ୍। ବନ୍ଦ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ।</translation>
+<translation id="5262378156578470238"><ph name="DATE" />ରେ ଏହି ଡାଉନଲୋଡ୍ ଆରମ୍ଭ ହେଲେ ଆପଣ ଏକ ବିଜ୍ଞପ୍ତି ଦେଖିବେ।</translation>
 <translation id="526421993248218238">ଏହି ପୃଷ୍ଠା ଲୋଡ୍‌ କରାଯାଇପାରିବ ନାହିଁ</translation>
 <translation id="5271967389191913893">ଡାଉନ୍‌ଲୋଡ୍‍ ହେବାକୁ ଥିବା ବିଷୟବସ୍ତୁକୁ ଡିଭାଇସ୍‌ ଖୋଲିପାରିବ ନାହିଁ।</translation>
 <translation id="5292796745632149097">ଏହାକୁ ପଠାନ୍ତୁ</translation>
@@ -910,6 +917,7 @@
 <translation id="6981982820502123353">ଆକ୍ସେସିବିଲିଟୀ</translation>
 <translation id="6989267951144302301">ଡାଉନଲୋଡ୍ କରିହେଲା ନାହିଁ</translation>
 <translation id="6995899638241819463">ଯଦି ଡାଟା ଚୋରି ଯୋଗୁଁ ପାସ୍‌ୱାର୍ଡଗୁଡ଼ିକ ବିପଦରେ ପଡ଼ିଯାଏ, ତେବେ ଏହା ଆପଣଙ୍କୁ ଚେତାବନୀ ଦେଇଥାଏ</translation>
+<translation id="7001056293070445572">ଏହି ଫାଇଲଟି ବଡ଼ ଅଟେ (<ph name="FILE_SIZE" />)</translation>
 <translation id="7015203776128479407">ପ୍ରାରମ୍ଭିକ ସିଙ୍କ୍ ସେଟ୍‌ଅପ୍ ସମାପ୍ତ ହୋଇନାହିଁ। ସିଙ୍କ୍ ବନ୍ଦ ଅଛି</translation>
 <translation id="7022756207310403729">ବ୍ରାଉଜର୍‌ରେ ଖୋଲନ୍ତୁ</translation>
 <translation id="702463548815491781">TalkBack କିମ୍ବା ଆକ୍ସେସ୍ ପରିବର୍ତ୍ତନ ଚାଲୁ ଥିଲେ ଏହା କରିବାକୁ ସୁପାରିଶ୍ କରାଯାଇଛି</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
index bb83576..dc2d335 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Skanuj</translation>
 <translation id="2518590038762162553">W wersji uproszczonej Chrome szybciej ładuje strony, używając nawet o 60% mniej danych. Aby optymalizować strony, które odwiedzasz, Chrome przesyła informacje o historii przeglądania do Google. <ph name="BEGIN_LINK" />Więcej informacji<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Adresy URL odwiedzanych stron będą wysyłane do Google</translation>
+<translation id="2527779675047087889">Ukryj zawartość schowka</translation>
 <translation id="2532336938189706096">Widok sieci</translation>
 <translation id="2534155362429831547">Usunięte elementy: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Oglądasz kopię offline tej strony</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Artykuły dopasowane do Twoich zainteresowań w Chrome</translation>
 <translation id="3070005020161560471">Tłumacz automatycznie</translation>
 <translation id="3089395242580810162">Otwórz w karcie incognito</translation>
+<translation id="3091010850649238832">Pokaż zawartość schowka</translation>
 <translation id="3098745985164956033">Niektóre obrazy są wysyłane do Google, żebyśmy mogli dostarczać Ci lepsze opisy</translation>
 <translation id="3114507951000454849">Przeczytaj dzisiejsze wiadomości <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Komunikaty</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Zwiększa bezpieczeństwo Twoje i pozostałych użytkowników internetu.</translation>
 <translation id="6618554661997243500">Aby zobaczyć najciekawsze strony i artykuły dla Ciebie, naciśnij przycisk strony głównej</translation>
 <translation id="6627583120233659107">Edytuj folder</translation>
+<translation id="6635718764393004944">Twoja wyszukiwarka to <ph name="DSE" />. Jeśli chcesz usunąć historię wyszukiwania, w razie potrzeby zajrzyj do instrukcji tej usługi.</translation>
 <translation id="663674369910034433">Więcej ustawień związanych z prywatnością, bezpieczeństwem i zbieraniem danych znajdziesz w sekcjach <ph name="BEGIN_LINK1" />Synchronizacja<ph name="END_LINK1" /> i <ph name="BEGIN_LINK2" />Usługi Google<ph name="END_LINK2" />.</translation>
 <translation id="6643016212128521049">Wyczyść</translation>
 <translation id="6643649862576733715">Sortuj według ilości zaoszczędzonych danych</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
index 25fe702..d1c741d9 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Verificar</translation>
 <translation id="2518590038762162553">Com o Modo Lite, as páginas são carregadas mais rapidamente no Chrome, e há uma economia de dados de até 60%. Para otimizar as páginas visitadas, o Chrome envia seu tráfego da Web para o Google. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Envia URLs das páginas que você visita para o Google</translation>
+<translation id="2527779675047087889">Ocultar conteúdo da área de transferência</translation>
 <translation id="2532336938189706096">Visualização na Web</translation>
 <translation id="2534155362429831547">Itens excluídos: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Vendo uma cópia off-line desta página</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Artigos sobre seus interesses no Chrome</translation>
 <translation id="3070005020161560471">Traduzir automaticamente</translation>
 <translation id="3089395242580810162">Abrir em guia anônima</translation>
+<translation id="3091010850649238832">Mostrar conteúdo da área de transferência</translation>
 <translation id="3098745985164956033">Algumas imagens são enviadas ao Google para que possamos melhorar as descrições</translation>
 <translation id="3114507951000454849">Leia as notícias de hoje <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Anúncios</translation>
@@ -866,6 +868,7 @@
 <translation id="661266467055912436">Melhora a segurança para você e para todos na Web.</translation>
 <translation id="6618554661997243500">Para ver os principais sites e matérias para você, toque no botão "Início"</translation>
 <translation id="6627583120233659107">Editar pasta</translation>
+<translation id="6635718764393004944">Seu mecanismo de pesquisa é o <ph name="DSE" />. Veja as instruções específicas dele para excluir o histórico de pesquisa, se aplicável.</translation>
 <translation id="663674369910034433">Para ver mais configurações relacionadas à privacidade, segurança e coleta de dados, acesse <ph name="BEGIN_LINK2" />Serviços do Google<ph name="END_LINK2" /> e de <ph name="BEGIN_LINK1" />sincronização<ph name="END_LINK1" /></translation>
 <translation id="6643016212128521049">Limpar</translation>
 <translation id="6643649862576733715">Classificar pelo volume de dados economizados</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
index c00d73f..4324279 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Analisar</translation>
 <translation id="2518590038762162553">No Modo Lite, o Chrome carrega páginas mais rapidamente e utiliza até menos 60 por cento de dados. Para otimizar as páginas que vista, o Chrome envia o seu tráfego da Web para a Google. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Envia para a Google os URLs das páginas que visita.</translation>
+<translation id="2527779675047087889">Ocultar conteúdos de Copiar e colar</translation>
 <translation id="2532336938189706096">Visualização na Web</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> itens eliminados</translation>
 <translation id="2536728043171574184">Visualização de uma cópia offline desta página</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Artigos acerca dos seus interesses no Chrome.</translation>
 <translation id="3070005020161560471">Traduzir automaticamente</translation>
 <translation id="3089395242580810162">Abrir no separador anónimo</translation>
+<translation id="3091010850649238832">Mostrar conteúdos de Copiar e colar</translation>
 <translation id="3098745985164956033">Algumas imagens são enviadas para a Google para melhorar as descrições.</translation>
 <translation id="3114507951000454849">Leia as notícias de hoje <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Anúncios</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Melhora a segurança para si e todas as pessoas na Web.</translation>
 <translation id="6618554661997243500">Para ver os sites e as notícias principais para si, toque no botão página inicial.</translation>
 <translation id="6627583120233659107">Editar pasta</translation>
+<translation id="6635718764393004944">O seu motor de pesquisa é o <ph name="DSE" />. Se aplicável, veja as respetivas instruções para eliminar o seu histórico de pesquisas.</translation>
 <translation id="663674369910034433">Para obter mais definições relacionadas com privacidade, segurança e recolha de dados, consulte <ph name="BEGIN_LINK1" />Sincronização<ph name="END_LINK1" /> e <ph name="BEGIN_LINK2" />Serviços Google<ph name="END_LINK2" />.</translation>
 <translation id="6643016212128521049">Limpar</translation>
 <translation id="6643649862576733715">Ordenar por quantidade de dados poupados</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
index e2b8218..27acc026 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Scanează</translation>
 <translation id="2518590038762162553">În modul Lite, Chrome încarcă mai repede paginile și folosește cu până la 60 % mai puține date. Pentru a optimiza paginile pe care le accesezi, Chrome trimite traficul tău web la Google. <ph name="BEGIN_LINK" />Află mai multe<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Trimite la Google adresele URL ale paginilor pe care le accesezi</translation>
+<translation id="2527779675047087889">Ascunde conținutul clipboardului</translation>
 <translation id="2532336938189706096">Vizualizare pe web</translation>
 <translation id="2534155362429831547">Elemente șterse: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Se afișează o versiune offline a acestei pagini</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Articole despre ceea ce te interesează în Chrome</translation>
 <translation id="3070005020161560471">Tradu automat</translation>
 <translation id="3089395242580810162">Deschide într-o filă incognito</translation>
+<translation id="3091010850649238832">Afișează conținutul clipboardului</translation>
 <translation id="3098745985164956033">Unele imagini sunt trimise la Google pentru îmbunătățirea descrierilor</translation>
 <translation id="3114507951000454849">Citește știrile de azi <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Anunțuri</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Îmbunătățește securitatea pe web pentru tine și toți ceilalți.</translation>
 <translation id="6618554661997243500">Pentru a vedea principalele site-uri și subiecte pentru tine, atinge butonul ecran de pornire</translation>
 <translation id="6627583120233659107">Editați dosarul</translation>
+<translation id="6635718764393004944">Motorul tău de căutare este <ph name="DSE" />. Dacă este cazul, consultă instrucțiunile pentru a șterge istoricul căutărilor.</translation>
 <translation id="663674369910034433">Pentru mai multe setări privind confidențialitatea, securitatea și colectarea datelor, consultă <ph name="BEGIN_LINK1" />Sincronizarea<ph name="END_LINK1" /> și <ph name="BEGIN_LINK2" />Serviciile Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Șterge</translation>
 <translation id="6643649862576733715">Sortează după volumul de date salvate</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
index 5a2ba42..eaccee36 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Искать</translation>
 <translation id="2518590038762162553">В упрощенном режиме Chrome быстрее загружает страницы и экономит до 60 % трафика. Чтобы оптимизировать страницы, которые вы посещаете, Chrome отправляет ваш интернет-трафик в Google. <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Отправлять URL посещенных страниц в Google</translation>
+<translation id="2527779675047087889">Скрыть содержимое буфера обмена</translation>
 <translation id="2532336938189706096">Веб-версия</translation>
 <translation id="2534155362429831547">Удалено записей: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Офлайн-копия страницы</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Прочитайте в Chrome статьи, подобранные с учетом ваших интересов.</translation>
 <translation id="3070005020161560471">Переводить автоматически</translation>
 <translation id="3089395242580810162">Открыть в режиме инкогнито</translation>
+<translation id="3091010850649238832">Показать содержимое буфера обмена</translation>
 <translation id="3098745985164956033">Передавать некоторые изображения в Google, чтобы улучшить их описание</translation>
 <translation id="3114507951000454849">Будьте в курсе новостей <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Оповещения</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Делает Интернет безопаснее для вас и других пользователей.</translation>
 <translation id="6618554661997243500">Нажмите эту кнопку, чтобы увидеть интересные вам сайты и новости</translation>
 <translation id="6627583120233659107">Изменить папку</translation>
+<translation id="6635718764393004944">Ваша поисковая система – <ph name="DSE" />. Если возможно, следуйте инструкциям по удалению истории поиска для этой системы.</translation>
 <translation id="663674369910034433">Другие настройки, связанные с конфиденциальностью, безопасностью и сбором данных, можно найти в разделах <ph name="BEGIN_LINK1" />Синхронизация<ph name="END_LINK1" /> и <ph name="BEGIN_LINK2" />Сервисы Google<ph name="END_LINK2" />.</translation>
 <translation id="6643016212128521049">Удалить</translation>
 <translation id="6643649862576733715">Сортировать по объему сохраненного трафика</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
index a4b4319..fd943cc 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">ස්කෑන් කරන්න</translation>
 <translation id="2518590038762162553">සැහැල්ලු ප්‍රකාරය තුළ, Chrome වේගයෙන් පිටු පූරණය කර සියයට 60ක් දක්වා අඩුවෙන් දත්ත භාවිත කරයි. ඔබ පිවිසෙන පිටු ප්‍රශස්ත කිරීම සඳහා, Chrome ඔබේ වෙබ් ගමනාගමනය Google වෙත යවයි. <ph name="BEGIN_LINK" />තව දැන ගන්න<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Google වෙත ඔබ පිවිසෙන පිටු URL යවයි</translation>
+<translation id="2527779675047087889">පසුරු පුවරු අන්තර්ගතය සඟවන්න</translation>
 <translation id="2532336938189706096">ජාල දර්ශනය</translation>
 <translation id="2534155362429831547">අයිතම <ph name="NUMBER_OF_ITEMS" />ක් මකන ලදි</translation>
 <translation id="2536728043171574184">මෙම පිටුවෙහි නොබැඳි පිටපතක් බලමින්</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Chrome හි ඔබේ රුචිකත්ව ගැන ලිපි</translation>
 <translation id="3070005020161560471">ස්වයංක්‍රියව පරිවර්තනය කරන්න</translation>
 <translation id="3089395242580810162">අප්‍රකට පටිත්තක විවෘත කරන්න</translation>
+<translation id="3091010850649238832">පසුරු පුවරු අන්තර්ගතය පෙන්වන්න</translation>
 <translation id="3098745985164956033">ඔබ සඳහා විස්තර වැඩි දියුණු කිරීම සඳහා සමහර පින්තූර Google වෙත යවනු ලැබේ</translation>
 <translation id="3114507951000454849">අද දවසේ <ph name="NEWS_ICON" /> පුවත් කියවන්න</translation>
 <translation id="3123734510202723619">නිවේදන</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">ඔබේ සහ වෙබය මත සියලු දෙනාගේම ආරක්‍ෂාව වැඩිදියුණු කරයි.</translation>
 <translation id="6618554661997243500">ඔබ සඳහා ඉහළම අඩවි සහ කථාන්දර බැලීමට, මුල් පිටු බොත්තම තට්ටු කරන්න</translation>
 <translation id="6627583120233659107">ෆෝල්ඩරය සංස්කරණය කරන්න</translation>
+<translation id="6635718764393004944">ඔබගේ සෙවීම් යන්ත්‍රය වන්නේ <ph name="DSE" />. අදාළ නම්, ඔබගේ සෙවීම් ඉතිහාසය මැකීමට ඔවුන්ගේ උපදෙස් බලන්න.</translation>
 <translation id="663674369910034433">රහස්‍යතාව, ආරක්ෂාව, සහ දත්ත රැස් කිරීමට අදාළ තවත් සැකසීම් සඳහා, <ph name="BEGIN_LINK1" />සමමුහුර්තකරණය<ph name="END_LINK1" /> සහ <ph name="BEGIN_LINK2" />Google සේවා<ph name="END_LINK2" /> බලන්න</translation>
 <translation id="6643016212128521049">මකන්න</translation>
 <translation id="6643649862576733715">සුරැකි දත්ත ප්‍රමාණයේ එකතුව අනුව අනුපිළිවෙලට සකසන්න</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
index 6c965b01..8aa4013 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Vyhľadať</translation>
 <translation id="2518590038762162553">V zjednodušenom režime načítava Chrome stránky rýchlejšie a využíva až o 60 percent menej dát. Chrome odosiela údaje o vašej návštevnosti webu do Googlu, ktorý na základe nich optimalizuje vami navštevované stránky. <ph name="BEGIN_LINK" />Ďalšie informácie<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Odosiela Googlu webové adresy navštívených stránok</translation>
+<translation id="2527779675047087889">Skryť obsah schránky</translation>
 <translation id="2532336938189706096">Webové zobrazenie</translation>
 <translation id="2534155362429831547">Odstránené položky: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Zobrazuje sa offline kópia tejto stránky</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Články o vašich záujmoch v Chrome</translation>
 <translation id="3070005020161560471">Automaticky prekladať</translation>
 <translation id="3089395242580810162">Otvoriť na karte inkognito</translation>
+<translation id="3091010850649238832">Zobraziť obsah schránky</translation>
 <translation id="3098745985164956033">Niektoré obrázky sa na zlepšovanie popisov pre vás odosielajú Googlu</translation>
 <translation id="3114507951000454849">Prečítajte si dnešné správy <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Oznámenia</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Zvyšuje zabezpečenie na internete pre vás aj ostatných.</translation>
 <translation id="6618554661997243500">Ak si chcete zobraziť najobľúbenejšie weby a odporúčané správy, klepnite na tlačidlo plochy</translation>
 <translation id="6627583120233659107">Upraviť priečinok</translation>
+<translation id="6635718764393004944">Používate vyhľadávač <ph name="DSE" />. V náležitých prípadoch si v ňom prečítajte pokyny na odstránenie histórie vyhľadávania.</translation>
 <translation id="663674369910034433">Ďalšie nastavenia týkajúce sa ochrany súkromia, zabezpečenia a zhromažďovania údajov nájdete v sekciách <ph name="BEGIN_LINK1" />Synchronizácia<ph name="END_LINK1" /> a <ph name="BEGIN_LINK2" />služby Googlu<ph name="END_LINK2" />.</translation>
 <translation id="6643016212128521049">Vymazať</translation>
 <translation id="6643649862576733715">Zoradiť podľa množstva ušetrených dát</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
index df2a399..39c7335 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Išči</translation>
 <translation id="2518590038762162553">Chrome v lahkem načinu naloži strani hitreje in uporabi do 60 odstotkov manj podatkov. Chrome zaradi optimiziranja strani, ki jih obiščete, Googlu pošlje vaš spletni promet. <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Googlu pošlje URL-je strani, ki jih obiščete</translation>
+<translation id="2527779675047087889">Skrivanje vsebine odložišča</translation>
 <translation id="2532336938189706096">Spletni pogled</translation>
 <translation id="2534155362429831547">Št. izbrisanih elementov: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Ogled kopije te strani za način brez povezave.</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Članki na temo vaših zanimanj v Chromu</translation>
 <translation id="3070005020161560471">Samodejno prevedi</translation>
 <translation id="3089395242580810162">Odpri v anonimnem zavihku</translation>
+<translation id="3091010850649238832">Prikaz vsebine odložišča</translation>
 <translation id="3098745985164956033">Nekatere slike so poslane Googlu zaradi izboljšanja opisov.</translation>
 <translation id="3114507951000454849">Preberite današnje novice <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Obvestila</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Izboljšuje varnost za vas in vse druge v spletu.</translation>
 <translation id="6618554661997243500">Če si želite ogledati najbolj priljubljena spletna mesta in članke, se dotaknite gumba za domačo stran</translation>
 <translation id="6627583120233659107">Uredi mapo</translation>
+<translation id="6635718764393004944">Vaš iskalnik je <ph name="DSE" />. Če je mogoče, si oglejte navodila iskalnika glede izbrisa zgodovine iskanja.</translation>
 <translation id="663674369910034433">Če vas zanima več nastavitev, povezanih z zasebnostjo, varnostjo in zbiranjem podatkov, si oglejte razdelka <ph name="BEGIN_LINK1" />Sinhronizacija<ph name="END_LINK1" /> in <ph name="BEGIN_LINK2" />Googlove storitve<ph name="END_LINK2" />.</translation>
 <translation id="6643016212128521049">Izbriši</translation>
 <translation id="6643649862576733715">Razvrsti glede na prihranek pri količini prenesenih podatkov</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb
index bf67435f..5afb2fb 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Skano</translation>
 <translation id="2518590038762162553">Në "Modalitetin e lehtë", Chrome i ngarkon faqet më shpejt dhe përdor deri në 60 përqind më pak të dhëna. Për të optimizuar faqet që viziton, Chrome e dërgon trafikun tënd të uebit te Google. <ph name="BEGIN_LINK" />Mëso më shumë<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Dërgon te Google URL-të e faqeve që ti viziton</translation>
+<translation id="2527779675047087889">Fshih përmbajtjet e kujtesës së fragmenteve</translation>
 <translation id="2532336938189706096">Pamja e uebit</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> artikuj të fshirë</translation>
 <translation id="2536728043171574184">Po shikon një kopje jashtë linje të kësaj faqeje</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Artikuj rreth interesave të tua në Chrome</translation>
 <translation id="3070005020161560471">Përkthe automatikisht</translation>
 <translation id="3089395242580810162">Hape në skedë "të fshehtë"</translation>
+<translation id="3091010850649238832">Shfaq përmbajtjet e kujtesës së fragmenteve</translation>
 <translation id="3098745985164956033">Disa imazhet i dërgohen Google për të përmirësuar përshkrimet për ty</translation>
 <translation id="3114507951000454849">Lexo lajmet e sotme <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Njoftime</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Përmirëson sigurinë për ty dhe këdo në ueb.</translation>
 <translation id="6618554661997243500">Për të parë sajtet kryesore dhe historitë për ty, trokit te butoni "Kreu"</translation>
 <translation id="6627583120233659107">Modifiko dosjen</translation>
+<translation id="6635718764393004944">Motori yt i kërkimit është <ph name="DSE" />. Nëse zbatohet, shiko udhëzimet për të fshirë historikun tënd të kërkimit.</translation>
 <translation id="663674369910034433">Për cilësime të mëtejshme në lidhje me privatësinë, sigurinë dhe mbledhjen e të dhënave, shih <ph name="BEGIN_LINK1" />Shinkronizimi <ph name="END_LINK1" /> dhe <ph name="BEGIN_LINK2" />Shërbimet e Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Pastro</translation>
 <translation id="6643649862576733715">Rendit sipas sasisë së të dhënave të ruajtura</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb
index e2721b9..2f13c7e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Skeniraj</translation>
 <translation id="2518590038762162553">U Lite režimu Chrome učitava stranice brže i koristi i do 60 procenata manje podataka. Da bi optimizovao stranice koje posećujete, Chrome šalje Google-u vaš saobraćaj na vebu. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">URL-ovi stranica koje posećujete se šalju Google-u</translation>
+<translation id="2527779675047087889">Sakrij sadržaj privremene memorije</translation>
 <translation id="2532336938189706096">Veb-prikaz</translation>
 <translation id="2534155362429831547">Izbrisanih stavki: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Pregledate oflajn kopiju ove stranice</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Članci o vašim interesovanjima u Chrome-u</translation>
 <translation id="3070005020161560471">Automatski prevodi</translation>
 <translation id="3089395242580810162">Otvori na kartici bez arhiv.</translation>
+<translation id="3091010850649238832">Prikaži sadržaj privremene memorije</translation>
 <translation id="3098745985164956033">Neke slike se šalju Google-u radi poboljšanja opisa</translation>
 <translation id="3114507951000454849">Čitajte današnje vesti <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Saopštenja</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Poboljšava bezbednost za vas i druge na vebu.</translation>
 <translation id="6618554661997243500">Da biste videli sajtove koje najčešće posećujete i vesti koje najčešće čitate, dodirnite dugme Početak</translation>
 <translation id="6627583120233659107">Izmeni direktorijum</translation>
+<translation id="6635718764393004944">Vaš pretraživač je <ph name="DSE" />. Ako je to primenjivo, pročitajte njegovo uputstvo za brisanje istorije pretrage.</translation>
 <translation id="663674369910034433">Više podešavanja u vezi sa privatnošću, bezbednošću i prikupljanjem podataka potražite u odeljku <ph name="BEGIN_LINK1" />Sinhronizacija<ph name="END_LINK1" /> i <ph name="BEGIN_LINK2" />Google usluge<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Obriši</translation>
 <translation id="6643649862576733715">Sortiraj po količini ušteđenih podataka</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
index 341eb650..d47aba2 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Скенирај</translation>
 <translation id="2518590038762162553">У Lite режиму Chrome учитава странице брже и користи и до 60 процената мање података. Да би оптимизовао странице које посећујете, Chrome шаље Google-у ваш саобраћај на вебу. <ph name="BEGIN_LINK" />Сазнајте више<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">URL-ови страница које посећујете се шаљу Google-у</translation>
+<translation id="2527779675047087889">Сакриј садржај привремене меморије</translation>
 <translation id="2532336938189706096">Веб-приказ</translation>
 <translation id="2534155362429831547">Избрисаних ставки: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Прегледате офлајн копију ове странице</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Чланци о вашим интересовањима у Chrome-у</translation>
 <translation id="3070005020161560471">Аутоматски преводи</translation>
 <translation id="3089395242580810162">Отвори на картици без архив.</translation>
+<translation id="3091010850649238832">Прикажи садржај привремене меморије</translation>
 <translation id="3098745985164956033">Неке слике се шаљу Google-у ради побољшања описа</translation>
 <translation id="3114507951000454849">Читајте данашње вести <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Саопштења</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Побољшава безбедност за вас и друге на вебу.</translation>
 <translation id="6618554661997243500">Да бисте видели сајтове које најчешће посећујете и вести које најчешће читате, додирните дугме Почетак</translation>
 <translation id="6627583120233659107">Измени директоријум</translation>
+<translation id="6635718764393004944">Ваш претраживач је <ph name="DSE" />. Ако је то примењиво, прочитајте његово упутство за брисање историје претраге.</translation>
 <translation id="663674369910034433">Више подешавања у вези са приватношћу, безбедношћу и прикупљањем података потражите у одељку <ph name="BEGIN_LINK1" />Синхронизација<ph name="END_LINK1" /> и <ph name="BEGIN_LINK2" />Google услуге<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Обриши</translation>
 <translation id="6643649862576733715">Сортирај по количини уштеђених података</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
index 5321684..c9125d91 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Sök</translation>
 <translation id="2518590038762162553">I begränsat läge läses sidorna in snabbare och dataförbrukningen minskar med upp till 60 procent. Webbtrafiken skickas till Google från Chrome för att optimera sidorna du besöker. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Skickar webbadresserna till sidor du besöker till Google</translation>
+<translation id="2527779675047087889">Dölj innehållet i Urklipp</translation>
 <translation id="2532336938189706096">Webbvy</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> objekt har tagits bort</translation>
 <translation id="2536728043171574184">En offlinekopia av sidan visas</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Artiklar om dina intressen i Chrome</translation>
 <translation id="3070005020161560471">Översätt automatiskt</translation>
 <translation id="3089395242580810162">Öppna i inkognitoflik</translation>
+<translation id="3091010850649238832">Visa innehållet i Urklipp</translation>
 <translation id="3098745985164956033">Vissa bilder skickas till Google så att du får bättre beskrivningar</translation>
 <translation id="3114507951000454849">Läs dagens nyheter <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Meddelanden</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Förbättrar säkerheten för dig och alla andra på webben.</translation>
 <translation id="6618554661997243500">Tryck på hemknappen om du vill se dina mest besökta webbplatser och artiklar för dig</translation>
 <translation id="6627583120233659107">Redigera mapp</translation>
+<translation id="6635718764393004944">Din sökmotor är <ph name="DSE" />. Följ eventuella anvisningar från sökmotorn för att radera din sökhistorik.</translation>
 <translation id="663674369910034433">Fler inställningar som rör integritet, säkerhet och datainsamling finns under <ph name="BEGIN_LINK1" />Synk<ph name="END_LINK1" /> och <ph name="BEGIN_LINK2" />Googles tjänster<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Rensa</translation>
 <translation id="6643649862576733715">Sortera efter databesparing</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
index 51b2726..fae8907c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Tafuta</translation>
 <translation id="2518590038762162553">Katika Hali Nyepesi, Chrome hupakia kurasa haraka zaidi na huokoa hadi asilimia 60 ya data. Ili kuboresha kurasa unazotembelea, Chrome hutumia Google data ya tovuti unazotembelea. <ph name="BEGIN_LINK" />Pata maelezo zaidi<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Hutuma URL za kurasa unazotembelea kwa Google</translation>
+<translation id="2527779675047087889">Ficha yaliyomo kwenye ubao wa kunakili</translation>
 <translation id="2532336938189706096">Mwonekano wa Wavuti</translation>
 <translation id="2534155362429831547">Umefuta vipengee <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Unaangalia nakala ya nje ya mtandao ya ukurasa huu</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Makala ya yanayokuvutia kwenye Chrome</translation>
 <translation id="3070005020161560471">Tafsiri kiotomatiki</translation>
 <translation id="3089395242580810162">Fungua katika kichupo fiche</translation>
+<translation id="3091010850649238832">Onyesha yaliyomo kwenye ubao wa kunakili</translation>
 <translation id="3098745985164956033">Baadhi ya picha hutumwa kwa Google ili kuboresha maelezo unayopata</translation>
 <translation id="3114507951000454849">Soma habari za leo <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Matangazo</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Huboresha usalama wako na wa kila mtu kwenye wavuti.</translation>
 <translation id="6618554661997243500">Ili uone tovuti na taarifa maarufu unazopendekezewa, gusa kitufe cha Ukurasa wa mwanzo</translation>
 <translation id="6627583120233659107">Badilisha folda</translation>
+<translation id="6635718764393004944">Mtambo wako wa kutafuta ni <ph name="DSE" />. Ikiwa yapo, angalia maagizo yake ya kufuta historia ya mambo uliyoyafuta.</translation>
 <translation id="663674369910034433">Ili upate mipangilio zaidi inayohusiana na faragha, usalama na ukusanyaji wa data, angalia <ph name="BEGIN_LINK1" />Usawazishaji<ph name="END_LINK1" /> na <ph name="BEGIN_LINK2" />huduma za Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Futa</translation>
 <translation id="6643649862576733715">Panga kulingana na kiasi cha data kilichookolewa</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
index 841fabd..c8ab0b6 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
@@ -247,6 +247,7 @@
 <translation id="2612676031748830579">கார்டு எண்</translation>
 <translation id="2625189173221582860">கடவுச்சொல் நகலெடுக்கப்பட்டது</translation>
 <translation id="2631006050119455616">சேமிக்கப்பட்டது</translation>
+<translation id="2645657967708199252">உங்கள் <ph name="CONNECTION_TYPE" /> இணைப்பு காரணமாகப் பதிவிறக்கத்தின் வேகம் குறையக்கூடும்</translation>
 <translation id="2647434099613338025">மொழியைச் சேர்</translation>
 <translation id="2650751991977523696">கோப்பை மீண்டும் பதிவிறக்கவா?</translation>
 <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# ஆடியோ கோப்பு}other{# ஆடியோ கோப்புகள்}}</translation>
@@ -259,6 +260,7 @@
 <translation id="2718846868787000099">உங்களுக்கு விருப்பமான மொழியில் உள்ளடக்கத்தைக் காட்டுவதற்காக நீங்கள் பார்க்கும் தளங்கள் உங்கள் விருப்பத்தேர்வுகளை அணுகலாம்</translation>
 <translation id="2723001399770238859">ஆடியோ</translation>
 <translation id="2728754400939377704">தளத்தின்படி வரிசைப்படுத்தும்</translation>
+<translation id="2739256783402597439">2G</translation>
 <translation id="2744248271121720757">உடனடியாகத் தேட அல்லது தொடர்புடைய செயல்களைப் பார்க்க, சொல்லைத் தட்டவும்</translation>
 <translation id="2760989362628427051">சாதனத்தில் டார்க் தீம் அல்லது பேட்டரி சேமிப்பான் ஆன் செய்யப்பட்டால் டார்க் தீமினை ஆன் செய்யும்</translation>
 <translation id="2762000892062317888">சற்று முன்</translation>
@@ -435,6 +437,7 @@
 <translation id="3943557322767080599">நான் Google கணக்கில் உள்நுழையும்போது Chrome உள்நுழைவு அறிவிப்புகளைக் காட்டு</translation>
 <translation id="395206256282351086">தேடல் மற்றும் தளப் பரிந்துரைகள் முடக்கப்பட்டுள்ளன</translation>
 <translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{பக்கம் தயாரானதும் Chrome அதை ஏற்றும்}other{பக்கங்கள் தயாரானதும் Chrome அவற்றை ஏற்றும்}}</translation>
+<translation id="3962957115499249330">இந்தப் பதிவிறக்கம் வைஃபையில் தொடங்கும்போது அறிவிப்பைப் பெறுவீர்கள்.</translation>
 <translation id="3963007978381181125">கடவுச்சொற்றொடர் என்க்ரிப்ஷனில் Google Payயிலுள்ள கட்டண முறைகளும் முகவரிகளும் சேர்க்கப்படாது. என்கிரிப்ட் செய்யப்பட்ட தரவை உங்கள் கடவுச்சொற்றொடரை அறிந்தவரால் மட்டுமே படிக்க முடியும். Googleளுக்குக் கடவுச்சொற்றொடர் அனுப்பப்படுவதில்லை. Google அதைச் சேமிப்பதுமில்லை. கடவுச்சொற்றொடரை மறந்துவிட்டாலோ இந்த அமைப்பை மாற்ற விரும்பினாலோ, ஒத்திசைவை மீட்டமைக்க வேண்டும். <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></translation>
 <translation id="3969142555815019568">Chrome உலாவியால் உங்கள் கடவுச்சொற்களைச் சரிபார்க்க முடியவில்லை</translation>
 <translation id="3974987681202239636"><ph name="APP_NAME" /> Chromeமில் திறக்கும். தொடர்வதன் மூலம் <ph name="BEGIN_LINK1" />Google சேவை விதிமுறைகளையும்<ph name="END_LINK1" /> <ph name="BEGIN_LINK2" />Google Chrome மற்றும் Chrome OS தொடர்பான கூடுதல் சேவை விதிமுறைகளையும்<ph name="END_LINK2" /> ஏற்கிறீர்கள். இவற்றோடு <ph name="BEGIN_LINK3" />Family Link நிர்வகிக்கும் Google கணக்குகளுக்கான தனியுரிமை அறிக்கையும்<ph name="END_LINK3" /> பொருந்தும்.</translation>
@@ -478,6 +481,7 @@
 <translation id="4256782883801055595">ஓப்பன் சோர்ஸ் உரிமங்கள்</translation>
 <translation id="4263656433980196874">குரல் தேடலுக்கு Assistantடைப் பயன்படுத்துவதற்கான ஒப்புதல் UI முழுத் திரையில் காட்டப்படுகிறது</translation>
 <translation id="4269820728363426813">இணைப்பு முகவரியை நகலெடு</translation>
+<translation id="4290281343757112331">பின்னர் பதிவிறக்கவா?</translation>
 <translation id="4298388696830689168">இணைக்கப்பட்டுள்ள தளங்கள்</translation>
 <translation id="4303044213806199882">chrome_ஸ்கிரீன்ஷாட்_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="4307992518367153382">அடிப்படைகள்</translation>
@@ -540,6 +544,7 @@
 <translation id="4698034686595694889"><ph name="APP_NAME" /> இல் உள்ளடக்கத்தை ஆஃப்லைனில் பார்க்கலாம்</translation>
 <translation id="4699172675775169585">தற்காலிகமாகச் சேமிக்கப்பட்ட படங்கள் மற்றும் கோப்புகள்</translation>
 <translation id="4714588616299687897">தரவில் 60% வரை சேமியுங்கள்</translation>
+<translation id="4716066120200945007">பின்தொடர்பவை</translation>
 <translation id="4719927025381752090">மொழிபெயர்ப்பதற்கான சலுகை</translation>
 <translation id="4720023427747327413"><ph name="PRODUCT_NAME" />இல் திற</translation>
 <translation id="4720982865791209136">Chromeஐ மேம்படுத்த உதவவும். <ph name="BEGIN_LINK" />கருத்துக்கணிப்பில் பங்கேற்கவும்<ph name="END_LINK" /></translation>
@@ -620,6 +625,7 @@
 <translation id="5191251636205085390">மூன்றாம் தரப்புக் குக்கீகளுக்கு மாற்றாகப் பயன்படுத்த உதவும் புதிய தொழில்நுட்பங்கள் குறித்தும் அவற்றைக் கட்டுப்படுத்துவது குறித்தும் மேலும் அறிக</translation>
 <translation id="5193988420012215838">கிளிப்போர்டுக்கு நகலெடுக்கப்பட்டது</translation>
 <translation id="5199929503336119739">பணி சுயவிவரம்</translation>
+<translation id="5201464744567315552">இந்தப் பதிவிறக்கம் <ph name="TIME" />க்குத் தொடங்கும்போது அறிவிப்பைப் பெறுவீர்கள்.</translation>
 <translation id="5204967432542742771">கடவுச்சொல்</translation>
 <translation id="5210286577605176222">முந்தைய தாவலுக்குச் செல்லும்</translation>
 <translation id="5210365745912300556">தாவலை மூடுக</translation>
@@ -630,6 +636,7 @@
 <translation id="5230560987958996918">அருகிலுள்ள புளூடூத் சாதனங்களை <ph name="SITE" /> ஸ்கேன் செய்ய விரும்புகிறது. இவை கண்டறியப்பட்டுள்ளன:</translation>
 <translation id="5233638681132016545">புதிய தாவல்</translation>
 <translation id="5250483651202458397">ஸ்கிரீன்ஷாட். மூடுவதற்குத் தட்டவும்.</translation>
+<translation id="5262378156578470238">இந்தப் பதிவிறக்கம் <ph name="DATE" /> அன்று தொடங்கும்போது அறிவிப்பைப் பெறுவீர்கள்.</translation>
 <translation id="526421993248218238">பக்கத்தை ஏற்ற முடியவில்லை</translation>
 <translation id="5271967389191913893">பதிவிறக்க வேண்டிய உள்ளடக்கத்தைச் சாதனத்தால் திறக்க முடியாது</translation>
 <translation id="5292796745632149097">இதற்கு அனுப்பு:</translation>
@@ -910,6 +917,7 @@
 <translation id="6981982820502123353">அணுகல் தன்மை</translation>
 <translation id="6989267951144302301">பதிவிறக்க முடியவில்லை</translation>
 <translation id="6995899638241819463">தரவு மீறலினால் கடவுச்சொற்கள் வெளியாகியிருந்தால் அதுகுறித்து எச்சரி</translation>
+<translation id="7001056293070445572">இந்தக் கோப்பு பெரிதாக உள்ளது (<ph name="FILE_SIZE" />)</translation>
 <translation id="7015203776128479407">ஒத்திசைப்பதற்கான துவக்க அமைவு முடியவில்லை. ஒத்திசைவு முடக்கப்பட்டுள்ளது.</translation>
 <translation id="7022756207310403729">உலாவியில் திற</translation>
 <translation id="702463548815491781">TalkBack அல்லது ‘ஸ்விட்ச் அணுகல்’ இயக்கத்தில் இருக்கும்போது பரிந்துரைக்கப்படுகிறது</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
index 766eb1eb..27423424 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">สแกน</translation>
 <translation id="2518590038762162553">ในโหมด Lite เบราว์เซอร์ Chrome จะโหลดหน้าเว็บได้เร็วขึ้นและใช้อินเทอร์เน็ตน้อยลงสูงสุดถึง 60 เปอร์เซ็นต์ Chrome จะส่งการเข้าชมเว็บของคุณไปให้ Google เพื่อเพิ่มประสิทธิภาพหน้าเว็บที่คุณเข้าชม <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">ส่ง URL ของหน้าที่คุณเข้าชมไปยัง Google</translation>
+<translation id="2527779675047087889">ซ่อนเนื้อหาในคลิปบอร์ด</translation>
 <translation id="2532336938189706096">มุมมองเว็บ</translation>
 <translation id="2534155362429831547">ลบแล้ว <ph name="NUMBER_OF_ITEMS" /> รายการ</translation>
 <translation id="2536728043171574184">ดูสำเนาแบบออฟไลน์ของหน้านี้</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">บทความที่เกี่ยวข้องกับความสนใจของคุณใน Chrome</translation>
 <translation id="3070005020161560471">แปลโดยอัตโนมัติ</translation>
 <translation id="3089395242580810162">เปิดในแท็บไม่ระบุตัวตน</translation>
+<translation id="3091010850649238832">แสดงเนื้อหาในคลิปบอร์ด</translation>
 <translation id="3098745985164956033">ระบบจะส่งรูปภาพบางส่วนไปยัง Google เพื่อปรับปรุงคำอธิบายสำหรับคุณ</translation>
 <translation id="3114507951000454849">อ่านข่าววันนี้ <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">ประกาศ</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">ปรับปรุงความปลอดภัยให้คุณและทุกคนที่ใช้อินเทอร์เน็ต</translation>
 <translation id="6618554661997243500">หากต้องการดูเว็บไซต์ยอดนิยมและเรื่องราวสำหรับคุณ ให้แตะปุ่มหน้าแรก</translation>
 <translation id="6627583120233659107">แก้ไขโฟลเดอร์</translation>
+<translation id="6635718764393004944">เครื่องมือค้นหาของคุณคือ <ph name="DSE" /> ดูวิธีการลบประวัติการค้นหา (หากมี)</translation>
 <translation id="663674369910034433">ดูการตั้งค่าเพิ่มเติมเกี่ยวกับความเป็นส่วนตัว ความปลอดภัย และการรวบรวมข้อมูลได้ที่<ph name="BEGIN_LINK1" />การซิงค์<ph name="END_LINK1" />และ<ph name="BEGIN_LINK2" />บริการต่างๆ ของ Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">ล้าง</translation>
 <translation id="6643649862576733715">จัดเรียงตามปริมาณเน็ตมือถือที่ประหยัดได้</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
index 76d644e..b60c85c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Tara</translation>
 <translation id="2518590038762162553">Chrome, Basit modda sayfaları daha hızlı yükler ve yüzde 60'a kadar daha az veri kullanır. Chrome, ziyaret ettiğiniz sayfaları iyileştirmek için web trafiğinizi Google'a gönderir. <ph name="BEGIN_LINK" />Daha fazla bilgi<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Ziyaret ettiğiniz sayfaların URL'lerini Google'a gönderir</translation>
+<translation id="2527779675047087889">Pano içeriklerini gizle</translation>
 <translation id="2532336938189706096">Web Görüntüleme</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> öğe silindi</translation>
 <translation id="2536728043171574184">Bu sayfanın çevrimdışı bir kopyası görüntüleniyor</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">İlgilendiğiniz makaleler Chrome'da</translation>
 <translation id="3070005020161560471">Otomatik olarak çevir</translation>
 <translation id="3089395242580810162">Gizli sekmede aç</translation>
+<translation id="3091010850649238832">Pano içeriklerini göster</translation>
 <translation id="3098745985164956033">Bazı resimler size daha iyi açıklamalar sunmak için Google'a gönderilir</translation>
 <translation id="3114507951000454849">Bugünkü haberleri <ph name="NEWS_ICON" /> okuyun</translation>
 <translation id="3123734510202723619">Duyurular</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Hem siz hem de web'deki herkes için güvenliği iyileştirir.</translation>
 <translation id="6618554661997243500">Size özel popüler siteleri ve haberleri görmek için Ana sayfa düğmesine dokunun</translation>
 <translation id="6627583120233659107">Klasörü düzenle</translation>
+<translation id="6635718764393004944">Arama motorunuz <ph name="DSE" />. Sağlanmışsa arama geçmişinizi silmek için arama motorunuzun talimatlarına bakın.</translation>
 <translation id="663674369910034433">Gizlilik, güvenlik ve veri toplamayla ilgili daha fazla ayar için <ph name="BEGIN_LINK1" />Senkronizasyon<ph name="END_LINK1" /> ve <ph name="BEGIN_LINK2" />Google hizmetleri<ph name="END_LINK2" /> konularına bakın.</translation>
 <translation id="6643016212128521049">Temizle</translation>
 <translation id="6643649862576733715">Tasarruf edilen veri miktarına göre sırala</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
index bb4fe84..806e502 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Сканувати</translation>
 <translation id="2518590038762162553">У спрощеному режимі Chrome завантажує сторінки швидше та використовує на 60% менше трафіку. Щоб оптимізувати сторінки, які ви відвідуєте, Chrome надсилає ваш веб-трафік у Google. <ph name="BEGIN_LINK" />Докладніше<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Надсилає в Google URL-адреси відвіданих сторінок</translation>
+<translation id="2527779675047087889">Сховати вміст буфера обміну</translation>
 <translation id="2532336938189706096">Веб-версія</translation>
 <translation id="2534155362429831547">Видалено елементів: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Перегляд копії сторінки в режимі офлайн</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Статті на цікаві вам теми в Chrome</translation>
 <translation id="3070005020161560471">Мови, з яких потрібно автоматично перекладати</translation>
 <translation id="3089395242580810162">Відкрити в анонімній вкладці</translation>
+<translation id="3091010850649238832">Показати вміст буфера обміну</translation>
 <translation id="3098745985164956033">Деякі зображення надсилаються на сервери Google, що дає змогу покращувати їх описи</translation>
 <translation id="3114507951000454849">Читайте сьогоднішні новини <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Оголошення</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Покращує захист усіх користувачів в Інтернеті.</translation>
 <translation id="6618554661997243500">Щоб переглянути підібрані для вас сайти й новини, натисніть кнопку домашньої сторінки</translation>
 <translation id="6627583120233659107">Редагувати папку</translation>
+<translation id="6635718764393004944">Ваша пошукова система – <ph name="DSE" />. Щоб видалити історію пошуку, виконайте вказівки для цієї системи (якщо вони доступні).</translation>
 <translation id="663674369910034433">Інші налаштування конфіденційності, безпеки та збору даних доступні в розділах <ph name="BEGIN_LINK1" />Синхронізація<ph name="END_LINK1" /> та <ph name="BEGIN_LINK2" />Сервіси Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Очистити</translation>
 <translation id="6643649862576733715">Сортувати за кількістю заощадженого трафіку</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
index d6c5406..9a7eb5a2 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
@@ -247,6 +247,7 @@
 <translation id="2612676031748830579">کارڈ نمبر</translation>
 <translation id="2625189173221582860">پاس ورڈ کاپی ہو گیا</translation>
 <translation id="2631006050119455616">بچت ہوئی</translation>
+<translation id="2645657967708199252">آپ کے <ph name="CONNECTION_TYPE" /> کنکشن سے آپ کا ڈاؤن لوڈ سست ہو سکتا ہے</translation>
 <translation id="2647434099613338025">زبان شامل کریں</translation>
 <translation id="2650751991977523696">فائل دوبارہ ڈاؤن لوڈ کریں؟</translation>
 <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# آڈیو فائل}other{# آڈیو فائلیں}}</translation>
@@ -259,6 +260,7 @@
 <translation id="2718846868787000099">اپنی ترجیحی زبانوں میں مواد دکھانے کے لیے، آپ جو سائٹس ملاحظہ کرتے ہیں وہ آپ کی ترجیحات دیکھ سکتی ہیں</translation>
 <translation id="2723001399770238859">آڈیو</translation>
 <translation id="2728754400939377704">سائٹ کے لحاظ سے ترتیب دیں</translation>
+<translation id="2739256783402597439">2G</translation>
 <translation id="2744248271121720757">فوری تلاش یا متعلقہ کارروائی کے لیے کسی لفظ پر تھپتھپائیں</translation>
 <translation id="2760989362628427051">اپنے آلہ کے بیٹری سیور یا گہری تھیم کے آن ہونے پر گہری تھیم آن کریں</translation>
 <translation id="2762000892062317888">ابھی ابھی</translation>
@@ -435,6 +437,7 @@
 <translation id="3943557322767080599">‏اپنے Google اکاؤنٹ میں سائن ان کرنے پر Chrome سائن ان پرامپٹس دکھائیں</translation>
 <translation id="395206256282351086">تلاش اور سائٹ کی تجاویز غیر فعال ہیں</translation>
 <translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{‏آپ کا صفحہ تیار ہونے پر Chrome اسے لوڈ کرے گا}other{‏آپ کے صفحات تیار ہونے پر Chrome انہیں لوڈ کرے گا}}</translation>
+<translation id="3962957115499249330">‏Wi-Fi پر جب یہ ڈاؤن لوڈ شروع ہوگا تو آپ کو ایک اطلاع دکھائی دے گی۔</translation>
 <translation id="3963007978381181125">‏پاس فریز کی مرموز کاری میں Google Pay سے ادائيگی کے طریقے اور پتے شامل نہیں ہوتے ہیں۔ آپ کے پاس فریز کا حامل شخص ہی آپ کے مرموز کردہ ڈیٹا کو پڑھ سکتا ہے۔ پاس فریز Google کو نہیں بھیجا جاتا ہے اور نہ ہی Google اسے اسٹور کرتا ہے۔ اگر آپ اپنا پاس فریز بھول جاتے ہیں یا اس ترتیب کو تبدیل کرنا چاہتے ہیں تو آپ کو مطابقت پذیری کو دوبارہ ترتیب دینے کی ضرورت ہوگی۔ <ph name="BEGIN_LINK" />مزید جانیں<ph name="END_LINK" /></translation>
 <translation id="3969142555815019568">‏Chrome آپ کے پاس ورڈز چیک نہیں کر سکتا ہے</translation>
 <translation id="3974987681202239636">‏<ph name="APP_NAME" /> Chrome میں کھلے گی۔ جاری رکھ کر آپ، <ph name="BEGIN_LINK1" />Google کی سروس کی شرائط<ph name="END_LINK1" />، اور <ph name="BEGIN_LINK2" />Google Chrome اور Chrome OS کی اضافی سروس کی شرائط سے اتفاق کرتے ہیں<ph name="END_LINK2" />۔ <ph name="BEGIN_LINK3" />Google اکاؤنٹس کے لیے Family Link سے نظم کردہ رازداری کا نوٹس<ph name="END_LINK3" /> بھی لاگو ہوتا ہے۔</translation>
@@ -478,6 +481,7 @@
 <translation id="4256782883801055595">اوپن سورس لائسنسز</translation>
 <translation id="4263656433980196874">‏اسسٹنٹ صوتی تلاش رضامندی ui پوری اونچائی پر کھلی ہوئی ہے</translation>
 <translation id="4269820728363426813">لنک کا پتہ کاپی کریں</translation>
+<translation id="4290281343757112331">اس کے بجائے آپ بعد میں ڈاؤن لوڈ کریں؟</translation>
 <translation id="4298388696830689168">لنک کردہ سائٹس</translation>
 <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="4307992518367153382">بنیادی باتیں</translation>
@@ -540,6 +544,7 @@
 <translation id="4698034686595694889"><ph name="APP_NAME" /> میں آف لائن دیکھیں</translation>
 <translation id="4699172675775169585">کیش کردہ تصاویر اور فائلیں</translation>
 <translation id="4714588616299687897">60% تک اپنے ڈیٹا کی بچت کریں</translation>
+<translation id="4716066120200945007">پیروی کر رہے ہیں</translation>
 <translation id="4719927025381752090">ترجمہ کرنے کی پیشکش</translation>
 <translation id="4720023427747327413"><ph name="PRODUCT_NAME" /> میں کھولیں</translation>
 <translation id="4720982865791209136">‏Chrome کو بہتر بنانے میں مدد کریں۔ <ph name="BEGIN_LINK" />سروے مکمل کریں<ph name="END_LINK" /></translation>
@@ -620,6 +625,7 @@
 <translation id="5191251636205085390">ان نئی ٹیکنالوجیز کے بارے میں جانیں اور کنٹرول کریں جن کا مقصد فریق ثالث کے کوکیز کو تبدیل کرنا ہے</translation>
 <translation id="5193988420012215838">آپ کے کلپ بورڈ پر کاپی کر دیا گیا</translation>
 <translation id="5199929503336119739">دفتری پروفائل</translation>
+<translation id="5201464744567315552"><ph name="TIME" /> کو جب یہ ڈاؤن لوڈ شروع ہوگا تو آپ کو ایک اطلاع دکھائی دے گی۔</translation>
 <translation id="5204967432542742771">پاس ورڈ درج کریں</translation>
 <translation id="5210286577605176222">پچھلے ٹیب پر جائیں</translation>
 <translation id="5210365745912300556">ٹیب بند کریں</translation>
@@ -630,6 +636,7 @@
 <translation id="5230560987958996918"><ph name="SITE" /> قریبی بلوٹوتھ آلات کے لیے اسکین کرنا چاہتی ہے، مندرجہ ذیل آلات ملے ہیں:</translation>
 <translation id="5233638681132016545">نیا ٹیب</translation>
 <translation id="5250483651202458397">اسکرین شاٹ۔ بند کرنے کے لئے تھپتھپائیں۔</translation>
+<translation id="5262378156578470238"><ph name="DATE" /> کو جب یہ ڈاؤن لوڈ شروع ہوگا تو آپ کو ایک اطلاع دکھائی دے گی۔</translation>
 <translation id="526421993248218238">اس صفحہ کو لوڈ نہیں کیا جا سکتا</translation>
 <translation id="5271967389191913893">آلہ ڈاؤن لوڈ کیے جانے والے مواد کو نہیں کھول سکتا۔</translation>
 <translation id="5292796745632149097">اس پر بھیجیں</translation>
@@ -910,6 +917,7 @@
 <translation id="6981982820502123353">ایکسیسبیلٹی</translation>
 <translation id="6989267951144302301">ڈاؤن لوڈ نہیں کیا جا سکا</translation>
 <translation id="6995899638241819463">اگر پاس ورڈز ڈیٹا کی خلاف ورزی میں افشاء ہوتے ہیں تو وارننگ حاصل کریں</translation>
+<translation id="7001056293070445572">یہ فائل بڑی ہے (<ph name="FILE_SIZE" />)</translation>
 <translation id="7015203776128479407">مطابقت پذیری کا ابتدائی سیٹ اپ مکمل نہیں ہوا۔ مطابقت پذیری آف ہے۔</translation>
 <translation id="7022756207310403729">براؤزر میں کھولیں</translation>
 <translation id="702463548815491781">‏TalkBack یا سوئچ رسائی آن ہونے پر تجویز کردہ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
index 0fa5985..4ffc094 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Qidiruv</translation>
 <translation id="2518590038762162553">Lite rejimda Chrome sahifalarni tezroq yuklaydi va trafikni tejaydi (60% gacha). Siz kirgan saytlarni optimallashtirish uchun Chrome Googlega trafik axborotini yuboradi. <ph name="BEGIN_LINK" />Batafsil<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Siz tashrif buyurgan URL manzillarni Google serverlariga yuboradi</translation>
+<translation id="2527779675047087889">Vaqtincha xotira kontentini berkitish</translation>
 <translation id="2532336938189706096">Veb-versiya</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> ta element oʻchirib tashlandi</translation>
 <translation id="2536728043171574184">Bu sahifaning oflayn nusxasi ko‘rilmoqda</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Chrome brauzerida qiziqishlaringizga oid maqolalar</translation>
 <translation id="3070005020161560471">Avtomatik tarjima qilinsin</translation>
 <translation id="3089395242580810162">Inkognito rejimida ochish</translation>
+<translation id="3091010850649238832">Vaqtincha xotira kontentini chiqarish</translation>
 <translation id="3098745985164956033">Tavsiflarini yaxshilash uchun ayrim rasmlar Googlega yuborildi</translation>
 <translation id="3114507951000454849">Bugungi yangiliklar bilan tanishing <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Xabarnomalar</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Siz va yaqinlaringizni internetdan yaxshiroq himoyalaydi.</translation>
 <translation id="6618554661997243500">Eng sara saytlar va maqolalarni koʻrish uchun bosh sahifa tugmasini bosing</translation>
 <translation id="6627583120233659107">Jildni tahrirlash</translation>
+<translation id="6635718764393004944">Qidiruv tizimingiz: <ph name="DSE" />. Imkon bo'lsa, qidiruv tarixini qanday tozalash mumkinligini ochish.</translation>
 <translation id="663674369910034433">Maxfiylik, xavfsizlik va axborotlar jamlanishi haqida batafsil axborot olish uchun <ph name="BEGIN_LINK1" />Sinxronlash<ph name="END_LINK1" /> va <ph name="BEGIN_LINK2" />Google xizmatlari<ph name="END_LINK2" /> bilan tanishing</translation>
 <translation id="6643016212128521049">Tozalash</translation>
 <translation id="6643649862576733715">Tejalgan trafik asosida saralash</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
index 24ef372..9614512 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Quét</translation>
 <translation id="2518590038762162553">Ở Chế độ thu gọn, Chrome tải trang nhanh hơn và sử dụng ít dữ liệu hơn lên tới 60%. Để tối ưu hóa các trang bạn truy cập, Chrome sẽ gửi lưu lượng truy cập web của bạn cho Google. <ph name="BEGIN_LINK" />Tìm hiểu thêm<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Gửi cho Google URL của các trang bạn truy cập</translation>
+<translation id="2527779675047087889">Ẩn các nội dung của bảng nhớ tạm</translation>
 <translation id="2532336938189706096">Lượt xem trên web</translation>
 <translation id="2534155362429831547">Đã xóa <ph name="NUMBER_OF_ITEMS" /> mục</translation>
 <translation id="2536728043171574184">Xem bản sao ngoại tuyến của trang này</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Các bài viết về chủ đề mà bạn quan tâm trên Chrome</translation>
 <translation id="3070005020161560471">Tự động dịch</translation>
 <translation id="3089395242580810162">Mở trong thẻ ẩn danh</translation>
+<translation id="3091010850649238832">Hiện các nội dung của bảng nhớ tạm</translation>
 <translation id="3098745985164956033">Một số hình ảnh được gửi đến Google để cải thiện nội dung mô tả cho bạn</translation>
 <translation id="3114507951000454849">Đọc tin tức hôm nay <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Thông báo</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Tăng độ bảo mật cho bạn và mọi người trên web.</translation>
 <translation id="6618554661997243500">Để xem các trang web hàng đầu và tin nổi bật dành cho bạn, hãy nhấn vào nút Trang chủ</translation>
 <translation id="6627583120233659107">Chỉnh sửa thư mục</translation>
+<translation id="6635718764393004944">Bạn đang dùng công cụ tìm kiếm <ph name="DSE" />. Nếu có thể, hãy xem hướng dẫn của công cụ này về cách xóa nhật ký tìm kiếm.</translation>
 <translation id="663674369910034433">Bạn có thể xem thêm các tùy chọn cài đặt liên quan đến quyền riêng tư, bảo mật và hoạt động thu thập dữ liệu trong phần <ph name="BEGIN_LINK1" />Đồng bộ hóa<ph name="END_LINK1" /> và <ph name="BEGIN_LINK2" />Các dịch vụ của Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Xóa</translation>
 <translation id="6643649862576733715">Sắp xếp theo lượng dữ liệu tiết kiệm được</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
index ae503c4..7ea09a8 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">扫描</translation>
 <translation id="2518590038762162553">在精简模式下,Chrome 可更快速地加载网页,并可节省多达 60% 的流量。为了优化您访问的网页,Chrome 会将您的网络流量数据发送给 Google。<ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">将您所访问的网页的网址发送给 Google</translation>
+<translation id="2527779675047087889">隐藏剪贴板内容</translation>
 <translation id="2532336938189706096">网页视图</translation>
 <translation id="2534155362429831547">删除了 <ph name="NUMBER_OF_ITEMS" /> 项</translation>
 <translation id="2536728043171574184">正在查看此网页的离线副本</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Chrome 可提供您感兴趣的报道</translation>
 <translation id="3070005020161560471">自动翻译</translation>
 <translation id="3089395242580810162">在无痕式标签页中打开</translation>
+<translation id="3091010850649238832">显示剪贴板内容</translation>
 <translation id="3098745985164956033">系统会将部分图片发送给 Google 以便为您改进说明</translation>
 <translation id="3114507951000454849">阅读今日新闻 <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">通告</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">为您以及网络上的所有人提供更好的安全保障。</translation>
 <translation id="6618554661997243500">若要查看为您推荐的热门网站和报道,请点按“主屏幕”按钮</translation>
 <translation id="6627583120233659107">修改文件夹</translation>
+<translation id="6635718764393004944">您所用的搜索引擎是<ph name="DSE" />。如果适用的话,请查看它的相关说明以了解如何删除您的搜索记录。</translation>
 <translation id="663674369910034433">如需了解更多与隐私、安全和数据收集相关的设置,请前往<ph name="BEGIN_LINK1" />同步功能<ph name="END_LINK1" />和 <ph name="BEGIN_LINK2" />Google 服务<ph name="END_LINK2" />部分</translation>
 <translation id="6643016212128521049">清除</translation>
 <translation id="6643649862576733715">按已节省的数据流量排序</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
index fcce1b3..7fa7dc1 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">掃瞄</translation>
 <translation id="2518590038762162553">「精簡模式」可加快 Chrome 載入網頁的速度,並節省高達 60% 數據用量。Chrome 會將您的網絡流量傳送給 Google,以優化您瀏覽的網頁。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">將您瀏覽的網頁網址傳送給 Google</translation>
+<translation id="2527779675047087889">隱藏剪貼簿內容</translation>
 <translation id="2532336938189706096">網頁檢視</translation>
 <translation id="2534155362429831547">已刪除 <ph name="NUMBER_OF_ITEMS" /> 個項目</translation>
 <translation id="2536728043171574184">正在瀏覽此網頁的離線版本</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">您感興趣的文章和內容,一切盡在 Chrome</translation>
 <translation id="3070005020161560471">自動翻譯</translation>
 <translation id="3089395242580810162">在無痕式分頁中開啟</translation>
+<translation id="3091010850649238832">顯示剪貼簿內容</translation>
 <translation id="3098745985164956033">部分圖片會傳送至 Google,以便為您提供更完善的說明</translation>
 <translation id="3114507951000454849">閱讀今天的新聞 <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">公告</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">為您和網絡上的所有使用者提高安全性。</translation>
 <translation id="6618554661997243500">㩒「主按鈕」就可以睇下熱門網站同報導</translation>
 <translation id="6627583120233659107">編輯資料夾</translation>
+<translation id="6635718764393004944">您的搜尋引擎是 <ph name="DSE" />。請查看搜尋引擎的指示 (如有) 以便刪除搜尋記錄。</translation>
 <translation id="663674369910034433">如需更多與私隱權、安全性和資料收集相關的設定,請參閱<ph name="BEGIN_LINK1" />同步處理<ph name="END_LINK1" />和 <ph name="BEGIN_LINK2" />Google 服務<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">清除</translation>
 <translation id="6643649862576733715">依節省數據量排序</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
index b4246b4..d5d25ed4 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">掃描</translation>
 <translation id="2518590038762162553">使用精簡模式時,Chrome 可加快網頁載入速度,並可節省多達 60% 的數據用量。Chrome 會將你的網路流量傳送給 Google,以便針對你造訪的網頁進行最佳化處理。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">將你造訪的網頁網址傳送給 Google</translation>
+<translation id="2527779675047087889">隱藏剪貼簿內容</translation>
 <translation id="2532336938189706096">網頁檢視</translation>
 <translation id="2534155362429831547">已刪除 <ph name="NUMBER_OF_ITEMS" /> 個項目</translation>
 <translation id="2536728043171574184">目前瀏覽的是這個網頁的離線複本</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">在 Chrome 上閱讀你有興趣的文章</translation>
 <translation id="3070005020161560471">自動翻譯</translation>
 <translation id="3089395242580810162">在無痕式分頁中開啟</translation>
+<translation id="3091010850649238832">顯示剪貼簿內容</translation>
 <translation id="3098745985164956033">系統會將某些圖片傳送到 Google,為你提供更完善的圖片說明</translation>
 <translation id="3114507951000454849">閱讀今日新聞 <ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">公告事項</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">可為你和所有網路使用者提供更完善的安全防護。</translation>
 <translation id="6618554661997243500">如要查看你常用的網站和精選報導,請輕觸「首頁」按鈕</translation>
 <translation id="6627583120233659107">編輯資料夾</translation>
+<translation id="6635718764393004944">你的搜尋引擎是 <ph name="DSE" />。請參閱相關操作說明,瞭解如何刪除搜尋記錄 (如果有的話)。</translation>
 <translation id="663674369910034433">如需更多有關隱私權、安全性和資料收集的設定,請參閱<ph name="BEGIN_LINK1" />同步處理<ph name="END_LINK1" />和 <ph name="BEGIN_LINK2" />Google 服務<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">清除</translation>
 <translation id="6643649862576733715">依儲存資料量排序</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
index 5d58328..6e066bee 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
@@ -234,6 +234,7 @@
 <translation id="2517472476991765520">Skena</translation>
 <translation id="2518590038762162553">Kumodi elula, i-Chrome ilayisha amakhasi ngokushesha futhi isebenzisa kufikela kudatha encane ngokungu-60 wamaphesenti. Ukuze kulungiselelwe amakhasi owavakashelayo, i-Chrome ithumela ithrafikhi yakho yewebhu ku-Google. <ph name="BEGIN_LINK" />Funda kabanzi<ph name="END_LINK" /></translation>
 <translation id="2523184218357549926">Ithumela ama-URL amakhasi owavakashelayo ku-Google</translation>
+<translation id="2527779675047087889">Fihla okuqukethwe kwebhodi yokunamathisela</translation>
 <translation id="2532336938189706096">Ukubuka iwebhu</translation>
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> izinto ezisusiwe</translation>
 <translation id="2536728043171574184">Kubukwa ikhophi engaxhunyiwe kwi-inthanethi yaleli khasi</translation>
@@ -314,6 +315,7 @@
 <translation id="3062802207422175757">Ama-athikili akho wongaba nentshisekelo kukho ku-Chrome</translation>
 <translation id="3070005020161560471">Humusha ngokuzenzakalelayo</translation>
 <translation id="3089395242580810162">Vula kuthebhu ye-incognito</translation>
+<translation id="3091010850649238832">Bonisa okuqukethwe kwebhodi yokunamathisela</translation>
 <translation id="3098745985164956033">Izithombe zithunyelwa ku-Google ukuthuthukisa izincazelo zakho</translation>
 <translation id="3114507951000454849">Funda izindaba zanamuhla ku-<ph name="NEWS_ICON" /></translation>
 <translation id="3123734510202723619">Izimemezelo</translation>
@@ -865,6 +867,7 @@
 <translation id="661266467055912436">Kuthuthukisa ukuvikeleka kwakho nawo wonke umuntu okuwebhu.</translation>
 <translation id="6618554661997243500">Ukuze ubone amasayithi aphezulu nezindaba zakho, thepha inkinobho Yasekhaya</translation>
 <translation id="6627583120233659107">Hlela ifolda</translation>
+<translation id="6635718764393004944">Injini yakho yokusesha iyi-<ph name="DSE" />. Uma kufaneleka, bona imiyalelo yayo ukuze usule umlando wakho wosesho.</translation>
 <translation id="663674369910034433">Ukuze uthole amanye amasethingi ahambisana nobumfihlo, ukuvikeleka, nokuqoqwa kwedatha, bona okuthi <ph name="BEGIN_LINK1" />Ukuvumelanisa<ph name="END_LINK1" /> nokuthi <ph name="BEGIN_LINK2" />Amasevisi we-Google<ph name="END_LINK2" /></translation>
 <translation id="6643016212128521049">Sula</translation>
 <translation id="6643649862576733715">Hlunga ngenani ledatha elondoloziwe</translation>
diff --git a/chrome/browser/ui/content_settings/content_setting_bubble_model_unittest.cc b/chrome/browser/ui/content_settings/content_setting_bubble_model_unittest.cc
index 0fe33545..095b9f6 100644
--- a/chrome/browser/ui/content_settings/content_setting_bubble_model_unittest.cc
+++ b/chrome/browser/ui/content_settings/content_setting_bubble_model_unittest.cc
@@ -15,6 +15,7 @@
 #include "chrome/browser/content_settings/page_specific_content_settings_delegate.h"
 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
 #include "chrome/browser/custom_handlers/test_protocol_handler_registry_delegate.h"
+#include "chrome/browser/history/history_service_factory.h"
 #include "chrome/browser/infobars/infobar_service.h"
 #include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
 #include "chrome/browser/media/webrtc/media_stream_capture_indicator.h"
@@ -70,6 +71,11 @@
     InfoBarService::CreateForWebContents(web_contents());
   }
 
+  TestingProfile::TestingFactories GetTestingFactories() const override {
+    return {{HistoryServiceFactory::GetInstance(),
+             HistoryServiceFactory::GetDefaultFactory()}};
+  }
+
   std::string GetDefaultAudioDevice() {
     PrefService* prefs = profile()->GetPrefs();
     return prefs->GetString(prefs::kDefaultAudioCaptureDevice);
@@ -252,8 +258,6 @@
 // Tests whether a changed setting in the setting bubble is displayed again when
 // the bubble is re-opened.
 TEST_F(ContentSettingBubbleModelTest, MediastreamContentBubble) {
-  ASSERT_TRUE(profile()->CreateHistoryService());
-
   // Required to break dependency on BrowserMainLoop.
   MediaCaptureDevicesDispatcher::GetInstance()->
       DisableDeviceEnumerationForTesting();
@@ -735,8 +739,6 @@
 };
 
 TEST_F(GeolocationContentSettingBubbleModelTest, Geolocation) {
-  ASSERT_TRUE(profile()->CreateHistoryService());
-
 #if defined(OS_MAC)
   auto fake_geolocation_manager =
       std::make_unique<device::FakeGeolocationManager>();
diff --git a/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc b/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc
index 5e27c86..8698c8b7 100644
--- a/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc
+++ b/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc
@@ -131,6 +131,11 @@
 #include "chrome/browser/chrome_browser_application_mac.h"
 #endif
 
+#if BUILDFLAG(IS_CHROMEOS_LACROS)
+#include "chromeos/crosapi/mojom/crosapi.mojom.h"
+#include "chromeos/lacros/lacros_chrome_service_impl.h"
+#endif
+
 using testing::_;
 using extensions::Extension;
 
@@ -969,7 +974,14 @@
 // This tests that opening multiple profiles with session restore enabled,
 // shutting down, and then launching with kNoStartupWindow doesn't restore
 // the previously opened profiles.
-IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, RestoreWithNoStartupWindow) {
+#if BUILDFLAG(IS_CHROMEOS_LACROS)
+// TODO(https://crbug.com/1196684): enable this test on Lacros.
+#define MAYBE_RestoreWithNoStartupWindow DISABLED_RestoreWithNoStartupWindow
+#else
+#define MAYBE_RestoreWithNoStartupWindow RestoreWithNoStartupWindow
+#endif
+IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest,
+                       MAYBE_RestoreWithNoStartupWindow) {
   ASSERT_TRUE(embedded_test_server()->Start());
 
   ProfileManager* profile_manager = g_browser_process->profile_manager();
@@ -1718,8 +1730,14 @@
   AddExtension();
 }
 
+#if BUILDFLAG(IS_CHROMEOS_LACROS)
+// TODO(https://crbug.com/1196684): enable this test on Lacros.
+#define MAYBE_ExtensionsCheckup DISABLED_ExtensionsCheckup
+#else
+#define MAYBE_ExtensionsCheckup ExtensionsCheckup
+#endif
 IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorExtensionsCheckupExperimentTest,
-                       ExtensionsCheckup) {
+                       MAYBE_ExtensionsCheckup) {
   // The new browser should have exactly two tabs (chrome://extensions page and
   // the NTP).
   TabStripModel* tab_strip = browser()->tab_strip_model();
@@ -1949,6 +1967,19 @@
 IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest, WelcomePages) {
   ASSERT_TRUE(embedded_test_server()->Start());
 
+#if BUILDFLAG(IS_CHROMEOS_LACROS)
+  const crosapi::mojom::BrowserInitParams* init_params =
+      chromeos::LacrosChromeServiceImpl::Get()->init_params();
+  if (init_params->use_new_account_manager) {
+    // Welcome page should not be shown for the first/main profile on Lacros.
+    // (about:blank or new tab page will be shown instead)
+    TabStripModel* tab_strip = browser()->tab_strip_model();
+    ASSERT_EQ(1, tab_strip->count());
+    EXPECT_NE(chrome::kChromeUIWelcomeURL,
+              tab_strip->GetWebContentsAt(0)->GetURL().possibly_invalid_spec());
+  }
+#endif
+
   ProfileManager* profile_manager = g_browser_process->profile_manager();
 
   // Open the two profiles.
@@ -1968,13 +1999,14 @@
   Browser* browser = OpenNewBrowser(profile1_ptr);
   ASSERT_TRUE(browser);
 
-  TabStripModel* tab_strip = browser->tab_strip_model();
+  TabStripModel* tab_strip1 = browser->tab_strip_model();
 
   // Ensure that the standard Welcome page appears on second run on Win 10, and
   // on first run on all other platforms.
-  ASSERT_EQ(1, tab_strip->count());
+  // On Lacros Welcome page appears in the new (non-main) profile.
+  ASSERT_EQ(1, tab_strip1->count());
   EXPECT_EQ(chrome::kChromeUIWelcomeURL,
-            tab_strip->GetWebContentsAt(0)->GetURL().possibly_invalid_spec());
+            tab_strip1->GetWebContentsAt(0)->GetURL().possibly_invalid_spec());
 
   // TODO(crbug.com/88586): Adapt this test for DestroyProfileOnBrowserClose.
   ScopedProfileKeepAlive profile1_keep_alive(
@@ -1982,12 +2014,12 @@
 
   browser = CloseBrowserAndOpenNew(browser, profile1_ptr);
   ASSERT_TRUE(browser);
-  tab_strip = browser->tab_strip_model();
+  tab_strip1 = browser->tab_strip_model();
 
   // Ensure that the new tab page appears on subsequent runs.
-  ASSERT_EQ(1, tab_strip->count());
+  ASSERT_EQ(1, tab_strip1->count());
   EXPECT_EQ(chrome::kChromeUINewTabURL,
-            tab_strip->GetWebContentsAt(0)->GetURL().possibly_invalid_spec());
+            tab_strip1->GetWebContentsAt(0)->GetURL().possibly_invalid_spec());
 }
 
 IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest,
diff --git a/chrome/browser/ui/startup/startup_browser_creator_impl.cc b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
index 609b5563..5d76ed5 100644
--- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc
+++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
@@ -84,6 +84,7 @@
 #endif
 
 #if BUILDFLAG(IS_CHROMEOS_LACROS)
+#include "chrome/browser/lacros/account_manager_util.h"
 #include "chrome/browser/lacros/lacros_prefs.h"
 #include "chrome/grit/generated_resources.h"
 #include "chromeos/lacros/lacros_service.h"
@@ -377,6 +378,11 @@
       welcome::IsEnabled(profile_) && welcome::HasModulesToShow(profile_);
 #endif  // !BUILDFLAG(IS_CHROMEOS_ASH)
 
+#if BUILDFLAG(IS_CHROMEOS_LACROS)
+  if (IsAccountManagerAvailable(profile_))
+    welcome_enabled = false;
+#endif  // BUILDFLAG(IS_CHROMEOS_LACROS)
+
   bool serve_extensions_page =
       extensions::ShouldShowExtensionsCheckupOnStartup(profile_);
 
diff --git a/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc b/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
index 333f5a5..6ccbad8 100644
--- a/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
+++ b/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
@@ -38,7 +38,7 @@
 #include "ui/views/metadata/metadata_header_macros.h"
 #include "ui/views/metadata/metadata_impl_macros.h"
 
-#if !BUILDFLAG(IS_CHROMEOS_ASH)
+#if BUILDFLAG(ENABLE_DICE_SUPPORT)
 #include "chrome/browser/ui/views/sync/dice_bubble_sync_promo_view.h"
 #endif
 
@@ -78,20 +78,17 @@
   return reference_view;
 }
 
+#if BUILDFLAG(ENABLE_DICE_SUPPORT)
 std::unique_ptr<views::View> CreateSigninPromoView(
     Profile* profile,
     BubbleSyncPromoDelegate* delegate) {
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-  // ChromeOS does not show the signin promo.
-  return nullptr;
-#else
   return std::make_unique<DiceBubbleSyncPromoView>(
       profile, delegate,
       signin_metrics::AccessPoint::ACCESS_POINT_EXTENSION_INSTALL_BUBBLE,
       IDS_EXTENSION_INSTALLED_DICE_PROMO_SYNC_MESSAGE,
       /*dice_signin_button_prominent=*/true);
-#endif
 }
+#endif
 
 }  // namespace
 
@@ -172,7 +169,10 @@
   chrome::RecordDialogCreation(chrome::DialogIdentifier::EXTENSION_INSTALLED);
   SetButtons(ui::DIALOG_BUTTON_NONE);
   if (model_->show_sign_in_promo()) {
+#if BUILDFLAG(ENABLE_DICE_SUPPORT)
+    // Promo view requires DICE, so show it only if DICE support is enabled.
     SetFootnoteView(CreateSigninPromoView(browser->profile(), this));
+#endif
   }
   SetIcon(model_->MakeIconOfSize(kMaxIconSize));
   SetShowIcon(true);
diff --git a/chrome/browser/ui/views/extensions/extensions_menu_view_browsertest.cc b/chrome/browser/ui/views/extensions/extensions_menu_view_browsertest.cc
index 5ee39ef..9b7dab5 100644
--- a/chrome/browser/ui/views/extensions/extensions_menu_view_browsertest.cc
+++ b/chrome/browser/ui/views/extensions/extensions_menu_view_browsertest.cc
@@ -557,7 +557,8 @@
 }
 
 // Failing on Mac. https://crbug.com/1176703
-#if defined(OS_MAC)
+// Flaky on Linux. https://crbug.com/1202112
+#if defined(OS_MAC) || defined(OS_LINUX)
 #define MAYBE_PinningDisabledInIncognito DISABLED_PinningDisabledInIncognito
 #else
 #define MAYBE_PinningDisabledInIncognito PinningDisabledInIncognito
diff --git a/chrome/browser/ui/views/sharing/click_to_call_browsertest.cc b/chrome/browser/ui/views/sharing/click_to_call_browsertest.cc
index 5e6cbaf..5c40bd5 100644
--- a/chrome/browser/ui/views/sharing/click_to_call_browsertest.cc
+++ b/chrome/browser/ui/views/sharing/click_to_call_browsertest.cc
@@ -109,7 +109,7 @@
   menu->ExecuteCommand(IDC_CONTENT_CONTEXT_SHARING_CLICK_TO_CALL_SINGLE_DEVICE,
                        0);
   CheckLastReceiver(*devices[0]);
-  CheckLastSharingMessageSent(GetUnescapedURLContent(GURL(kTelUrl)));
+  CheckLastSharingMessageSent(GURL(kTelUrl).GetContent());
 }
 
 IN_PROC_BROWSER_TEST_F(ClickToCallBrowserTest, ContextMenu_NoDevicesAvailable) {
@@ -127,6 +127,42 @@
       IDC_CONTENT_CONTEXT_SHARING_CLICK_TO_CALL_MULTIPLE_DEVICES));
 }
 
+IN_PROC_BROWSER_TEST_F(ClickToCallBrowserTest, ContextMenu_UnsafeTelLink) {
+  Init(sync_pb::SharingSpecificFields::CLICK_TO_CALL_V2,
+       sync_pb::SharingSpecificFields::UNKNOWN);
+  auto devices = sharing_service()->GetDeviceCandidates(
+      sync_pb::SharingSpecificFields::CLICK_TO_CALL_V2);
+  ASSERT_EQ(1u, devices.size());
+
+  std::unique_ptr<TestRenderViewContextMenu> menu = InitContextMenu(
+      GURL("tel:%23*999%23"), kLinkText, kTextWithoutPhoneNumber);
+  EXPECT_FALSE(menu->IsItemPresent(
+      IDC_CONTENT_CONTEXT_SHARING_CLICK_TO_CALL_SINGLE_DEVICE));
+  EXPECT_FALSE(menu->IsItemPresent(
+      IDC_CONTENT_CONTEXT_SHARING_CLICK_TO_CALL_MULTIPLE_DEVICES));
+}
+
+IN_PROC_BROWSER_TEST_F(ClickToCallBrowserTest, ContextMenu_EscapedCharacters) {
+  Init(sync_pb::SharingSpecificFields::CLICK_TO_CALL_V2,
+       sync_pb::SharingSpecificFields::UNKNOWN);
+  auto devices = sharing_service()->GetDeviceCandidates(
+      sync_pb::SharingSpecificFields::CLICK_TO_CALL_V2);
+  ASSERT_EQ(1u, devices.size());
+
+  GURL phone_number("tel:%2B44%20123");
+  std::unique_ptr<TestRenderViewContextMenu> menu =
+      InitContextMenu(phone_number, kLinkText, kTextWithoutPhoneNumber);
+  ASSERT_TRUE(menu->IsItemPresent(
+      IDC_CONTENT_CONTEXT_SHARING_CLICK_TO_CALL_SINGLE_DEVICE));
+  EXPECT_FALSE(menu->IsItemPresent(
+      IDC_CONTENT_CONTEXT_SHARING_CLICK_TO_CALL_MULTIPLE_DEVICES));
+
+  menu->ExecuteCommand(IDC_CONTENT_CONTEXT_SHARING_CLICK_TO_CALL_SINGLE_DEVICE,
+                       0);
+  CheckLastReceiver(*devices[0]);
+  CheckLastSharingMessageSent(phone_number.GetContent());
+}
+
 IN_PROC_BROWSER_TEST_F(ClickToCallBrowserTest,
                        ContextMenu_DevicesAvailable_SyncTurnedOff) {
   if (base::FeatureList::IsEnabled(kSharingSendViaSync)) {
@@ -181,7 +217,7 @@
     sub_menu_model->ActivatedAt(device_id);
 
     CheckLastReceiver(*device);
-    CheckLastSharingMessageSent(GetUnescapedURLContent(GURL(kTelUrl)));
+    CheckLastSharingMessageSent(GURL(kTelUrl).GetContent());
     device_id++;
   }
 }
diff --git a/chrome/browser/web_data_service_factory.cc b/chrome/browser/web_data_service_factory.cc
index c82a172..9bb22bb 100644
--- a/chrome/browser/web_data_service_factory.cc
+++ b/chrome/browser/web_data_service_factory.cc
@@ -14,7 +14,6 @@
 #include "chrome/browser/profiles/sql_init_error_message_ids.h"
 #include "chrome/browser/ui/profile_error_dialog.h"
 #include "components/autofill/core/browser/webdata/autofill_webdata_service.h"
-#include "components/keyed_service/content/browser_context_dependency_manager.h"
 #include "components/payments/content/payment_manifest_web_data_service.h"
 #include "components/search_engines/keyword_web_data_service.h"
 #include "components/signin/public/webdata/token_web_data.h"
@@ -63,39 +62,22 @@
 
 }  // namespace
 
-WebDataServiceFactory::WebDataServiceFactory()
-    : BrowserContextKeyedServiceFactory(
-          "WebDataService",
-          BrowserContextDependencyManager::GetInstance()) {
-  // WebDataServiceFactory has no dependecies.
-}
+WebDataServiceFactory::WebDataServiceFactory() = default;
 
-WebDataServiceFactory::~WebDataServiceFactory() {}
+WebDataServiceFactory::~WebDataServiceFactory() = default;
 
 // static
 WebDataServiceWrapper* WebDataServiceFactory::GetForProfile(
     Profile* profile,
     ServiceAccessType access_type) {
-  // If |access_type| starts being used for anything other than this
-  // DCHECK, we need to start taking it as a parameter to
-  // the *WebDataService::FromBrowserContext() functions (see above).
-  DCHECK(access_type != ServiceAccessType::IMPLICIT_ACCESS ||
-         !profile->IsOffTheRecord());
-  return static_cast<WebDataServiceWrapper*>(
-      GetInstance()->GetServiceForBrowserContext(profile, true));
+  return GetForBrowserContext(profile, access_type);
 }
 
 // static
 WebDataServiceWrapper* WebDataServiceFactory::GetForProfileIfExists(
     Profile* profile,
     ServiceAccessType access_type) {
-  // If |access_type| starts being used for anything other than this
-  // DCHECK, we need to start taking it as a parameter to
-  // the *WebDataService::FromBrowserContext() functions (see above).
-  DCHECK(access_type != ServiceAccessType::IMPLICIT_ACCESS ||
-         !profile->IsOffTheRecord());
-  return static_cast<WebDataServiceWrapper*>(
-      GetInstance()->GetServiceForBrowserContext(profile, false));
+  return GetForBrowserContextIfExists(profile, access_type);
 }
 
 // static
@@ -150,12 +132,8 @@
 WebDataServiceFactory::GetPaymentManifestWebDataForProfile(
     Profile* profile,
     ServiceAccessType access_type) {
-  WebDataServiceWrapper* wrapper =
-      WebDataServiceFactory::GetForProfile(profile, access_type);
-  // |wrapper| can be null in Incognito mode.
-  return wrapper
-             ? wrapper->GetPaymentManifestWebData()
-             : scoped_refptr<payments::PaymentManifestWebDataService>(nullptr);
+  return GetPaymentManifestWebDataServiceForBrowserContext(profile,
+                                                           access_type);
 }
 
 // static
diff --git a/chrome/browser/web_data_service_factory.h b/chrome/browser/web_data_service_factory.h
index 6a5575b..8be3da6 100644
--- a/chrome/browser/web_data_service_factory.h
+++ b/chrome/browser/web_data_service_factory.h
@@ -8,8 +8,8 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "build/build_config.h"
-#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
 #include "components/keyed_service/core/service_access_type.h"
+#include "components/webdata_services/web_data_service_wrapper_factory.h"
 
 namespace base {
 template <typename T>
@@ -31,7 +31,8 @@
 
 // Singleton that owns all WebDataServiceWrappers and associates them with
 // Profiles.
-class WebDataServiceFactory : public BrowserContextKeyedServiceFactory {
+class WebDataServiceFactory
+    : public webdata_services::WebDataServiceWrapperFactory {
  public:
   // Returns the WebDataServiceWrapper associated with the |profile|.
   static WebDataServiceWrapper* GetForProfile(Profile* profile,
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt
index 0ebe429b5..4b3feab 100644
--- a/chrome/build/mac.pgo.txt
+++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@
-chrome-mac-master-1619157502-0ba0039f5868d365d25cc1d95737e35a71ee7313.profdata
+chrome-mac-master-1619179160-a2faa42196bee98cb70d4cc3f0e1e92885d56e56.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 3b791f713..2cfd1ff 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-master-1619146346-2b9ff244afa9fb8de257a2a0804d718aa1beddcb.profdata
+chrome-win32-master-1619168220-17f7ea21e4f48d7a3f9ad31f8533ba6390347e09.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index 937b020..dad2738 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-master-1619146346-377981fbce51860c9bdcb616f59284c82e91e42c.profdata
+chrome-win64-master-1619179160-f4c81f7f2328819587eeea782fb580f92e64cdd8.profdata
diff --git a/chrome/renderer/net/net_error_page_controller.cc b/chrome/renderer/net/net_error_page_controller.cc
index 65665cbb..ae7c0db 100644
--- a/chrome/renderer/net/net_error_page_controller.cc
+++ b/chrome/renderer/net/net_error_page_controller.cc
@@ -22,6 +22,8 @@
                                      base::WeakPtr<Delegate> delegate) {
   v8::Isolate* isolate = blink::MainThreadIsolate();
   v8::HandleScope handle_scope(isolate);
+  v8::MicrotasksScope microtasks_scope(
+      isolate, v8::MicrotasksScope::kDoNotRunMicrotasks);
   v8::Local<v8::Context> context =
       render_frame->GetWebFrame()->MainWorldScriptContext();
   if (context.IsEmpty())
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 9011ef81..33a028d 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -4451,6 +4451,7 @@
       "../browser/password_manager/android/update_password_infobar_delegate_android_unittest.cc",
       "../browser/permissions/permission_prompt_android_unittest.cc",
       "../browser/profiles/android/profile_resolver_unittest.cc",
+      "../browser/sharing/click_to_call/click_to_call_message_handler_android_unittest.cc",
       "../browser/sharing/sms/sms_fetch_request_handler_unittest.cc",
       "../browser/touch_to_fill/touch_to_fill_controller_unittest.cc",
       "../browser/translate/translate_manager_render_view_host_android_unittest.cc",
diff --git a/chrome/test/data/pdf/basic_test.js b/chrome/test/data/pdf/basic_test.js
index 4a3237d..3cc35497 100644
--- a/chrome/test/data/pdf/basic_test.js
+++ b/chrome/test/data/pdf/basic_test.js
@@ -12,11 +12,7 @@
   function testHasElements() {
     const viewer = /** @type {!PDFViewerElement} */ (
         document.body.querySelector('pdf-viewer'));
-    const elementNames = [
-      'viewer-error-screen',
-      'viewer-pdf-sidenav',
-      'viewer-toolbar',
-    ];
+    const elementNames = ['viewer-pdf-sidenav', 'viewer-toolbar'];
 
     for (let i = 0; i < elementNames.length; i++) {
       const elements = viewer.shadowRoot.querySelectorAll(elementNames[i]);
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json
index d0ba965..edf3e4b 100644
--- a/chrome/test/data/policy/policy_test_cases.json
+++ b/chrome/test/data/policy/policy_test_cases.json
@@ -941,7 +941,15 @@
     "policy_pref_mapping_tests": [
       {
         "policies": { "SyncDisabled": true },
-        "prefs": { "sync.managed": {} }
+        "prefs": { "sync.managed": { "value": true } }
+      },
+      {
+        "policies": { "SyncDisabled": false },
+        "prefs": { "sync.managed": { "value": false, "expect_default": true } }
+      },
+      {
+        "policies": { },
+        "prefs": { "sync.managed": { "value": false, "expect_default": true } }
       }
     ]
   },
diff --git a/chrome/test/data/webui/print_preview/pdf_viewer_test.js b/chrome/test/data/webui/print_preview/pdf_viewer_test.js
index 05153f3..ac981d45 100644
--- a/chrome/test/data/webui/print_preview/pdf_viewer_test.js
+++ b/chrome/test/data/webui/print_preview/pdf_viewer_test.js
@@ -10,7 +10,7 @@
 import {PDFCreateOutOfProcessPlugin} from 'chrome://print/pdf/pdf_scripting_api.js';
 import {assert} from 'chrome://resources/js/assert.m.js';
 import {assertEquals, assertFalse, assertTrue} from '../chai_assert.js';
-import {eventToPromise} from '../test_util.m.js';
+import {eventToPromise, waitAfterNextRender} from '../test_util.m.js';
 
 window.pdf_viewer_test = {};
 pdf_viewer_test.suiteName = 'PdfViewerTest';
@@ -43,8 +43,8 @@
       assertEquals(id, element.id);
     };
 
-    ['zoom-toolbar', 'error-screen', 'page-indicator'].forEach(
-        id => verifyElement(id));
+    ['zoom-toolbar', 'page-indicator'].forEach(id => verifyElement(id));
+
     // Should also have the sizer and content divs
     assertTrue(!!viewer.shadowRoot.querySelector('#sizer'));
     assertTrue(!!viewer.shadowRoot.querySelector('#content'));
@@ -52,6 +52,12 @@
     // These elements don't exist in Print Preview's viewer.
     ['viewer-pdf-toolbar', 'viewer-form-warning'].forEach(
         name => assertFalse(!!viewer.shadowRoot.querySelector(name)));
+
+    // The error dialog only appears when it is needed.
+    assertFalse(!!viewer.shadowRoot.querySelector('viewer-error-dialog'));
+    viewer.showErrorDialog = true;
+    await waitAfterNextRender(viewer);
+    assertTrue(!!viewer.shadowRoot.querySelector('viewer-error-dialog'));
   });
 
   test(assert(pdf_viewer_test.TestNames.PageIndicator), function() {
diff --git a/chromeos/profiles/atom.afdo.newest.txt b/chromeos/profiles/atom.afdo.newest.txt
index 8707904..1f5d15b 100644
--- a/chromeos/profiles/atom.afdo.newest.txt
+++ b/chromeos/profiles/atom.afdo.newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-atom-91-4472.10-1618826547-benchmark-91.0.4472.20-r1-redacted.afdo.xz
+chromeos-chrome-amd64-atom-92-4472.10-1618825180-benchmark-92.0.4485.0-r1-redacted.afdo.xz
diff --git a/chromeos/profiles/bigcore.afdo.newest.txt b/chromeos/profiles/bigcore.afdo.newest.txt
index 0ee71c26..f1bb3548 100644
--- a/chromeos/profiles/bigcore.afdo.newest.txt
+++ b/chromeos/profiles/bigcore.afdo.newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-bigcore-91-4468.3-1618828710-benchmark-91.0.4472.20-r1-redacted.afdo.xz
+chromeos-chrome-amd64-bigcore-92-4468.3-1618828197-benchmark-92.0.4485.0-r1-redacted.afdo.xz
diff --git a/chromeos/tast_control.gni b/chromeos/tast_control.gni
index 454be90..1c9a223 100644
--- a/chromeos/tast_control.gni
+++ b/chromeos/tast_control.gni
@@ -70,4 +70,7 @@
 
   # crbug.com/1192623
   "policy.AllowDeletingBrowserHistory",
+
+  # crbug.com/1202124
+  "health.ProbeNetworkInfo",
 ]
diff --git a/components/autofill_assistant/browser/BUILD.gn b/components/autofill_assistant/browser/BUILD.gn
index bcaefe99..d8e22140 100644
--- a/components/autofill_assistant/browser/BUILD.gn
+++ b/components/autofill_assistant/browser/BUILD.gn
@@ -27,6 +27,10 @@
     "actions/action_delegate.h",
     "actions/action_delegate_util.cc",
     "actions/action_delegate_util.h",
+    "actions/check_element_tag_action.cc",
+    "actions/check_element_tag_action.h",
+    "actions/check_option_element_action.cc",
+    "actions/check_option_element_action.h",
     "actions/click_action.cc",
     "actions/click_action.h",
     "actions/collect_user_data_action.cc",
@@ -329,6 +333,8 @@
     "actions/action_test_utils.cc",
     "actions/action_test_utils.h",
     "actions/action_unittest.cc",
+    "actions/check_element_tag_action_unittest.cc",
+    "actions/check_option_element_action_unittest.cc",
     "actions/click_action_unittest.cc",
     "actions/collect_user_data_action_unittest.cc",
     "actions/configure_bottom_sheet_action_unittest.cc",
diff --git a/components/autofill_assistant/browser/actions/action.cc b/components/autofill_assistant/browser/actions/action.cc
index 7fd7efa1..2cdeba4 100644
--- a/components/autofill_assistant/browser/actions/action.cc
+++ b/components/autofill_assistant/browser/actions/action.cc
@@ -225,6 +225,12 @@
     case ActionProto::ActionInfoCase::kSelectOptionElement:
       out << "SelectOptionElement";
       break;
+    case ActionProto::ActionInfoCase::kCheckElementTag:
+      out << "CheckElementTag";
+      break;
+    case ActionProto::ActionInfoCase::kCheckOptionElement:
+      out << "CheckOptionElement";
+      break;
     case ActionProto::ActionInfoCase::ACTION_INFO_NOT_SET:
       out << "ACTION_INFO_NOT_SET";
       break;
diff --git a/components/autofill_assistant/browser/actions/check_element_tag_action.cc b/components/autofill_assistant/browser/actions/check_element_tag_action.cc
new file mode 100644
index 0000000..287142fc
--- /dev/null
+++ b/components/autofill_assistant/browser/actions/check_element_tag_action.cc
@@ -0,0 +1,71 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/autofill_assistant/browser/actions/check_element_tag_action.h"
+
+#include "base/strings/string_util.h"
+#include "components/autofill_assistant/browser/actions/action_delegate.h"
+#include "components/autofill_assistant/browser/client_status.h"
+#include "components/autofill_assistant/browser/service.pb.h"
+#include "components/autofill_assistant/browser/web/element_store.h"
+#include "components/autofill_assistant/browser/web/web_controller.h"
+
+namespace autofill_assistant {
+
+CheckElementTagAction::CheckElementTagAction(ActionDelegate* delegate,
+                                             const ActionProto& proto)
+    : Action(delegate, proto) {
+  DCHECK(proto_.has_check_element_tag());
+}
+
+CheckElementTagAction::~CheckElementTagAction() = default;
+
+void CheckElementTagAction::InternalProcessAction(
+    ProcessActionCallback callback) {
+  callback_ = std::move(callback);
+
+  ClientStatus element_status = delegate_->GetElementStore()->GetElement(
+      proto_.check_element_tag().client_id().identifier(), &element_);
+  if (!element_status.ok()) {
+    EndAction(element_status);
+    return;
+  }
+
+  delegate_->GetWebController()->GetElementTag(
+      element_, base::BindOnce(&CheckElementTagAction::OnGetElementTag,
+                               weak_ptr_factory_.GetWeakPtr()));
+}
+
+void CheckElementTagAction::OnGetElementTag(const ClientStatus& status,
+                                            const std::string& actual_tag) {
+  if (!status.ok()) {
+    EndAction(status);
+    return;
+  }
+
+  std::string lower_tag = base::ToLowerASCII(actual_tag);
+  for (const std::string& tag : proto_.check_element_tag().any_of_tag()) {
+    if (base::ToLowerASCII(tag) == lower_tag) {
+      EndAction(OkClientStatus());
+      return;
+    }
+  }
+
+  VLOG(2) << "Expected " << proto_.check_element_tag().client_id().identifier()
+          << " to have one of the following tags: "
+          << base::JoinString(
+                 std::vector<std::string>(
+                     proto_.check_element_tag().any_of_tag().begin(),
+                     proto_.check_element_tag().any_of_tag().end()),
+                 ", ")
+          << ", but was " << actual_tag;
+  EndAction(ClientStatus(ELEMENT_MISMATCH));
+}
+
+void CheckElementTagAction::EndAction(const ClientStatus& status) {
+  UpdateProcessedAction(status);
+  std::move(callback_).Run(std::move(processed_action_proto_));
+}
+
+}  // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/actions/check_element_tag_action.h b/components/autofill_assistant/browser/actions/check_element_tag_action.h
new file mode 100644
index 0000000..2c1d84a4
--- /dev/null
+++ b/components/autofill_assistant/browser/actions/check_element_tag_action.h
@@ -0,0 +1,43 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_ACTIONS_CHECK_ELEMENT_TAG_ACTION_H_
+#define COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_ACTIONS_CHECK_ELEMENT_TAG_ACTION_H_
+
+#include "base/callback.h"
+#include "base/memory/weak_ptr.h"
+#include "components/autofill_assistant/browser/actions/action.h"
+#include "components/autofill_assistant/browser/client_status.h"
+#include "components/autofill_assistant/browser/dom_action.pb.h"
+#include "components/autofill_assistant/browser/service.pb.h"
+#include "components/autofill_assistant/browser/web/element_finder.h"
+
+namespace autofill_assistant {
+
+// Action to check whether or not an element matches the expected set of tags.
+class CheckElementTagAction : public Action {
+ public:
+  explicit CheckElementTagAction(ActionDelegate* delegate,
+                                 const ActionProto& proto);
+  ~CheckElementTagAction() override;
+
+  CheckElementTagAction(const CheckElementTagAction&) = delete;
+  CheckElementTagAction& operator=(const CheckElementTagAction&) = delete;
+
+ private:
+  // Overrides Action:
+  void InternalProcessAction(ProcessActionCallback callback) override;
+
+  void OnGetElementTag(const ClientStatus& status, const std::string& tag);
+
+  void EndAction(const ClientStatus& status);
+
+  ElementFinder::Result element_;
+  ProcessActionCallback callback_;
+
+  base::WeakPtrFactory<CheckElementTagAction> weak_ptr_factory_{this};
+};
+
+}  // namespace autofill_assistant
+#endif  // COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_ACTIONS_CHECK_ELEMENT_TAG_ACTION_H_
diff --git a/components/autofill_assistant/browser/actions/check_element_tag_action_unittest.cc b/components/autofill_assistant/browser/actions/check_element_tag_action_unittest.cc
new file mode 100644
index 0000000..63cc0d7
--- /dev/null
+++ b/components/autofill_assistant/browser/actions/check_element_tag_action_unittest.cc
@@ -0,0 +1,98 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/autofill_assistant/browser/actions/check_element_tag_action.h"
+
+#include "base/guid.h"
+#include "base/test/gmock_callback_support.h"
+#include "base/test/mock_callback.h"
+#include "components/autofill_assistant/browser/actions/action_test_utils.h"
+#include "components/autofill_assistant/browser/actions/mock_action_delegate.h"
+#include "components/autofill_assistant/browser/dom_action.pb.h"
+#include "components/autofill_assistant/browser/service.pb.h"
+#include "components/autofill_assistant/browser/web/element_finder.h"
+#include "components/autofill_assistant/browser/web/element_store.h"
+#include "components/autofill_assistant/browser/web/mock_web_controller.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+namespace autofill_assistant {
+namespace {
+
+using ::base::test::RunOnceCallback;
+using ::testing::_;
+using ::testing::Pointee;
+using ::testing::Property;
+using ::testing::Return;
+
+const char kClientId[] = "select";
+
+class CheckElementTagActionTest : public testing::Test {
+ public:
+  CheckElementTagActionTest() {}
+
+  void SetUp() override {
+    ON_CALL(mock_action_delegate_, GetWebController)
+        .WillByDefault(Return(&mock_web_controller_));
+
+    proto_.mutable_client_id()->set_identifier(kClientId);
+  }
+
+ protected:
+  void Run() {
+    ActionProto action_proto;
+    *action_proto.mutable_check_element_tag() = proto_;
+    CheckElementTagAction action(&mock_action_delegate_, action_proto);
+    action.ProcessAction(callback_.Get());
+  }
+
+  MockActionDelegate mock_action_delegate_;
+  MockWebController mock_web_controller_;
+  base::MockCallback<Action::ProcessActionCallback> callback_;
+  CheckElementTagProto proto_;
+};
+
+TEST_F(CheckElementTagActionTest, UnknownElementFails) {
+  EXPECT_CALL(callback_, Run(Pointee(Property(&ProcessedActionProto::status,
+                                              CLIENT_ID_RESOLUTION_FAILED))));
+  Run();
+}
+
+TEST_F(CheckElementTagActionTest, SucceedsForMatchingTagCaseInsensitive) {
+  ElementFinder::Result element;
+  element.dom_object.object_data.object_id = "e";
+  mock_action_delegate_.GetElementStore()->AddElement(kClientId,
+                                                      element.dom_object);
+
+  EXPECT_CALL(mock_web_controller_, GetElementTag(EqualsElement(element), _))
+      .WillOnce(RunOnceCallback<1>(OkClientStatus(), "TAG"));
+
+  proto_.add_any_of_tag("other");
+  proto_.add_any_of_tag("tag");
+
+  EXPECT_CALL(
+      callback_,
+      Run(Pointee(Property(&ProcessedActionProto::status, ACTION_APPLIED))));
+  Run();
+}
+
+TEST_F(CheckElementTagActionTest, FailsForNoMatchingTags) {
+  ElementFinder::Result element;
+  element.dom_object.object_data.object_id = "e";
+  mock_action_delegate_.GetElementStore()->AddElement(kClientId,
+                                                      element.dom_object);
+
+  EXPECT_CALL(mock_web_controller_, GetElementTag(EqualsElement(element), _))
+      .WillOnce(RunOnceCallback<1>(OkClientStatus(), "TAG"));
+
+  proto_.add_any_of_tag("DIV");
+  proto_.add_any_of_tag("P");
+
+  EXPECT_CALL(
+      callback_,
+      Run(Pointee(Property(&ProcessedActionProto::status, ELEMENT_MISMATCH))));
+  Run();
+}
+
+}  // namespace
+}  // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/actions/check_option_element_action.cc b/components/autofill_assistant/browser/actions/check_option_element_action.cc
new file mode 100644
index 0000000..848c5929
--- /dev/null
+++ b/components/autofill_assistant/browser/actions/check_option_element_action.cc
@@ -0,0 +1,61 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/autofill_assistant/browser/actions/check_option_element_action.h"
+
+#include "components/autofill_assistant/browser/actions/action_delegate.h"
+#include "components/autofill_assistant/browser/client_status.h"
+#include "components/autofill_assistant/browser/service.pb.h"
+#include "components/autofill_assistant/browser/web/element_store.h"
+#include "components/autofill_assistant/browser/web/web_controller.h"
+
+namespace autofill_assistant {
+
+CheckOptionElementAction::CheckOptionElementAction(ActionDelegate* delegate,
+                                                   const ActionProto& proto)
+    : Action(delegate, proto) {
+  DCHECK(proto_.has_check_option_element());
+}
+
+CheckOptionElementAction::~CheckOptionElementAction() = default;
+
+void CheckOptionElementAction::InternalProcessAction(
+    ProcessActionCallback callback) {
+  callback_ = std::move(callback);
+
+  ClientStatus select_status = delegate_->GetElementStore()->GetElement(
+      proto_.check_option_element().select_id().identifier(), &select_);
+  if (!select_status.ok()) {
+    EndAction(select_status);
+    return;
+  }
+
+  ClientStatus option_status = delegate_->GetElementStore()->GetElement(
+      proto_.check_option_element().option_id().identifier(), &option_);
+  if (!option_status.ok()) {
+    EndAction(option_status);
+    return;
+  }
+
+  delegate_->GetWebController()->CheckSelectedOptionElement(
+      option_, select_,
+      base::BindOnce(&CheckOptionElementAction::OnCheckSelectedOptionElement,
+                     weak_ptr_factory_.GetWeakPtr()));
+}
+
+void CheckOptionElementAction::OnCheckSelectedOptionElement(
+    const ClientStatus& status) {
+  processed_action_proto_->mutable_check_option_element_result()->set_match(
+      status.ok());
+  EndAction(proto_.check_option_element().mismatch_should_fail()
+                ? status
+                : OkClientStatus());
+}
+
+void CheckOptionElementAction::EndAction(const ClientStatus& status) {
+  UpdateProcessedAction(status);
+  std::move(callback_).Run(std::move(processed_action_proto_));
+}
+
+}  // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/actions/check_option_element_action.h b/components/autofill_assistant/browser/actions/check_option_element_action.h
new file mode 100644
index 0000000..dae59b4
--- /dev/null
+++ b/components/autofill_assistant/browser/actions/check_option_element_action.h
@@ -0,0 +1,44 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_ACTIONS_CHECK_OPTION_ELEMENT_ACTION_H_
+#define COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_ACTIONS_CHECK_OPTION_ELEMENT_ACTION_H_
+
+#include "base/callback.h"
+#include "base/memory/weak_ptr.h"
+#include "components/autofill_assistant/browser/actions/action.h"
+#include "components/autofill_assistant/browser/client_status.h"
+#include "components/autofill_assistant/browser/dom_action.pb.h"
+#include "components/autofill_assistant/browser/service.pb.h"
+#include "components/autofill_assistant/browser/web/element_finder.h"
+
+namespace autofill_assistant {
+
+// Action to check an <option> element inside a <select> element.
+class CheckOptionElementAction : public Action {
+ public:
+  explicit CheckOptionElementAction(ActionDelegate* delegate,
+                                    const ActionProto& proto);
+  ~CheckOptionElementAction() override;
+
+  CheckOptionElementAction(const CheckOptionElementAction&) = delete;
+  CheckOptionElementAction& operator=(const CheckOptionElementAction&) = delete;
+
+ private:
+  // Overrides Action:
+  void InternalProcessAction(ProcessActionCallback callback) override;
+
+  void OnCheckSelectedOptionElement(const ClientStatus& status);
+
+  void EndAction(const ClientStatus& status);
+
+  ElementFinder::Result select_;
+  ElementFinder::Result option_;
+  ProcessActionCallback callback_;
+
+  base::WeakPtrFactory<CheckOptionElementAction> weak_ptr_factory_{this};
+};
+
+}  // namespace autofill_assistant
+#endif  // COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_ACTIONS_CHECK_OPTION_ELEMENT_ACTION_H_
diff --git a/components/autofill_assistant/browser/actions/check_option_element_action_unittest.cc b/components/autofill_assistant/browser/actions/check_option_element_action_unittest.cc
new file mode 100644
index 0000000..f18f4b9
--- /dev/null
+++ b/components/autofill_assistant/browser/actions/check_option_element_action_unittest.cc
@@ -0,0 +1,153 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/autofill_assistant/browser/actions/check_option_element_action.h"
+
+#include "base/guid.h"
+#include "base/test/gmock_callback_support.h"
+#include "base/test/mock_callback.h"
+#include "components/autofill_assistant/browser/actions/action_test_utils.h"
+#include "components/autofill_assistant/browser/actions/mock_action_delegate.h"
+#include "components/autofill_assistant/browser/dom_action.pb.h"
+#include "components/autofill_assistant/browser/service.pb.h"
+#include "components/autofill_assistant/browser/web/element_finder.h"
+#include "components/autofill_assistant/browser/web/element_store.h"
+#include "components/autofill_assistant/browser/web/mock_web_controller.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+namespace autofill_assistant {
+namespace {
+
+using ::base::test::RunOnceCallback;
+using ::testing::_;
+using ::testing::Pointee;
+using ::testing::Property;
+using ::testing::Return;
+
+const char kSelectId[] = "select";
+const char kOptionId[] = "option";
+
+class CheckOptionElementActionTest : public testing::Test {
+ public:
+  CheckOptionElementActionTest() {}
+
+  void SetUp() override {
+    ON_CALL(mock_action_delegate_, GetWebController)
+        .WillByDefault(Return(&mock_web_controller_));
+
+    proto_.mutable_select_id()->set_identifier(kSelectId);
+    proto_.mutable_option_id()->set_identifier(kOptionId);
+  }
+
+ protected:
+  void Run() {
+    ActionProto action_proto;
+    *action_proto.mutable_check_option_element() = proto_;
+    CheckOptionElementAction action(&mock_action_delegate_, action_proto);
+    action.ProcessAction(callback_.Get());
+  }
+
+  MockActionDelegate mock_action_delegate_;
+  MockWebController mock_web_controller_;
+  base::MockCallback<Action::ProcessActionCallback> callback_;
+  CheckOptionElementProto proto_;
+};
+
+TEST_F(CheckOptionElementActionTest, UnknownSelectElementFails) {
+  EXPECT_CALL(callback_, Run(Pointee(Property(&ProcessedActionProto::status,
+                                              CLIENT_ID_RESOLUTION_FAILED))));
+  Run();
+}
+
+TEST_F(CheckOptionElementActionTest, UnknownOptionElementFails) {
+  ElementFinder::Result select;
+  mock_action_delegate_.GetElementStore()->AddElement(kSelectId,
+                                                      select.dom_object);
+
+  EXPECT_CALL(callback_, Run(Pointee(Property(&ProcessedActionProto::status,
+                                              CLIENT_ID_RESOLUTION_FAILED))));
+  Run();
+}
+
+TEST_F(CheckOptionElementActionTest, SucceedsForMatchingOption) {
+  ElementFinder::Result select;
+  select.dom_object.object_data.object_id = "select";
+  mock_action_delegate_.GetElementStore()->AddElement(kSelectId,
+                                                      select.dom_object);
+  ElementFinder::Result option;
+  option.dom_object.object_data.object_id = "option";
+  mock_action_delegate_.GetElementStore()->AddElement(kOptionId,
+                                                      option.dom_object);
+
+  EXPECT_CALL(mock_web_controller_,
+              CheckSelectedOptionElement(EqualsElement(option),
+                                         EqualsElement(select), _))
+      .WillOnce(RunOnceCallback<2>(OkClientStatus()));
+
+  EXPECT_CALL(
+      callback_,
+      Run(Pointee(
+          AllOf(Property(&ProcessedActionProto::status, ACTION_APPLIED),
+                Property(&ProcessedActionProto::check_option_element_result,
+                         AllOf(Property(&CheckOptionElementProto::Result::match,
+                                        true)))))));
+  Run();
+}
+
+TEST_F(CheckOptionElementActionTest, DoesNotFailForMismatch) {
+  ElementFinder::Result select;
+  select.dom_object.object_data.object_id = "select";
+  mock_action_delegate_.GetElementStore()->AddElement(kSelectId,
+                                                      select.dom_object);
+  ElementFinder::Result option;
+  option.dom_object.object_data.object_id = "option";
+  mock_action_delegate_.GetElementStore()->AddElement(kOptionId,
+                                                      option.dom_object);
+
+  EXPECT_CALL(mock_web_controller_,
+              CheckSelectedOptionElement(EqualsElement(option),
+                                         EqualsElement(select), _))
+      .WillOnce(RunOnceCallback<2>(ClientStatus(ELEMENT_MISMATCH)));
+
+  proto_.set_mismatch_should_fail(false);
+
+  EXPECT_CALL(
+      callback_,
+      Run(Pointee(
+          AllOf(Property(&ProcessedActionProto::status, ACTION_APPLIED),
+                Property(&ProcessedActionProto::check_option_element_result,
+                         AllOf(Property(&CheckOptionElementProto::Result::match,
+                                        false)))))));
+  Run();
+}
+
+TEST_F(CheckOptionElementActionTest, FailsForMismatchIfSpecified) {
+  ElementFinder::Result select;
+  select.dom_object.object_data.object_id = "select";
+  mock_action_delegate_.GetElementStore()->AddElement(kSelectId,
+                                                      select.dom_object);
+  ElementFinder::Result option;
+  option.dom_object.object_data.object_id = "option";
+  mock_action_delegate_.GetElementStore()->AddElement(kOptionId,
+                                                      option.dom_object);
+
+  EXPECT_CALL(mock_web_controller_,
+              CheckSelectedOptionElement(EqualsElement(option),
+                                         EqualsElement(select), _))
+      .WillOnce(RunOnceCallback<2>(ClientStatus(ELEMENT_MISMATCH)));
+
+  proto_.set_mismatch_should_fail(true);
+
+  EXPECT_CALL(
+      callback_,
+      Run(Pointee(
+          AllOf(Property(&ProcessedActionProto::status, ELEMENT_MISMATCH),
+                Property(&ProcessedActionProto::check_option_element_result,
+                         AllOf(Property(&CheckOptionElementProto::Result::match,
+                                        false)))))));
+  Run();
+}
+
+}  // namespace
+}  // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/dom_action.proto b/components/autofill_assistant/browser/dom_action.proto
index 53e3034..b7b75fc 100644
--- a/components/autofill_assistant/browser/dom_action.proto
+++ b/components/autofill_assistant/browser/dom_action.proto
@@ -116,3 +116,25 @@
   optional ClientIdProto select_id = 1;
   optional ClientIdProto option_id = 2;
 }
+
+// Checks if any of the tags matches the element tag of the element in
+// |client_id|. Returns |ACTION_APPLIED| if there is a match and
+// |ELEMENT_MISMATCH| otherwise.
+message CheckElementTagProto {
+  optional ClientIdProto client_id = 1;
+  repeated string any_of_tag = 2;
+}
+
+// Check whether the element in |option_d| is selected in the element in
+// |select_id|.
+message CheckOptionElementProto {
+  optional ClientIdProto select_id = 1;
+  optional ClientIdProto option_id = 2;
+
+  // If set and a mismatch happens, the action will report a failure status
+  // with |ELEMENT_MISMATCH|. If this flag is set to false, the action will not
+  // fail and simply report the result.
+  optional bool mismatch_should_fail = 3;
+
+  message Result { optional bool match = 1; }
+}
diff --git a/components/autofill_assistant/browser/protocol_utils.cc b/components/autofill_assistant/browser/protocol_utils.cc
index 6a6427a9..27fac2b 100644
--- a/components/autofill_assistant/browser/protocol_utils.cc
+++ b/components/autofill_assistant/browser/protocol_utils.cc
@@ -9,6 +9,8 @@
 #include "base/feature_list.h"
 #include "base/logging.h"
 #include "components/autofill_assistant/browser/actions/action_delegate_util.h"
+#include "components/autofill_assistant/browser/actions/check_element_tag_action.h"
+#include "components/autofill_assistant/browser/actions/check_option_element_action.h"
 #include "components/autofill_assistant/browser/actions/click_action.h"
 #include "components/autofill_assistant/browser/actions/collect_user_data_action.h"
 #include "components/autofill_assistant/browser/actions/configure_bottom_sheet_action.h"
@@ -344,6 +346,10 @@
               action.select_option_element().option_id(),
               base::BindOnce(&WebController::SelectOptionElement,
                              delegate->GetWebController()->GetWeakPtr())));
+    case ActionProto::ActionInfoCase::kCheckElementTag:
+      return std::make_unique<CheckElementTagAction>(delegate, action);
+    case ActionProto::ActionInfoCase::kCheckOptionElement:
+      return std::make_unique<CheckOptionElementAction>(delegate, action);
     case ActionProto::ActionInfoCase::ACTION_INFO_NOT_SET: {
       VLOG(1) << "Encountered action with ACTION_INFO_NOT_SET";
       return std::make_unique<UnsupportedAction>(delegate, action);
diff --git a/components/autofill_assistant/browser/service.proto b/components/autofill_assistant/browser/service.proto
index 509ad20..12ed39ba 100644
--- a/components/autofill_assistant/browser/service.proto
+++ b/components/autofill_assistant/browser/service.proto
@@ -753,6 +753,8 @@
     DispatchJsEventProto dispatch_js_event = 72;
     SendKeyEventProto send_key_event = 73;
     SelectOptionElementProto select_option_element = 74;
+    CheckElementTagProto check_element_tag = 75;
+    CheckOptionElementProto check_option_element = 76;
   }
 
   // Set to true to make the client remove any contextual information if the
@@ -856,6 +858,8 @@
     GetElementStatusProto.Result get_element_status_result = 31;
     // Should be set as a result of UploadDomProto.
     UploadDomProto.Result upload_dom_result = 33;
+    // Should be set as a result of CheckOptionElementProto.
+    CheckOptionElementProto.Result check_option_element_result = 35;
   }
 
   // Reports information about navigation that happened while
@@ -1112,11 +1116,14 @@
     // Send a single key event.
     SEND_KEY_EVENT = 21;
 
-    // Set the selected option index of an element.
+    // Set the selected option of an element.
     SELECT_OPTION_ELEMENT = 22;
 
     // Send a JS click to the element.
     JS_CLICK_ELEMENT = 23;
+
+    // Check the selected option of an element.
+    CHECK_OPTION_ELEMENT = 24;
   }
 
   // The web-action that failed. This is usually a step in an execution chain
@@ -2873,7 +2880,7 @@
   optional ValueMatch expected_value_match = 2;
   optional ValueSource value_source = 4;
 
-  // If set and a mismatch happens, the action will report an failure status
+  // If set and a mismatch happens, the action will report a failure status
   // with |ELEMENT_MISMATCH|. If this flag is set to false, the action will not
   // fail and simply report the result.
   optional bool mismatch_should_fail = 3;
diff --git a/components/autofill_assistant/browser/web/mock_web_controller.h b/components/autofill_assistant/browser/web/mock_web_controller.h
index 1209e35..99ba41b4 100644
--- a/components/autofill_assistant/browser/web/mock_web_controller.h
+++ b/components/autofill_assistant/browser/web/mock_web_controller.h
@@ -49,6 +49,10 @@
                         option_comparison_attribute,
                     const ElementFinder::Result& element,
                     base::OnceCallback<void(const ClientStatus&)> callback));
+  MOCK_METHOD3(CheckSelectedOptionElement,
+               void(const ElementFinder::Result& option,
+                    const ElementFinder::Result& element,
+                    base::OnceCallback<void(const ClientStatus&)> callback));
   MOCK_METHOD2(HighlightElement,
                void(const ElementFinder::Result&,
                     base::OnceCallback<void(const ClientStatus&)>));
diff --git a/components/autofill_assistant/browser/web/web_controller.cc b/components/autofill_assistant/browser/web/web_controller.cc
index 1e3b718..98a73b9 100644
--- a/components/autofill_assistant/browser/web/web_controller.cc
+++ b/components/autofill_assistant/browser/web/web_controller.cc
@@ -119,6 +119,14 @@
       return false;
     })";
 
+// Javascript to check the option element in a select element against an
+// expected match.
+const char* const kCheckOptionElementScript =
+    R"(function(option) {
+      if (this.options == null) return false;
+      return this.options[this.options.selectedIndex] === option;
+    })";
+
 // Javascript to highlight an element.
 const char* const kHighlightElementScript =
     R"(function() {
@@ -954,11 +962,12 @@
           .SetReturnByValue(true)
           .Build(),
       element.node_frame_id(),
-      base::BindOnce(&WebController::OnSelectOption,
+      base::BindOnce(&WebController::OnJavascriptResultExpectingTrue,
                      weak_ptr_factory_.GetWeakPtr(),
                      base::BindOnce(&DecorateWebControllerStatus,
                                     WebControllerErrorInfoProto::SELECT_OPTION,
-                                    std::move(callback))));
+                                    std::move(callback)),
+                     /* status_if_false= */ OPTION_VALUE_NOT_FOUND));
 }
 
 void WebController::SelectOptionElement(
@@ -976,32 +985,56 @@
           .Build(),
       element.node_frame_id(),
       base::BindOnce(
-          &WebController::OnSelectOption, weak_ptr_factory_.GetWeakPtr(),
+          &WebController::OnJavascriptResultExpectingTrue,
+          weak_ptr_factory_.GetWeakPtr(),
           base::BindOnce(&DecorateWebControllerStatus,
                          WebControllerErrorInfoProto::SELECT_OPTION_ELEMENT,
-                         std::move(callback))));
+                         std::move(callback)),
+          /* status_if_false= */ OPTION_VALUE_NOT_FOUND));
 }
 
-void WebController::OnSelectOption(
+void WebController::CheckSelectedOptionElement(
+    const ElementFinder::Result& option,
+    const ElementFinder::Result& element,
+    base::OnceCallback<void(const ClientStatus&)> callback) {
+  std::vector<std::unique_ptr<runtime::CallArgument>> argument;
+  AddRuntimeCallArgumentObjectId(option.object_id(), &argument);
+  devtools_client_->GetRuntime()->CallFunctionOn(
+      runtime::CallFunctionOnParams::Builder()
+          .SetObjectId(element.object_id())
+          .SetArguments(std::move(argument))
+          .SetFunctionDeclaration(std::string(kCheckOptionElementScript))
+          .SetReturnByValue(true)
+          .Build(),
+      element.node_frame_id(),
+      base::BindOnce(
+          &WebController::OnJavascriptResultExpectingTrue,
+          weak_ptr_factory_.GetWeakPtr(),
+          base::BindOnce(&DecorateWebControllerStatus,
+                         WebControllerErrorInfoProto::CHECK_OPTION_ELEMENT,
+                         std::move(callback)),
+          /* status_if_false= */ ELEMENT_MISMATCH));
+}
+
+void WebController::OnJavascriptResultExpectingTrue(
     base::OnceCallback<void(const ClientStatus&)> callback,
+    ProcessedActionStatusProto status_if_false,
     const DevtoolsClient::ReplyStatus& reply_status,
     std::unique_ptr<runtime::CallFunctionOnResult> result) {
   ClientStatus status =
       CheckJavaScriptResult(reply_status, result.get(), __FILE__, __LINE__);
   if (!status.ok()) {
-    VLOG(1) << __func__ << " Failed to select option.";
     std::move(callback).Run(status);
     return;
   }
-  bool found;
-  if (!SafeGetBool(result->GetResult(), &found)) {
+  bool bool_result;
+  if (!SafeGetBool(result->GetResult(), &bool_result)) {
     std::move(callback).Run(
         UnexpectedDevtoolsErrorStatus(reply_status, __FILE__, __LINE__));
     return;
   }
-  if (!found) {
-    VLOG(1) << __func__ << " Failed to find option.";
-    std::move(callback).Run(ClientStatus(OPTION_VALUE_NOT_FOUND));
+  if (!bool_result) {
+    std::move(callback).Run(ClientStatus(status_if_false));
     return;
   }
   std::move(callback).Run(OkClientStatus());
diff --git a/components/autofill_assistant/browser/web/web_controller.h b/components/autofill_assistant/browser/web/web_controller.h
index 04fcdfd..3c85c82 100644
--- a/components/autofill_assistant/browser/web/web_controller.h
+++ b/components/autofill_assistant/browser/web/web_controller.h
@@ -160,6 +160,12 @@
       const ElementFinder::Result& element,
       base::OnceCallback<void(const ClientStatus&)> callback);
 
+  // Check if the selected option of the |element| is the expected |option|.
+  virtual void CheckSelectedOptionElement(
+      const ElementFinder::Result& option,
+      const ElementFinder::Result& element,
+      base::OnceCallback<void(const ClientStatus&)> callback);
+
   // Highlight an |element|.
   virtual void HighlightElement(
       const ElementFinder::Result& element,
@@ -459,9 +465,11 @@
       autofill::ContentAutofillDriver* driver,
       const autofill::FormData& form_data,
       const autofill::FormFieldData& form_field);
-  void OnSelectOption(base::OnceCallback<void(const ClientStatus&)> callback,
-                      const DevtoolsClient::ReplyStatus& reply_status,
-                      std::unique_ptr<runtime::CallFunctionOnResult> result);
+  void OnJavascriptResultExpectingTrue(
+      base::OnceCallback<void(const ClientStatus&)> callback,
+      ProcessedActionStatusProto status_if_false,
+      const DevtoolsClient::ReplyStatus& reply_status,
+      std::unique_ptr<runtime::CallFunctionOnResult> result);
 
   void OnSendKeyboardInputDone(
       SendKeyboardInputWorker* worker_to_release,
diff --git a/components/autofill_assistant/browser/web/web_controller_browsertest.cc b/components/autofill_assistant/browser/web/web_controller_browsertest.cc
index d72bfb3..06e6237d 100644
--- a/components/autofill_assistant/browser/web/web_controller_browsertest.cc
+++ b/components/autofill_assistant/browser/web/web_controller_browsertest.cc
@@ -394,6 +394,21 @@
                        std::move(done_callback), result_output));
   }
 
+  ClientStatus CheckSelectedOptionElement(const ElementFinder::Result& select,
+                                          const ElementFinder::Result& option) {
+    base::RunLoop run_loop;
+    ClientStatus result;
+
+    web_controller_->CheckSelectedOptionElement(
+        option, select,
+        base::BindOnce(&WebControllerBrowserTest::OnClientStatus,
+                       base::Unretained(this), run_loop.QuitClosure(),
+                       &result));
+
+    run_loop.Run();
+    return result;
+  }
+
   void OnClientStatus(base::OnceClosure done_callback,
                       ClientStatus* result_output,
                       const ClientStatus& status) {
@@ -2911,4 +2926,36 @@
             SelectOptionElement(selector, option).proto_status());
 }
 
+IN_PROC_BROWSER_TEST_F(WebControllerBrowserTest, CheckSelectedOptionElement) {
+  ClientStatus status;
+
+  ElementFinder::Result input;
+  FindElement(Selector({"#input1"}), &status, &input);
+  ASSERT_EQ(ACTION_APPLIED, status.proto_status());
+
+  ElementFinder::Result select;
+  FindElement(Selector({"#select"}), &status, &select);
+  ASSERT_EQ(ACTION_APPLIED, status.proto_status());
+
+  ElementFinder::Result selected_option;
+  FindElement(Selector({"#select option:nth-child(1)"}), &status,
+              &selected_option);
+  ASSERT_EQ(ACTION_APPLIED, status.proto_status());
+
+  ElementFinder::Result not_selected_option;
+  FindElement(Selector({"#select option:nth-child(2)"}), &status,
+              &not_selected_option);
+  ASSERT_EQ(ACTION_APPLIED, status.proto_status());
+
+  EXPECT_EQ(ACTION_APPLIED,
+            CheckSelectedOptionElement(select, selected_option).proto_status());
+  EXPECT_EQ(
+      ELEMENT_MISMATCH,
+      CheckSelectedOptionElement(select, not_selected_option).proto_status());
+
+  // Using on a non-<select> element.
+  EXPECT_EQ(ELEMENT_MISMATCH,
+            CheckSelectedOptionElement(input, selected_option).proto_status());
+}
+
 }  // namespace autofill_assistant
diff --git a/components/browser_ui/widget/android/java/res/values/dimens.xml b/components/browser_ui/widget/android/java/res/values/dimens.xml
index 0aaaed5..ed3f0ef8 100644
--- a/components/browser_ui/widget/android/java/res/values/dimens.xml
+++ b/components/browser_ui/widget/android/java/res/values/dimens.xml
@@ -123,6 +123,8 @@
     <dimen name="tile_view_offline_badge_margin_top_modern_condensed">6dp</dimen>
     <dimen name="tile_view_offline_badge_margin_end_modern_condensed">7dp</dimen>
     <dimen name="tile_view_padding">4dp</dimen>
+    <dimen name="tile_view_padding_portrait">8dp</dimen>
+    <dimen name="tile_view_padding_landscape">16dp</dimen>
     <dimen name="tile_view_title_margin_top_modern">61dp</dimen>
 
     <!-- Chips layout dimensions -->
diff --git a/components/exo/buffer.cc b/components/exo/buffer.cc
index 3378df0..8a5fdcf 100644
--- a/components/exo/buffer.cc
+++ b/components/exo/buffer.cc
@@ -24,7 +24,6 @@
 #include "components/viz/common/resources/resource_format.h"
 #include "components/viz/common/resources/resource_format_utils.h"
 #include "components/viz/common/resources/resource_id.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "gpu/GLES2/gl2extchromium.h"
 #include "gpu/command_buffer/client/context_support.h"
 #include "gpu/command_buffer/client/raster_interface.h"
diff --git a/components/exo/buffer_unittest.cc b/components/exo/buffer_unittest.cc
index e9fa419..abdc255 100644
--- a/components/exo/buffer_unittest.cc
+++ b/components/exo/buffer_unittest.cc
@@ -14,7 +14,6 @@
 #include "components/exo/test/exo_test_base.h"
 #include "components/exo/test/exo_test_helper.h"
 #include "components/viz/common/gpu/context_provider.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "gpu/command_buffer/client/raster_interface.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/aura/env.h"
diff --git a/components/exo/surface.cc b/components/exo/surface.cc
index 669224d..d1b0d4d 100644
--- a/components/exo/surface.cc
+++ b/components/exo/surface.cc
@@ -29,7 +29,6 @@
 #include "components/viz/common/quads/surface_draw_quad.h"
 #include "components/viz/common/quads/texture_draw_quad.h"
 #include "components/viz/common/resources/resource_id.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "third_party/khronos/GLES2/gl2.h"
 #include "third_party/skia/include/core/SkPath.h"
 #include "ui/aura/client/aura_constants.h"
diff --git a/components/page_load_metrics/browser/BUILD.gn b/components/page_load_metrics/browser/BUILD.gn
index b988a8c..71de6cd0 100644
--- a/components/page_load_metrics/browser/BUILD.gn
+++ b/components/page_load_metrics/browser/BUILD.gn
@@ -100,6 +100,7 @@
   sources = [
     "layout_shift_normalization_unittest.cc",
     "metrics_web_contents_observer_unittest.cc",
+    "observers/back_forward_cache_page_load_metrics_observer_unittest.cc",
     "observers/click_input_tracker_unittest.cc",
     "observers/core/uma_page_load_metrics_observer_unittest.cc",
     "observers/early_hints_page_load_metrics_observer_unittest.cc",
diff --git a/components/page_load_metrics/browser/observers/back_forward_cache_page_load_metrics_observer.cc b/components/page_load_metrics/browser/observers/back_forward_cache_page_load_metrics_observer.cc
index 4d3db54..d389419 100644
--- a/components/page_load_metrics/browser/observers/back_forward_cache_page_load_metrics_observer.cc
+++ b/components/page_load_metrics/browser/observers/back_forward_cache_page_load_metrics_observer.cc
@@ -72,6 +72,16 @@
   in_back_forward_cache_ = false;
   back_forward_cache_navigation_ids_.push_back(
       navigation_handle->GetNavigationId());
+
+  // HistoryNavigation is a singular event, and we share the same instance as
+  // long as we use the same source ID.
+  ukm::builders::HistoryNavigation builder(
+      GetUkmSourceIdForBackForwardCacheRestore(
+          back_forward_cache_navigation_ids_.size() - 1));
+  bool amp_flag = GetDelegate().GetMainFrameMetadata().behavior_flags &
+                  blink::kLoadingBehaviorAmpDocumentLoaded;
+  builder.SetBackForwardCache_IsAmpPage(amp_flag);
+  builder.Record(ukm::UkmRecorder::Get());
 }
 
 void BackForwardCachePageLoadMetricsObserver::
diff --git a/components/page_load_metrics/browser/observers/back_forward_cache_page_load_metrics_observer_unittest.cc b/components/page_load_metrics/browser/observers/back_forward_cache_page_load_metrics_observer_unittest.cc
new file mode 100644
index 0000000..23a3c03
--- /dev/null
+++ b/components/page_load_metrics/browser/observers/back_forward_cache_page_load_metrics_observer_unittest.cc
@@ -0,0 +1,101 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/page_load_metrics/browser/observers/back_forward_cache_page_load_metrics_observer.h"
+
+#include "components/page_load_metrics/browser/observers/page_load_metrics_observer_content_test_harness.h"
+#include "components/page_load_metrics/browser/page_load_tracker.h"
+#include "content/public/test/mock_navigation_handle.h"
+#include "services/metrics/public/cpp/ukm_builders.h"
+#include "services/metrics/public/mojom/ukm_interface.mojom.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+const char kTestUrl1[] = "https://www.google.com";
+
+class BackForwardCachePageLoadMetricsObserverTest
+    : public page_load_metrics::PageLoadMetricsObserverContentTestHarness {
+ public:
+  void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override {
+    auto observer = std::make_unique<BackForwardCachePageLoadMetricsObserver>();
+    observer_ = observer.get();
+    tracker->AddObserver(std::move(observer));
+  }
+
+  void SetUp() override {
+    PageLoadMetricsObserverContentTestHarness::SetUp();
+
+    page_load_metrics::InitPageLoadTimingForTest(&timing_);
+
+    // Navigating here so |RegisterObservers| will get called before each test.
+    NavigateAndCommit(GURL(kTestUrl1));
+  }
+
+  void AssertHistoryNavigationRecordedAmpNavigation(bool was_amp) {
+    auto entry_map = tester()->test_ukm_recorder().GetMergedEntriesByName(
+        ukm::builders::HistoryNavigation::kEntryName);
+    ASSERT_EQ(entry_map.size(), 1ull);
+    ukm::mojom::UkmEntry* entry = entry_map.begin()->second.get();
+
+    tester()->test_ukm_recorder().ExpectEntryMetric(
+        entry,
+        ukm::builders::HistoryNavigation::kBackForwardCache_IsAmpPageName,
+        was_amp);
+  }
+
+  static const page_load_metrics::mojom::FrameMetadata& AmpMetadata() {
+    static page_load_metrics::mojom::FrameMetadata metadata;
+    metadata.behavior_flags |=
+        blink::LoadingBehaviorFlag::kLoadingBehaviorAmpDocumentLoaded;
+    return metadata;
+  }
+
+  static const page_load_metrics::mojom::FrameMetadata& NonAmpMetadata() {
+    static page_load_metrics::mojom::FrameMetadata metadata;
+    metadata.behavior_flags &=
+        ~blink::LoadingBehaviorFlag::kLoadingBehaviorAmpDocumentLoaded;
+    return metadata;
+  }
+
+  page_load_metrics::mojom::PageLoadTiming timing_;
+  BackForwardCachePageLoadMetricsObserver* observer_;
+};
+
+TEST_F(BackForwardCachePageLoadMetricsObserverTest,
+       OnRestoreFromBackForwardCache_NonAmpPageHasFalse) {
+  content::MockNavigationHandle navigation_handle;
+  navigation_handle.set_is_served_from_bfcache(true);
+
+  tester()->SimulateMetadataUpdate(NonAmpMetadata(),
+                                   web_contents()->GetMainFrame());
+  observer_->OnRestoreFromBackForwardCache(timing_, &navigation_handle);
+
+  AssertHistoryNavigationRecordedAmpNavigation(false);
+}
+
+TEST_F(BackForwardCachePageLoadMetricsObserverTest,
+       OnRestoreFromBackForwardCache_AmpPageHasTrue) {
+  content::MockNavigationHandle navigation_handle;
+  navigation_handle.set_is_served_from_bfcache(true);
+
+  tester()->SimulateMetadataUpdate(AmpMetadata(),
+                                   web_contents()->GetMainFrame());
+  observer_->OnRestoreFromBackForwardCache(timing_, &navigation_handle);
+
+  AssertHistoryNavigationRecordedAmpNavigation(true);
+}
+
+TEST_F(BackForwardCachePageLoadMetricsObserverTest,
+       OnNonBackForwardCacheNavigation_AmpPageIsUndefined) {
+  content::MockNavigationHandle navigation_handle;
+  navigation_handle.set_is_served_from_bfcache(false);
+
+  tester()->SimulateMetadataUpdate(NonAmpMetadata(),
+                                   web_contents()->GetMainFrame());
+
+  // Since there was no call to observer_->OnRestoreFromBackForwardCache, there
+  // should be no HistoryNavigation UKM entry.
+  auto entry_map = tester()->test_ukm_recorder().GetMergedEntriesByName(
+      ukm::builders::HistoryNavigation::kEntryName);
+  EXPECT_EQ(entry_map.size(), 0ull);
+}
diff --git a/components/page_load_metrics/browser/page_load_metrics_test_waiter.cc b/components/page_load_metrics/browser/page_load_metrics_test_waiter.cc
index 3499984..88ce01e 100644
--- a/components/page_load_metrics/browser/page_load_metrics_test_waiter.cc
+++ b/components/page_load_metrics/browser/page_load_metrics_test_waiter.cc
@@ -96,6 +96,11 @@
   expected_.memory_update_frame_ids_.insert(routing_id);
 }
 
+void PageLoadMetricsTestWaiter::AddLoadingBehaviorExpectation(
+    int behavior_flags) {
+  expected_.loading_behavior_flags_ |= behavior_flags;
+}
+
 bool PageLoadMetricsTestWaiter::DidObserveInPage(TimingField field) const {
   return observed_.page_fields_.IsSet(field);
 }
@@ -150,6 +155,12 @@
     run_loop_->Quit();
 }
 
+void PageLoadMetricsTestWaiter::OnLoadingBehaviorObserved(int behavior_flags) {
+  observed_.loading_behavior_flags_ |= behavior_flags;
+  if (ExpectationsSatisfied() && run_loop_)
+    run_loop_->Quit();
+}
+
 void PageLoadMetricsTestWaiter::OnLoadedResource(
     const page_load_metrics::ExtraRequestCompleteInfo&
         extra_request_complete_info) {
@@ -337,6 +348,14 @@
   return current_aggregate_cpu_time_ >= expected_minimum_aggregate_cpu_time_;
 }
 
+bool PageLoadMetricsTestWaiter::LoadingBehaviorExpectationsSatisfied() const {
+  // Once we've observed everything we've expected, we're satisfied. We allow
+  // other behaviors to be present incidentally.
+  return (expected_.loading_behavior_flags_ &
+          observed_.loading_behavior_flags_) ==
+         expected_.loading_behavior_flags_;
+}
+
 bool PageLoadMetricsTestWaiter::ResourceUseExpectationsSatisfied() const {
   return (expected_minimum_complete_resources_ == 0 ||
           current_complete_resources_ >=
@@ -397,6 +416,7 @@
          SubframeNavigationExpectationsSatisfied() &&
          SubframeDataExpectationsSatisfied() &&
          IsSubset(expected_.frame_sizes_, observed_.frame_sizes_) &&
+         LoadingBehaviorExpectationsSatisfied() &&
          CpuTimeExpectationsSatisfied() &&
          MainFrameIntersectionExpectationsSatisfied() &&
          MemoryUpdateExpectationsSatisfied();
@@ -431,6 +451,12 @@
     waiter_->OnCpuTimingUpdated(subframe_rfh, timing);
 }
 
+void PageLoadMetricsTestWaiter::WaiterMetricsObserver::
+    OnLoadingBehaviorObserved(content::RenderFrameHost*, int behavior_flags) {
+  if (waiter_)
+    waiter_->OnLoadingBehaviorObserved(behavior_flags);
+}
+
 void PageLoadMetricsTestWaiter::WaiterMetricsObserver::OnLoadedResource(
     const page_load_metrics::ExtraRequestCompleteInfo&
         extra_request_complete_info) {
diff --git a/components/page_load_metrics/browser/page_load_metrics_test_waiter.h b/components/page_load_metrics/browser/page_load_metrics_test_waiter.h
index 503a416..0c9096fb 100644
--- a/components/page_load_metrics/browser/page_load_metrics_test_waiter.h
+++ b/components/page_load_metrics/browser/page_load_metrics_test_waiter.h
@@ -87,6 +87,10 @@
   // frame routing IDs expected to receive a memory measurement update.
   void AddMemoryUpdateExpectation(int routing_id);
 
+  // Adds all |blink::LoadingBehaviorFlag|s set in |behavior_flags| to the
+  // set of expected behaviors.
+  void AddLoadingBehaviorExpectation(int behavior_flags);
+
   // Whether the given TimingField was observed in the page.
   bool DidObserveInPage(TimingField field) const;
 
@@ -137,6 +141,8 @@
         content::RenderFrameHost* subframe_rfh,
         const page_load_metrics::mojom::CpuTiming& timing) override;
 
+    void OnLoadingBehaviorObserved(content::RenderFrameHost* rfh,
+                                   int behavior_flags) override;
     void OnLoadedResource(const page_load_metrics::ExtraRequestCompleteInfo&
                               extra_request_complete_info) override;
 
@@ -222,6 +228,11 @@
   void OnCpuTimingUpdated(content::RenderFrameHost* subframe_rfh,
                           const page_load_metrics::mojom::CpuTiming& timing);
 
+  // Updates observed page fields when a loading behavior (see
+  // |blink::LoadingBehaviorFlag|) is observed by MetricsWebContentsObserver.
+  // Stops waiting if expectations are satsfied after update.
+  void OnLoadingBehaviorObserved(int behavior_flags);
+
   // Updates observed page fields when a resource load is observed by
   // MetricsWebContentsObserver.  Stops waiting if expectations are satsfied
   // after update.
@@ -264,6 +275,7 @@
   // These methods check whether expectations are satisfied for specific fields
   // inside the State object, by comparing them in expected_ and observed_.
   bool CpuTimeExpectationsSatisfied() const;
+  bool LoadingBehaviorExpectationsSatisfied() const;
   bool ResourceUseExpectationsSatisfied() const;
   bool WebFeaturesExpectationsSatisfied() const;
   bool SubframeNavigationExpectationsSatisfied() const;
@@ -286,6 +298,7 @@
     std::bitset<static_cast<size_t>(
         blink::mojom::WebFeature::kNumberOfFeatures)>
         web_features_;
+    int loading_behavior_flags_ = 0;
     bool subframe_navigation_ = false;
     bool subframe_data_ = false;
     std::set<gfx::Size, FrameSizeComparator> frame_sizes_;
diff --git a/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc b/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc
index 685139f..3552cce 100644
--- a/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc
+++ b/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc
@@ -603,17 +603,18 @@
 
   RunUntilIdle();
 
-  ASSERT_THAT(
-      profile_store().stored_passwords(),
-      ElementsAre(Pair(form.signon_realm, ElementsAre(form, other_form))));
+  ASSERT_THAT(profile_store().stored_passwords(),
+              ElementsAre(Pair(form.signon_realm,
+                               UnorderedElementsAre(form, other_form))));
 
   ASSERT_THAT(account_store().stored_passwords(),
               ElementsAre(Pair(account_store_form.signon_realm,
                                ElementsAre(account_store_form))));
 
-  EXPECT_THAT(presenter().GetUsernamesForRealm(
-                  form.signon_realm, /*is_using_account_store=*/false),
-              ElementsAre(form.username_value, other_form.username_value));
+  EXPECT_THAT(
+      presenter().GetUsernamesForRealm(form.signon_realm,
+                                       /*is_using_account_store=*/false),
+      UnorderedElementsAre(form.username_value, other_form.username_value));
 
   EXPECT_THAT(presenter().GetUsernamesForRealm(account_store_form.signon_realm,
                                                /*is_using_account_store=*/true),
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb
index 53089f7..cdeeb3c 100644
--- a/components/policy/resources/policy_templates_de.xtb
+++ b/components/policy/resources/policy_templates_de.xtb
@@ -344,7 +344,6 @@
 <translation id="1479427764273213107">Wenn diese Richtlinie konfiguriert ist, können Sie eine Liste der USB-Geräte definieren, die vom jeweiligen Kerneltreiber getrennt werden können, um über die chrome.usb API direkt in einer Webanwendung eingesetzt zu werden. Die Einträge bestehen aus der ID des USB-Herstellers und der Produkt-ID, über die die Hardware identifiziert werden kann.
 
       Ist diese Richtlinie nicht konfiguriert, ist die Liste der trennbaren USB-Geräte leer.</translation>
-<translation id="1479515813926202288">Kameragestützte Suche mit Lens für Unternehmensnutzer deaktivieren</translation>
 <translation id="1481508277421549404">Wenn die Richtlinie auf "True" gesetzt ist, können Erweiterungen, die über die Unternehmensrichtlinie installiert wurden, die Enterprise Hardware Platform API verwenden.
 
       Wenn die Richtlinie auf "False" gesetzt oder nicht konfiguriert ist, können Erweiterungen diese API nicht verwenden.
@@ -436,13 +435,6 @@
       Siehe https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Verwendung des monitorlosen Modus nicht erlauben</translation>
 <translation id="1588240398285670601">Browsereinstellungen</translation>
-<translation id="1593245608325508847">Wenn die Richtlinie konfiguriert ist, sind die eingeschränkten Anmeldefunktionen von Chrome in der G Suite aktiviert und es wird verhindert, dass Nutzer diese Einstellung ändern. Nutzer können nur über Konten der angegebenen Domains auf Tools von Google zugreifen. Möchten Sie gmail.com- oder googlemail.com-Konten zulassen, müssen Sie der Domainliste "consumer_accounts" (ohne Anführungszeichen) hinzufügen. Diese Einstellung verhindert, dass Nutzer sich auf einem verwalteten Gerät, für das eine Authentifizierung durch Google notwendig ist, anmelden und ein zweites Konto hinzufügen können, wenn dieses Konto nicht zu einer der Domains in der Zulassungsliste gehört.
-
-      Wenn Sie diese Einstellung leer lassen oder nicht konfigurieren, können Nutzer über beliebige Konten auf die G Suite zugreifen.
-
-      Nutzer können diese Einstellung weder ändern noch überschreiben.
-
-      Hinweis: Durch diese Richtlinie wird allen HTTP- und HTTPS-Anfragen, die an google.com-Domains gesendet werden, der Header "X-GoogApps-Allowed-Domains" angehängt (siehe https://support.google.com/a/answer/1668854).</translation>
 <translation id="1599424828227887013">Website-Isolierung für angegebene Ursprünge auf Android-Geräten aktivieren</translation>
 <translation id="159946228300522107">Wenn für diese Richtlinie "True" festgelegt ist, maximiert Chrome beim ersten Start das erste angezeigte Fenster.
 
@@ -973,7 +965,6 @@
 <translation id="2303795211377219696">„Automatisches Ausfüllen“ für Kreditkarten aktivieren</translation>
 <translation id="2307496301287881990">Status von Display und Grafikkarte melden</translation>
 <translation id="2309390639296060546">Standardeinstellung für "Standortbestimmung"</translation>
-<translation id="2327252517317514801">Domains definieren, die auf die G Suite zugreifen dürfen</translation>
 <translation id="2331354174913096226">Die URI-Vorlage des gewünschten DoH-Resolvers (DNS over HTTPS). Wenn Sie mehrere DoH-Resolver angeben möchten, trennen Sie die dazugehörigen URI-Vorlagen durch Leerzeichen.
 
       Wenn "DnsOverHttpsMode" auf <ph name="SECURE_DNS_MODE_SECURE" /> gesetzt ist, muss diese Richtlinie konfiguriert werden und darf nicht leer sein.
@@ -1679,6 +1670,13 @@
 <translation id="3177802893484440532">OCSP/CRL-Online-Prüfungen für lokale Vertrauensanker als erforderlich festlegen</translation>
 <translation id="3184161739683646075">Steuert den DoH-Modus (DNS over HTTPS)</translation>
 <translation id="3185009703220253572">Ab Version <ph name="SINCE_VERSION" /></translation>
+<translation id="3185895671618336039">Konfiguriert die Einstellungen für die Lebensdauer von Browserdaten für <ph name="PRODUCT_NAME" />. Mit dieser Richtlinie können Administratoren (nach Datentyp) festlegen, wann Daten durch den Browser gelöscht werden. Das bietet Vorteile für Kunden, die mit sensiblen Kundendaten arbeiten. Die Richtlinie ist nur wirksam, wenn <ph name="SYNC_DISABLED_POLICY_NAME" /> auf „true“ gesetzt 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" />.
+
+      Der Browser entfernt automatisch Daten des ausgewählten Typs, die älter sind als <ph name="TIME_TO_LIVE_IN_HOURS" />. Als kleinster Wert kann eine Stunde festgelegt werden.
+
+      Abgelaufene Daten werden 15 Sekunden, nachdem der Browser gestartet wurde, und anschließend jede Stunde gelöscht, während der Browser geöffnet ist.</translation>
 <translation id="3192902750888034827">Wenn "<ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" />" aktiviert ist, gibt "<ph name="DEFAULT_SEARCH_PROVIDER_NEW_TAB_URL_POLICY_NAME" />" die URL an, die eine Suchmaschine zum Bereitstellen der "Neuer Tab"-Seite verwendet.
 
       Ist "<ph name="DEFAULT_SEARCH_PROVIDER_NEW_TAB_URL_POLICY_NAME" />" nicht konfiguriert, wird keine "Neuer Tab"-Seite bereitgestellt.</translation>
@@ -2590,7 +2588,6 @@
 <translation id="4494132853995232608">Wilco DTC</translation>
 <translation id="449423975179525290">Richtlinien für <ph name="PLUGIN_VM_NAME" /> konfigurieren.</translation>
 <translation id="449784980858429908">Websites automatisch die Berechtigung erteilen, eine Verbindung zu allen seriellen Ports herzustellen.</translation>
-<translation id="4507775063441355559">Kameragestützte Suche mit <ph name="GOOGLE_LENS_PRODUCT_NAME" /> erlauben</translation>
 <translation id="4510923771103268849">Nutzer hat Root-Zugriff auf Crostini-Container</translation>
 <translation id="4515404363392014383">Safe Browsing für vertrauenswürdige Quellen aktivieren</translation>
 <translation id="4518251772179446575">Nachfragen, wenn eine Website den physischen Standort der Nutzer verfolgen möchte</translation>
@@ -3167,7 +3164,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> – die Felder „<ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" />“ und „<ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />“ werden verwendet.
 
       Hinweis: Ausführliche Beispiele finden Sie in den Chromium-Projekten unter https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett.</translation>
-<translation id="5264773067879932127">Wenn diese Richtlinie nicht konfiguriert oder auf „Enabled“ gesetzt wird, können Nutzer mit <ph name="GOOGLE_LENS_PRODUCT_NAME" /> ihre Kamera für die Suche verwenden. Ist die Richtlinie auf „Disabled“ gesetzt, wird Nutzern die Schaltfläche „<ph name="GOOGLE_LENS_PRODUCT_NAME" />“ im Suchfeld nicht angezeigt, wenn die kameragestützte Suche mit <ph name="GOOGLE_LENS_PRODUCT_NAME" /> unterstützt wird.</translation>
 <translation id="5266173014392157048">Diese Richtlinie wurde eingestellt. Bitte verwenden Sie stattdessen <ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />.
 
       Wenn diese Richtlinie konfiguriert ist, werden Server zugewiesen, an die <ph name="PRODUCT_NAME" /> Anmeldedaten von Nutzern weiterleiten kann. Trennen Sie mehrere Servernamen durch Kommas. Platzhalter wie <ph name="WILDCARD_VALUE" /> sind zulässig.
@@ -4570,6 +4566,11 @@
       Ist die Richtlinie nicht konfiguriert, erscheint die Ablage standardmäßig unten auf dem Bildschirm und der Nutzer hat die Möglichkeit, diese Position zu ändern.</translation>
 <translation id="7040229947030068419">Beispielwert</translation>
 <translation id="7044883996351280650">Android-Dienst "Sicherung und Wiederherstellung" konfigurieren</translation>
+<translation id="7060497964524144376">Wenn die Richtlinie aktiviert ist, vertraut Safe Browsing den Domains, die Sie festlegen. Es findet keine Prüfung auf gefährliche Ressourcen wie Phishing, Malware oder unerwünschte Software statt. Es findet keine Prüfung von in diesen Domains gehosteten Downloads durch den Downloadschutzdienst statt. Eine Wiederverwendung von Passwörtern wird nicht durch den Passwortschutzdienst geprüft.
+
+      Wenn diese Richtlinie nicht konfiguriert ist, wird der Safe Browsing-Standardschutz auf alle Ressourcen angewendet.
+
+      Unter <ph name="MS_WIN_NAME" /> steht diese Funktion nur bei Instanzen zur Verfügung, die Teil einer <ph name="MS_AD_NAME" />-Domain sind, auf denen Windows 10 Pro läuft oder die über <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> verwaltet werden. Unter <ph name="MAC_OS_NAME" /> steht diese Funktion nur bei Instanzen zur Verfügung, die über die Mobilgeräteverwaltung verwaltet werden oder per MCX mit einer Domain verbunden sind.</translation>
 <translation id="7063895219334505671">Pop-ups auf diesen Websites zulassen</translation>
 <translation id="706669471845501145">Anzeige von Desktop-Benachrichtigungen durch Websites zulassen</translation>
 <translation id="7070525176564511548">Passworteingabe wöchentlich erforderlich (alle 168 Stunden)</translation>
@@ -4749,7 +4750,6 @@
       Unter <ph name="MS_WIN_NAME" /> steht diese Funktion nur bei Instanzen zur Verfügung, die Teil einer <ph name="MS_AD_NAME" />-Domain sind, auf denen Windows 10 Pro läuft oder die über <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> verwaltet werden. Unter <ph name="MAC_OS_NAME" /> steht diese Funktion nur bei Instanzen zur Verfügung, die über die Mobilgeräteverwaltung verwaltet werden oder per MCX mit einer Domain verbunden sind.</translation>
 <translation id="7258823566580374486">Zugangsbeschränkung für Remotezugriff-Hosts aktivieren</translation>
 <translation id="7260204423892780600">Legt die Einstellungen für Google Assistant fest.</translation>
-<translation id="7260277299188117560">P2P für automatische Updates aktivieren</translation>
 <translation id="7261252191178797385">Gerätehintergrundbild</translation>
 <translation id="7264704483008663819">Diese Richtlinie wurde in M68 eingestellt. Bitte verwenden Sie stattdessen "DeveloperToolsAvailability".
 
@@ -4781,7 +4781,6 @@
 
       Wenn diese Richtlinie nicht konfiguriert ist, gilt die Standardeinstellung: Vom Unternehmen verwaltete Nutzer können die Funktion nicht verwenden, während sie für nicht verwaltete Nutzer zur Verfügung steht.</translation>
 <translation id="7295019613773647480">Betreute Nutzer aktivieren</translation>
-<translation id="7295038772938766029">Kameragestützte Suche mit Lens für Unternehmensnutzer aktivieren</translation>
 <translation id="7302043767260300182">Verzögerung für die Bildschirmsperre im Netzbetrieb</translation>
 <translation id="7303902834678570827">Nutzer verwalteter Gastsitzungen können keine Anzeigeeinstellungen für das ganze Gerät speichern</translation>
 <translation id="731208205557053914">VPD-Informationen melden</translation>
@@ -5226,7 +5225,6 @@
 <translation id="7925224837072026018">Ist die Richtlinie konfiguriert, wird Erweiterungen oder Android-Apps Zugriff auf Schlüssel für die geschäftliche Nutzung gewährt. Schlüssel sind ausschließlich für die geschäftliche Nutzung bestimmt, wenn sie über die chrome.enterprise.platformKeys API eines verwalteten Kontos generiert wurden. Nutzer können den Zugriff auf Schlüssel zur geschäftlichen Nutzung für Erweiterungen oder Android-Apps weder erteilen noch verweigern.
 
       Eine Erweiterung oder Android-App kann Schlüssel, die für die geschäftliche Nutzung bestimmt sind, standardmäßig nicht verwenden. Dies entspricht der Festlegung von „False“ für „allowCorporateKeyUsage“ bei der entsprechenden Erweiterung oder Android-App. Nur wenn „allowCorporateKeyUsage“ für eine Erweiterung oder Android-App auf „True“ gesetzt ist, kann sie alle Plattformschlüssel nutzen, die für die geschäftliche Nutzung bestimmt sind, um beliebige Daten zu signieren. Diese Berechtigung sollte nur dann gewährt werden, wenn der Zugriff auf den Schlüssel durch die Erweiterung oder Android-App sicher vor Angreifern schützt wird.</translation>
-<translation id="793134539373873765">Gibt an, ob P2P für die Nutzdaten von Betriebssystem-Updates verwendet werden soll. Falls auf "True" gesetzt, teilen die Geräte Update-Nutzdaten im LAN und versuchen, die Daten von dort zu laden. Dadurch wird potenziell weniger Internetbandbreite verbraucht und es kommt seltener zu Datenstaus. Wenn die Update-Nutzdaten nicht im LAN verfügbar sind, lädt das Gerät sie ersatzweise von einem Updateserver herunter. Ist diese Option auf "False" gesetzt oder nicht konfiguriert, wird P2P nicht verwendet.</translation>
 <translation id="7933141401888114454">Erstellung von betreuten Nutzern aktivieren</translation>
 <translation id="793473937901685727">Verfügbarkeit von Zertifikaten für ARC-Apps festlegen</translation>
 <translation id="7937766917976512374">Videoaufzeichnung gestatten oder ablehnen</translation>
@@ -6166,6 +6164,7 @@
 <translation id="927444535723396977">Wenn die Richtlinie auf "1" gesetzt ist, können Websites JavaScript ausführen. Wenn sie auf "2" gesetzt ist, wird die Ausführung von JavaScript verweigert.
 
       Wird die Richtlinie nicht konfiguriert, können Websites JavaScript ausführen, aber Nutzer können diese Einstellung ändern.</translation>
+<translation id="928189505080808353">Port 554 (gültig bis 15.10.2021)</translation>
 <translation id="929549405492388749">Wird die Richtlinie auf "true" gesetzt, wird die Aktivierung von AppCache erzwungen, selbst wenn AppCache in Chrome nicht standardmäßig verfügbar ist.
 
       Wird die Richtlinie nicht festgelegt oder auf "false" gesetzt, folgt AppCache der Standardeinstellung von Chrome.</translation>
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb
index eedf5c5..bcdcebe 100644
--- a/components/policy/resources/policy_templates_es-419.xtb
+++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -350,7 +350,6 @@
 <translation id="1479427764273213107">Si estableces la política, se definirá la lista de dispositivos USB que el usuario puede desconectar del controlador de kernel para usarlos a través de la API chrome.usb directamente en una aplicación web. Las entradas son pares formados por el identificador del producto y del proveedor USB que permiten reconocer un hardware específico.
 
       Si no estableces la política, la lista de dispositivos USB que se pueden desconectar estará vacía.</translation>
-<translation id="1479515813926202288">Inhabilitar la búsqueda asistida por cámara mediante Lens para usuarios empresariales</translation>
 <translation id="1481508277421549404">Si estableces la política como verdadera, las extensiones instaladas por la política empresarial podrán utilizar la API de Enterprise Hardware Platform.
 
       Si la estableces como falsa o no la estableces, las extensiones no podrán usar esta API.
@@ -442,13 +441,6 @@
       Consulta https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">No permitir el uso del modo sin interfaz gráfica</translation>
 <translation id="1588240398285670601">Configuración del navegador</translation>
-<translation id="1593245608325508847">Si estableces la política, se activará la función de acceso restringido de Chrome en G Suite, y los usuarios no podrán cambiar esta configuración. Los usuarios solo podrán acceder a las herramientas de Google mediante cuentas de dominios específicos (para permitir cuentas de gmail o googlemail, debes agregar consumer_accounts a la lista de dominios). Esta configuración no permite que los usuarios accedan ni agreguen una cuenta secundaria en un dispositivo administrado que requiera autenticación de Google, en caso de que esa cuenta no pertenezca a uno de los dominios permitidos de forma explícita.
-
-      Si dejas vacía esta configuración o no la estableces, los usuarios podrán acceder a G Suite con cualquier cuenta.
-
-      Los usuarios no podrán cambiar ni anular esta configuración.
-
-      Nota: Esta política provoca que se agregue el encabezado X-GoogApps-Allowed-Domains a todas las solicitudes HTTP y HTTPS para todos los dominios google.com, como se describe en https://support.google.com/a/answer/1668854.</translation>
 <translation id="1599424828227887013">Habilitar el aislamiento de sitios para orígenes específicos en dispositivos Android</translation>
 <translation id="159946228300522107">Si estableces la política como verdadera, Chrome maximizará la primera ventana que se muestre en la primera ejecución.
 
@@ -990,7 +982,6 @@
 <translation id="2303795211377219696">Habilitar la función Autocompletar para tarjetas de crédito</translation>
 <translation id="2307496301287881990">Informa los estados de la tarjeta gráfica y la pantalla</translation>
 <translation id="2309390639296060546">Configuración de geolocalización predeterminada</translation>
-<translation id="2327252517317514801">Definir los dominios con permiso para acceder a G Suite</translation>
 <translation id="2331354174913096226">La plantilla de URI del agente de resolución de DNS sobre HTTPS deseado. Si quieres especificar varios agentes de resolución de DNS sobre HTTPS, separa las plantillas de URI correspondientes mediante espacios.
 
       Si se configuró DnsOverHttpsMode como <ph name="SECURE_DNS_MODE_SECURE" />, se debe establecer esta política y no puede estar vacía.
@@ -2612,7 +2603,6 @@
 <translation id="4494132853995232608">DTC wilco</translation>
 <translation id="449423975179525290">Configura las políticas relacionadas con <ph name="PLUGIN_VM_NAME" />.</translation>
 <translation id="449784980858429908">Otorgar permiso automáticamente a los sitios para conectarse a puertos en serie</translation>
-<translation id="4507775063441355559">Permitir la búsqueda asistida por cámara mediante <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="4510923771103268849">El usuario tiene acceso con permisos de administrador a los contenedores de Crostini</translation>
 <translation id="4515404363392014383">Habilita la Navegación segura para las fuentes de confianza</translation>
 <translation id="4518251772179446575">Preguntar siempre si un sitio quiere rastrear la ubicación física de los usuarios.</translation>
@@ -3190,7 +3180,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />: se usarán los campos <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> y <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />.
 
       Nota: Para obtener más ejemplos detallados, visita The Chromium Projects ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett ).</translation>
-<translation id="5264773067879932127">Si no estableces la política o la habilitas, los usuarios podrán realizar búsquedas con sus cámaras mediante <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Si la estableces como falsa, los usuarios no verán el botón de <ph name="GOOGLE_LENS_PRODUCT_NAME" /> en el cuadro de búsqueda, independientemente de que sea compatible la búsqueda asistida por cámara mediante <ph name="GOOGLE_LENS_PRODUCT_NAME" />.</translation>
 <translation id="5266173014392157048">Esta política dejó de estar disponible. Usa la política "<ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />" en su lugar.
 
       Si estableces la política, se asignarán los servidores a los que <ph name="PRODUCT_NAME" /> puede delegar las credenciales de usuario. Los nombres de los servidores se separan con comas. Se permite el uso de caracteres comodín (<ph name="WILDCARD_VALUE" />).
@@ -4786,7 +4775,6 @@
       En <ph name="MS_WIN_NAME" />, esta funcionalidad solo estará disponible en instancias que están vinculadas a un dominio de <ph name="MS_AD_NAME" />, están inscritas en <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> o se ejecutan en Windows 10 Pro. En <ph name="MAC_OS_NAME" />, esta funcionalidad solo está disponible en instancias administradas mediante MDM o vinculadas a un dominio a través de MCX.</translation>
 <translation id="7258823566580374486">Habilitar modo de cortina en hosts de acceso remoto</translation>
 <translation id="7260204423892780600">Controla la configuración del Asistente de Google.</translation>
-<translation id="7260277299188117560">Conexión P2P de actualizaciones automáticas habilitada</translation>
 <translation id="7261252191178797385">Imagen de fondo de pantalla del dispositivo</translation>
 <translation id="7264704483008663819">Esta política está obsoleta en M68; usa DeveloperToolsAvailability en su lugar.
 
@@ -4818,7 +4806,6 @@
 
       Si no se configura esta política, la acción predeterminada no se permite para los usuarios administrados por empresas y sí se permite para los usuarios no administrados.</translation>
 <translation id="7295019613773647480">Habilitar usuarios supervisados</translation>
-<translation id="7295038772938766029">Habilitar la búsqueda asistida por cámara mediante Lens para usuarios empresariales</translation>
 <translation id="7302043767260300182">Demora de bloqueo de pantalla con alimentación de CA</translation>
 <translation id="7303902834678570827">Los usuarios de la sesión de invitado administrada no pueden almacenar la configuración de la pantalla de todo el dispositivo</translation>
 <translation id="731208205557053914">Envía información sobre los VPD</translation>
@@ -5265,7 +5252,6 @@
 <translation id="7925224837072026018">Si estableces la política, se habilitará el acceso a claves empresariales desde extensiones o aplicaciones para Android. Solo se designan las claves para uso corporativo si se generan con la API chrome.enterprise.platformKeys en una cuenta administrada. Los usuarios no pueden otorgar ni quitar acceso a claves empresariales desde extensiones ni aplicaciones para Android.
 
       De forma predeterminada, una extensión o una aplicación para Android no puede usar claves designadas para uso empresarial, lo cual equivale a establecer la política allowCorporateKeyUsage como falsa. Solo si estableces allowCorporateKeyUsage como verdadera para una extensión o una aplicación para Android, estas podrán usar cualquier clave de plataforma designada para uso empresarial a fin de firmar datos arbitrarios. Otorga este permiso solo si la extensión o la aplicación para Android es de confianza, a fin de proteger el acceso a la clave ante posibles atacantes.</translation>
-<translation id="793134539373873765">Especifica si se debe utilizar la conexión P2P para cargas de actualizaciones del sistema operativo. Si esta política se establece en True, los dispositivos compartirán e intentarán consumir cargas de actualizaciones en la red LAN, y reducirán de forma potencial la congestión y el uso del ancho de banda de Internet. Si la carga de actualizaciones no está disponible en la red LAN, el dispositivo deberá realizar la descarga desde un servidor de actualizaciones. Si se establece en False o no se configura, no se utilizará la conexión P2P.</translation>
 <translation id="7933141401888114454">Habilita la creación de usuarios supervisados.</translation>
 <translation id="793473937901685727">Establecer la disponibilidad de certificados para apps de ARC</translation>
 <translation id="7937766917976512374">Permitir o rechazar la captura de video</translation>
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb
index b077a1a..d1c5618 100644
--- a/components/policy/resources/policy_templates_es.xtb
+++ b/components/policy/resources/policy_templates_es.xtb
@@ -350,7 +350,6 @@
 <translation id="1479427764273213107">Si se asigna un valor a esta política, se definirá la lista de dispositivos USB que los usuarios pueden desvincular de su controlador de kernel para utilizarse en la API chrome.usb directamente en una aplicación web. Las entradas son pares de identificador de producto e identificador de proveedor del USB que permiten identificar hardware específico.
 
       Si no se le asigna ningún valor, la lista de dispositivos USB que se pueden desvincular estará vacía.</translation>
-<translation id="1479515813926202288">Inhabilitar búsqueda asistida mediante cámara de Lens para usuarios de empresa</translation>
 <translation id="1481508277421549404">Si se le asigna el valor "True" a esta política, las extensiones instaladas por política de empresa podrán usar la API Enterprise Hardware Platform.
 
       Si se le asigna el valor "False" o si no se le asigna ningún valor, las extensiones no podrán usar esta API.
@@ -442,13 +441,6 @@
       Consulta https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">No permite utilizar el modo sin interfaz gráfica</translation>
 <translation id="1588240398285670601">Configuración del navegador</translation>
-<translation id="1593245608325508847">Si esta política se define, se activará la función de inicio de sesión restringido de Chrome en G Suite. Los usuarios no podrán cambiar esta opción. Los usuarios solo podrán acceder a las herramientas de Google desde cuentas de los dominios especificados (para dar permiso a cuentas de gmail o googlemail, añade consumer_accounts a la lista de dominios). Este ajuste impide que los usuarios inicien sesión y añadan una cuenta secundaria en un dispositivo gestionado que requiera autenticación de Google si esa cuenta no pertenece a uno de los dominios explícitamente permitidos.
-
-      Si este ajuste se deja vacío o sin definir, los usuarios podrán acceder a G Suite con cualquier cuenta.
-
-      Los usuarios no pueden modificar ni anular este ajuste.
-
-      Nota: Esta política provoca que el encabezado X-GoogApps-Allowed-Domains se añada a todas las solicitudes HTTP y HTTPS en todos los dominios de google.com, como se describe https://support.google.com/a/answer/1668854.</translation>
 <translation id="1599424828227887013">Habilitar el aislamiento de sitios web específicos en dispositivos Android</translation>
 <translation id="159946228300522107">Si se asigna el valor "Verdadero" a esta política, Chrome maximizará la primera ventana que se muestre al ejecutarse por primera vez.
 
@@ -995,7 +987,6 @@
 <translation id="2303795211377219696">Habilitar la función Autocompletar para tarjetas de crédito</translation>
 <translation id="2307496301287881990">Informar del estado de la pantalla y la tarjeta gráfica</translation>
 <translation id="2309390639296060546">Configuración de ubicación geográfica predeterminada</translation>
-<translation id="2327252517317514801">Definir los dominios autorizados para acceder a G Suite</translation>
 <translation id="2331354174913096226">La plantilla URI de la resolución de DNS-over-HTTPS deseada. Para especificar varias resoluciones de DNS-over-HTTPS, separa las plantillas URI correspondientes con espacios.
 
       Si se asigna el valor <ph name="SECURE_DNS_MODE_SECURE" /> a DnsOverHttpsMode, esta política debe definirse y no dejarse vacía.
@@ -2626,7 +2617,6 @@
 <translation id="4494132853995232608">Wilco DTC</translation>
 <translation id="449423975179525290">Configura las políticas relacionadas con <ph name="PLUGIN_VM_NAME" />.</translation>
 <translation id="449784980858429908">Permite conceder permiso automáticamente a sitios para conectarse a todos los puertos serie.</translation>
-<translation id="4507775063441355559">Permitir búsqueda asistida mediante cámara de <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="4510923771103268849">El usuario puede tener acceso root a los contenedores de Crostini</translation>
 <translation id="4515404363392014383">Habilitar Navegación segura en fuentes de confianza</translation>
 <translation id="4518251772179446575">Preguntar siempre que un sitio quiera hacer un seguimiento de la ubicación física de los usuarios</translation>
@@ -3205,7 +3195,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />: se usan los campos <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> y <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />.
 
       Nota: Puedes consultar más ejemplos detallados en The Chromium Projects ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett ).</translation>
-<translation id="5264773067879932127">Si esta política no se define o se habilita, los usuarios podrán buscar con sus cámaras utilizando <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Si se le asigna el valor False, los usuarios no podrán ver el botón <ph name="GOOGLE_LENS_PRODUCT_NAME" /> en el cuadro de búsqueda cuando se pueda usar la búsqueda asistida mediante cámara de <ph name="GOOGLE_LENS_PRODUCT_NAME" />.</translation>
 <translation id="5266173014392157048">Esta política está obsoleta. Usa la política <ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" /> en su lugar.
 
       Si se establece esta política, se asignarán los servidores en los que <ph name="PRODUCT_NAME" /> pueda delegar. Si hay varios nombres de servidores, se deben separar con comas. Se permite el uso de caracteres comodín (<ph name="WILDCARD_VALUE" />).
@@ -4805,7 +4794,6 @@
       En <ph name="MS_WIN_NAME" />, esta función solo está disponible en instancias que estén vinculadas a un dominio de <ph name="MS_AD_NAME" />, que se ejecuten en Windows 10 Pro o que se hayan registrado en <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. En <ph name="MAC_OS_NAME" />, esta función solo está disponible en instancias que se gestionen mediante MDM o que estén vinculadas a un dominio a través de MCX.</translation>
 <translation id="7258823566580374486">Activar modo de cortina en hosts de acceso remoto</translation>
 <translation id="7260204423892780600">Controla los ajustes del Asistente de Google.</translation>
-<translation id="7260277299188117560">Conexión P2P para actualizaciones automáticas habilitada</translation>
 <translation id="7261252191178797385">Imagen de fondo de pantalla del dispositivo</translation>
 <translation id="7264704483008663819">Esta política está obsoleta en M68. Utiliza en su lugar DeveloperToolsAvailability.
 
@@ -4837,7 +4825,6 @@
 
       Si no se asigna ningún valor a esta política, la opción predeterminada no estará disponible para los usuarios gestionados por empresas, aunque sí lo estará para aquellos no gestionados por empresas.</translation>
 <translation id="7295019613773647480">Habilitar usuarios supervisados</translation>
-<translation id="7295038772938766029">Habilitar búsqueda asistida mediante cámara de Lens para usuarios de empresa</translation>
 <translation id="7302043767260300182">Retraso de bloqueo de pantalla cuando el dispositivo está conectado a la red</translation>
 <translation id="7303902834678570827">Los usuarios de sesiones de invitado gestionadas pueden almacenar ajustes de pantalla que se apliquen a todo el dispositivo</translation>
 <translation id="731208205557053914">Enviar información sobre VPD</translation>
@@ -5287,7 +5274,6 @@
 <translation id="7925224837072026018">Si se define esta política, se concederá acceso a claves corporativas de extensiones o aplicaciones Android. Las claves están designadas solo para un uso corporativo si se generan con la API chrome.enterprise.platformKeys API en una cuenta gestionada. Los usuarios no pueden conceder acceso a extensiones o aplicaciones Android mediante claves corporativas ni quitarlo.
 
       De forma predeterminada, una extensión o aplicación Android no puede utilizar una clave designada para uso corporativo, lo que equivale a asignar el valor "False" a allowCorporateKeyUsage en esa extensión. Solo si se le asigna el valor "True" a allowCorporateKeyUsage en una extensión o aplicación Android, esta podrá utilizar cualquier clave de plataforma marcada para uso corporativo para firmar datos arbitrarios. Este permiso solo se debe conceder si se tiene la certeza de que la extensión o la aplicación Android garantiza un acceso seguro a la clave y la protege de posibles ataques.</translation>
-<translation id="793134539373873765">Especifica si la conexión P2P se debe utilizar para cargas útiles de actualizaciones del sistema operativo. Si esta política se establece en True, los dispositivos compartirán e intentarán consumir cargas útiles de actualizaciones en la red LAN, reduciendo de forma potencial la congestión y el uso del ancho de banda. Si la carga útil de actualizaciones no está disponible en la red LAN, el dispositivo deberá realizar la descarga desde un servidor de actualizaciones. Si se establece en False o no se configura, no se utilizará la conexión P2P.</translation>
 <translation id="7933141401888114454">Habilitar la creación de usuarios supervisados</translation>
 <translation id="793473937901685727">Establecer la disponibilidad del certificado para las aplicaciones ARC</translation>
 <translation id="7937766917976512374">Permitir o denegar captura de vídeo</translation>
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb
index 71a69bd36..a13a6463d 100644
--- a/components/policy/resources/policy_templates_fr.xtb
+++ b/components/policy/resources/policy_templates_fr.xtb
@@ -350,7 +350,6 @@
 <translation id="1479427764273213107">Permet d'établir la liste des appareils USB que les utilisateurs peuvent dissocier de leur pilote de noyau pour les employer via l'API chrome.usb directement au sein d'une application Web. Les entrées sont des paires composées d'un identifiant de fournisseur USB et d'un identifiant produit associé à un appareil spécifique.
 
       Si cette règle n'est pas configurée, la liste des appareils USB amovibles est vide.</translation>
-<translation id="1479515813926202288">Désactiver la recherche Lens assistée par appareil photo pour les utilisateurs de la version Enterprise</translation>
 <translation id="1481508277421549404">Si cette règle est définie sur "True", les extensions installées dans le cadre des règles de l'entreprise peuvent utiliser l'API Enterprise Hardware Platform.
 
       Si cette règle est définie sur "False" ou qu'elle n'est pas configurée, les extensions ne peuvent pas utiliser cette API.
@@ -442,13 +441,6 @@
       Voir https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Ne pas autoriser le mode sans interface graphique</translation>
 <translation id="1588240398285670601">Paramètres du navigateur</translation>
-<translation id="1593245608325508847">Permet d'activer la fonctionnalité de connexion limitée de Chrome dans G Suite sans que les utilisateurs puissent modifier ce paramètre. Les utilisateurs ne peuvent accéder aux outils Google que via des comptes associés aux domaines spécifiés (pour autoriser des comptes Gmail ou Googlemail, ajoutez "consumer_accounts" à la liste des domaines). Ce paramètre empêche les utilisateurs de se connecter et d'ajouter un compte secondaire sur un appareil géré qui exige l'authentification Google, si ce compte n'appartient pas à l'un des domaines explicitement autorisés.
-
-      Si ce paramètre n'est pas configuré, les utilisateurs peuvent accéder à G Suite avec n'importe quel compte.
-
-      Sachez également que les utilisateurs ne peuvent pas modifier ni ignorer ce paramètre.
-
-      Remarque : Cette règle entraîne l'ajout de l'en-tête "X-GoogApps-Allowed-Domains" à toutes les requêtes HTTP et HTTPS sur tous les domaines google.com (comme indiqué sur https://support.google.com/a/answer/1668854).</translation>
 <translation id="1599424828227887013">Activer l'isolation des sites pour des origines définies sur les appareils Android</translation>
 <translation id="159946228300522107">Si cette règle est définie sur "True", Chrome agrandit la première fenêtre affichée à la première exécution.
 
@@ -997,7 +989,6 @@
 <translation id="2303795211377219696">Activer la saisie automatique pour les cartes de crédit</translation>
 <translation id="2307496301287881990">Transmettre des états liés aux affichages et aux graphiques</translation>
 <translation id="2309390639296060546">Paramètre de géolocalisation par défaut</translation>
-<translation id="2327252517317514801">Définir les domaines autorisés à accéder à G Suite</translation>
 <translation id="2331354174913096226">Modèle URI du résolveur DNS-over-HTTPS souhaité. Pour définir plusieurs résolveurs DNS-over-HTTPS, vous devez séparer les modèles URI correspondants à l'aide d'espaces.
 
       Vous devez configurer cette règle si vous avez défini "DnsOverHttpsMode" sur <ph name="SECURE_DNS_MODE_SECURE" />. Elle ne peut pas rester vide.
@@ -1687,6 +1678,13 @@
 <translation id="3177802893484440532">Exiger des contrôles OCSP/CRL en ligne pour les ancres d'approbation locales</translation>
 <translation id="3184161739683646075">Contrôle le mode DNS-over-HTTPS</translation>
 <translation id="3185009703220253572">depuis la version <ph name="SINCE_VERSION" /></translation>
+<translation id="3185895671618336039">Permet de configurer les paramètres de durée de conservation des données de navigation dans <ph name="PRODUCT_NAME" />. Par exemple, les administrateurs peuvent définir (selon le type de données) quand le navigateur supprime ces données. C'est utile pour les clients qui utilisent des données sensibles. Cette règle n'est appliquée que si <ph name="SYNC_DISABLED_POLICY_NAME" /> est définie sur "True".
+
+      Voici les types de données disponibles : <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" />.
+
+      Le navigateur supprime automatiquement les données des types sélectionnés qui datent de plus de <ph name="TIME_TO_LIVE_IN_HOURS" />. Vous ne pouvez pas définir une valeur inférieure à une heure.
+
+      La suppression des données expirées se fera 15 secondes après le démarrage du navigateur, puis toutes les heures lorsque le navigateur sera en cours d'exécution.</translation>
 <translation id="3192902750888034827">Si la règle <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> est activée, la règle <ph name="DEFAULT_SEARCH_PROVIDER_NEW_TAB_URL_POLICY_NAME" /> vous permet de spécifier l'URL du moteur de recherche utilisé pour afficher une page Nouvel onglet.
 
       Si la règle <ph name="DEFAULT_SEARCH_PROVIDER_NEW_TAB_URL_POLICY_NAME" /> n'est pas configurée, aucune page Nouvel onglet n'est proposée.</translation>
@@ -2594,7 +2592,6 @@
 <translation id="4494132853995232608">Dispositif DTC de Wilco</translation>
 <translation id="449423975179525290">Configurer les règles liées à <ph name="PLUGIN_VM_NAME" />.</translation>
 <translation id="449784980858429908">Autoriser automatiquement les sites à se connecter à tous les ports série.</translation>
-<translation id="4507775063441355559">Autoriser la recherche <ph name="GOOGLE_LENS_PRODUCT_NAME" /> assistée par appareil photo</translation>
 <translation id="4510923771103268849">L'utilisateur est autorisé à accéder à la racine des conteneurs Crostini</translation>
 <translation id="4515404363392014383">Activer la navigation sécurisée pour les sources fiables</translation>
 <translation id="4518251772179446575">Demander chaque fois qu'un site veut suivre la position géographique des utilisateurs</translation>
@@ -3169,7 +3166,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />, les champs <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> et <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> sont utilisés.
 
       Remarque : Pour consulter des exemples détaillés, accédez au site The Chromium Projects (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation>
-<translation id="5264773067879932127">Si cette règle est activée ou si elle n'est pas configurée, les utilisateurs peuvent faire une recherche avec leur appareil photo à l'aide de <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Si cette règle est définie sur "False", les utilisateurs ne peuvent pas voir le bouton <ph name="GOOGLE_LENS_PRODUCT_NAME" /> dans le champ de recherche lorsque la recherche <ph name="GOOGLE_LENS_PRODUCT_NAME" /> assistée par appareil photo est compatible.</translation>
 <translation id="5266173014392157048">Cette règle est obsolète (veuillez utiliser la règle "<ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />" à la place).
 
       Elle permet de spécifier les serveurs que <ph name="PRODUCT_NAME" /> est susceptible d'utiliser. Séparez les noms des serveurs par une virgule. Les caractères génériques (<ph name="WILDCARD_VALUE" />) sont autorisés.
@@ -4584,6 +4580,11 @@
       Si cette règle n'est pas configurée, l'étagère est placée par défaut au bas de l'écran. Toutefois, l'utilisateur peut la mettre à un autre endroit.</translation>
 <translation id="7040229947030068419">Exemple de valeur :</translation>
 <translation id="7044883996351280650">Gérer le service de sauvegarde et de restauration Android</translation>
+<translation id="7060497964524144376">Si cette règle est activée, la navigation sécurisée juge fiables les domaines que vous avez spécifiés. Autrement dit, elle ne vérifie pas si des ressources présentent un danger (hameçonnage, logiciels malveillants ou indésirables, par exemple). Le service de protection des téléchargements associé à la navigation sécurisée ne vérifie pas non plus les téléchargements hébergés sur ces domaines. Le service de protection par mot de passe ne vérifie pas si un mot de passe est réutilisé.
+
+      Si cette règle n'est pas configurée, la navigation sécurisée applique son service de protection par défaut à toutes les ressources.
+
+      Sous <ph name="MS_WIN_NAME" />, cette règle n'est disponible que sur les instances associées à un domaine <ph name="MS_AD_NAME" />, exécutées sous Windows 10 Pro ou qui bénéficient de la <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Sous <ph name="MAC_OS_NAME" />, elle n'est disponible que sur les instances gérées via MDM ou associées à un domaine via MCX.</translation>
 <translation id="7063895219334505671">Autoriser les fenêtres pop-up sur ces sites</translation>
 <translation id="706669471845501145">Autoriser les sites à afficher des notifications sur le bureau</translation>
 <translation id="7070525176564511548">La saisie du mot de passe est requise toutes les semaines (toutes les 168 heures)</translation>
@@ -4763,7 +4764,6 @@
       Sous <ph name="MS_WIN_NAME" />, cette règle n'est disponible que sur les instances associées à un domaine <ph name="MS_AD_NAME" />, exécutées sous Windows 10 Pro ou qui bénéficient de la <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Sous <ph name="MAC_OS_NAME" />, elle n'est disponible que sur les instances gérées via MDM ou associées à un domaine via MCX.</translation>
 <translation id="7258823566580374486">Activer la protection des hôtes d'accès à distance</translation>
 <translation id="7260204423892780600">Contrôle les paramètres de l'Assistant Google.</translation>
-<translation id="7260277299188117560">Mise à jour automatique avec connexion P2P activée</translation>
 <translation id="7261252191178797385">Image de fond d'écran de l'appareil</translation>
 <translation id="7264704483008663819">Cette règle a été abandonnée dans la version M68 (veuillez utiliser la règle DeveloperToolsAvailability à la place).
 
@@ -4795,7 +4795,6 @@
 
       Si cette règle n'est pas définie, par défaut, ce mode de partage ne sera pas autorisé pour les utilisateurs gérés par une entreprise et sera autorisé pour les utilisateurs non gérés.</translation>
 <translation id="7295019613773647480">Activer les utilisateurs supervisés</translation>
-<translation id="7295038772938766029">Activer la recherche Lens assistée par appareil photo pour les utilisateurs de la version Enterprise</translation>
 <translation id="7302043767260300182">Délai de verrouillage de l'écran (secteur)</translation>
 <translation id="7303902834678570827">Les utilisateurs d'une session Invité gérée ne peuvent pas stocker les paramètres d'affichage au niveau de l'appareil</translation>
 <translation id="731208205557053914">Transmettre des informations sur les données VPD</translation>
@@ -5246,7 +5245,6 @@
 <translation id="7925224837072026018">Si cette règle est activée, les extensions ou applications Android sont autorisées à accéder aux clés d'entreprise. Ces clés sont destinées à une utilisation en entreprise uniquement si elles sont générées à l'aide de l'API chrome.enterprise.platformKeys sur un compte géré. Les accès réciproques entre clés d'entreprise et extensions ou applications Android ne peuvent pas être accordés ni supprimés par les utilisateurs.
 
       Par défaut, une extension ou une application Android ne peut pas utiliser une clé destinée à une utilisation en entreprise (ce qui équivaut à définir le paramètre allowCorporateKeyUsage sur "False" pour l'extension ou l'application concernée). Le paramètre allowCorporateKeyUsage doit être défini sur "True" pour qu'une extension ou une application Android puisse utiliser une clé de plate-forme destinée à une utilisation en entreprise pour signer des données arbitraires. N'accordez cette autorisation que si l'extension ou l'application Android offre des garanties de sécurité suffisantes pour empêcher des pirates informatiques d'accéder à la clé.</translation>
-<translation id="793134539373873765">Indiquer si une connexion P2P doit être utilisée pour les charges utiles de mise à jour de l'OS. Si le paramètre est défini sur "True", les charges utiles de mise à jour sur le réseau local sont partagées et utilisées par les appareils, ce qui peut avoir pour effet de réduire la quantité de bande passante utilisée et l'encombrement sur Internet. Si la charge utile de mise à jour n'est pas disponible sur le réseau local, le téléchargement est effectué sur l'appareil à partir d'un serveur de mise à jour. Si le paramètre est défini sur "False", ou s'il n'est pas configuré, la connexion P2P n'est pas utilisée.</translation>
 <translation id="7933141401888114454">Autoriser la création de comptes utilisateurs supervisés</translation>
 <translation id="793473937901685727">Définir la disponibilité des certificats pour les applications ARC</translation>
 <translation id="7937766917976512374">Autoriser ou interdire la capture vidéo</translation>
@@ -6196,6 +6194,7 @@
 <translation id="927444535723396977">Si cette règle est définie sur "1", les sites Web peuvent exécuter JavaScript. Si cette règle est définie sur "2", les sites ne sont pas autorisés à exécuter ce langage.
 
       Si cette règle n'est pas configurée, les sites peuvent exécuter JavaScript. Toutefois, les utilisateurs peuvent modifier ce paramètre.</translation>
+<translation id="928189505080808353">port 554 (expire le 15/10/2021)</translation>
 <translation id="929549405492388749">Si cette règle est définie sur "vrai", le cache des applications est activé de manière forcée, même s'il n'est pas disponible par défaut dans Chrome.
 
       Si cette règle n'est pas configurée ou si elle est définie sur "faux", le cache des applications applique les paramètres par défaut de Chrome.</translation>
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb
index f8cf976..6eceed5 100644
--- a/components/policy/resources/policy_templates_id.xtb
+++ b/components/policy/resources/policy_templates_id.xtb
@@ -349,7 +349,6 @@
 <translation id="1479427764273213107">Menyetel kebijakan akan menentukan daftar perangkat USB yang dapat dilepas dari driver kernelnya, agar dapat langsung digunakan melalui chrome.usb API dalam aplikasi web. Entri berupa pasangan ID Vendor USB dan Kode Produk untuk mengidentifikasi hardware tertentu.
 
       Jika tidak disetel, daftar perangkat USB yang dapat dilepas akan kosong.</translation>
-<translation id="1479515813926202288">Nonaktifkan penelusuran yang dibantu kamera Lens untuk Pengguna versi bisnis</translation>
 <translation id="1481508277421549404">Jika kebijakan disetel ke Benar (True), ekstensi yang diinstal oleh kebijakan perusahaan akan menggunakan API Platform Hardware Perusahaan.
 
       Jika kebijakan disetel ke Salah (False) atau tidak disetel, ekstensi tidak akan dapat menggunakan API ini.
@@ -441,13 +440,6 @@
       Buka https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Jangan izinkan penggunaan Mode Headless</translation>
 <translation id="1588240398285670601">Setelan Browser</translation>
-<translation id="1593245608325508847">Jika kebijakan ditetapkan, fitur login terbatas Chrome di G Suite akan diaktifkan dan pengguna tidak dapat mengubah setelan ini. Pengguna hanya dapat mengakses alat Google menggunakan akun dari domain yang telah ditentukan (untuk mengizinkan akun gmail atau googlemail, tambahkan consumer_accounts ke daftar domain). Setelan ini mencegah pengguna untuk login dan menambahkan Akun Sekunder di perangkat terkelola yang memerlukan autentikasi Google, jika akun tersebut bukan milik salah satu domain yang diizinkan secara eksplisit.
-
-      Jika setelan ini dibiarkan kosong atau tidak ditetapkan, pengguna dapat mengakses G Suite dengan akun apa pun.
-
-      Pengguna tidak dapat mengubah atau mengganti setelan ini.
-
-      Catatan: Kebijakan ini menyebabkan header X-GoogApps-Allowed-Domains ditambahkan ke semua permintaan HTTP dan HTTPS di semua domain google.com, seperti yang dijelaskan di https://support.google.com/a/answer/1668854.</translation>
 <translation id="1599424828227887013">Mengaktifkan Isolasi Situs untuk asal yang ditentukan di perangkat Android</translation>
 <translation id="159946228300522107">Jika kebijakan ditetapkan ke Benar (True), Chrome akan memaksimalkan jendela pertama yang ditampilkan saat pertama kali dijalankan.
 
@@ -995,7 +987,6 @@
 <translation id="2303795211377219696">Mengaktifkan IsiOtomatis untuk kartu kredit</translation>
 <translation id="2307496301287881990">Melaporkan status tampilan dan grafis</translation>
 <translation id="2309390639296060546">Setelan geolokasi default</translation>
-<translation id="2327252517317514801">Menentukan domain yang diizinkan untuk mengakses G Suite</translation>
 <translation id="2331354174913096226">Template URI pada resolver DNS-over-HTTPS yang diinginkan. Untuk menentukan beberapa resolver DNS-over-HTTPS, pisahkan template URI terkait dengan spasi.
 
       Jika DnsOverHttpsMode ditetapkan ke <ph name="SECURE_DNS_MODE_SECURE" />, kebijakan ini harus ditetapkan dan tidak boleh kosong.
@@ -2626,7 +2617,6 @@
 <translation id="4494132853995232608">DTC wilco</translation>
 <translation id="449423975179525290">Konfigurasikan kebijakan terkait <ph name="PLUGIN_VM_NAME" />.</translation>
 <translation id="449784980858429908">Otomatis memberikan izin ke situs untuk menghubungkan semua port serial.</translation>
-<translation id="4507775063441355559">Mengizinkan Penelusuran yang Dibantu Kamera <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="4510923771103268849">Pengguna diizinkan untuk memiliki akses root ke penampung Crostini</translation>
 <translation id="4515404363392014383">Aktifkan Safe Browsing untuk sumber tepercaya</translation>
 <translation id="4518251772179446575">Tanyakan setiap kali situs ingin melacak lokasi fisik pengguna</translation>
@@ -3204,7 +3194,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />, kolom <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> dan <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> akan digunakan.
 
       Catatan: Untuk contoh yang lebih mendetail, buka Project Chromium ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett ).</translation>
-<translation id="5264773067879932127">Jika kebijakan tidak disetel atau disetel ke Aktif, pengguna akan diizinkan menelusuri dengan kameranya menggunakan <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Jika kebijakan disetel ke Salah (False), pengguna tidak akan dapat melihat tombol <ph name="GOOGLE_LENS_PRODUCT_NAME" /> di kotak penelusuran saat Penelusuran yang Dibantu Kamera <ph name="GOOGLE_LENS_PRODUCT_NAME" /> didukung.</translation>
 <translation id="5266173014392157048">Kebijakan ini tidak digunakan lagi. Sebagai gantinya, gunakan kebijakan '<ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />'.
 
       Menyetel kebijakan akan menetapkan server mana yang menjadi tujuan delegasi <ph name="PRODUCT_NAME" />. Pisahkan beberapa nama server dengan koma. Karakter pengganti, <ph name="WILDCARD_VALUE" />, diizinkan.
@@ -4805,7 +4794,6 @@
       Di <ph name="MS_WIN_NAME" />, fungsi ini hanya tersedia di instance yang dihubungkan ke domain <ph name="MS_AD_NAME" />, dijalankan di Windows 10 Pro, atau didaftarkan di <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Di <ph name="MAC_OS_NAME" />, fungsi ini hanya tersedia di instance yang dikelola melalui MDM, atau dihubungkan ke domain melalui MCX.</translation>
 <translation id="7258823566580374486">Mengaktifkan pemberian tirai hosting akses jarak jauh</translation>
 <translation id="7260204423892780600">Mengontrol setelan untuk Asisten Google.</translation>
-<translation id="7260277299188117560">Pembaruan p2p otomatis diaktifkan</translation>
 <translation id="7261252191178797385">Gambar wallpaper perangkat</translation>
 <translation id="7264704483008663819">Kebijakan ini tidak digunakan lagi di M68, sebagai gantinya gunakan DeveloperToolsAvailability.
 
@@ -4837,7 +4825,6 @@
 
       Jika kebijakan ini tidak ditetapkan, tindakan defaultnya adalah tidak diizinkan untuk pengguna yang dikelola perusahaan dan diizinkan untuk pengguna yang tidak dikelola.</translation>
 <translation id="7295019613773647480">Aktifkan pengguna yang dilindungi</translation>
-<translation id="7295038772938766029">Aktifkan penelusuran yang dibantu kamera Lens untuk Pengguna versi bisnis</translation>
 <translation id="7302043767260300182">Penundaan kunci layar saat menggunakan daya AC</translation>
 <translation id="7303902834678570827">Pengguna Sesi Tamu Terkelola tidak dapat menyimpan setelan tampilan di seluruh perangkat</translation>
 <translation id="731208205557053914">Melaporkan info VPD</translation>
@@ -5284,7 +5271,6 @@
 <translation id="7925224837072026018">Menyetel kebijakan akan memberi ekstensi atau aplikasi Android akses ke kunci perusahaan. Kunci hanya ditujukan untuk pemakaian dalam perusahaan jika dibuat menggunakan chrome.enterprise.platformKeys API pada akun terkelola. Pengguna tidak dapat memberikan atau menarik akses ke kunci perusahaan kepada atau dari ekstensi atau aplikasi Android.
 
       Secara default, ekstensi atau aplikasi Android tidak dapat menggunakan kunci yang ditujukan untuk pemakaian dalam perusahaan, hal ini setara dengan menyetel allowCorporateKeyUsage ke Salah (False) untuk ekstensi atau aplikasi Android tersebut. Hanya jika allowCorporateKeyUsage disetel ke Benar (True) untuk suatu ekstensi atau aplikasi Android, ekstensi atau aplikasi Android tersebut dapat menggunakan kunci platform apa pun yang ditujukan untuk pemakaian dalam perusahaan, guna menandai data arbitrer. Izin ini hanya boleh diberikan jika ekstensi atau aplikasi Android dipercaya untuk mengamankan akses ke kunci dari para penyerang.</translation>
-<translation id="793134539373873765">Tentukan apakah p2p akan digunakan untuk payload pembaruan OS. Jika disetel ke True, perangkat akan membagi dan berusaha menggunakan payload pembaruan pada LAN, serta berpotensi mengurangi penggunaan dan kepadatan bandwidth internet. Jika payload pembaruan tidak tersedia di LAN, perangkat tersebut akan kembali mendownload dari server yang diperbarui. Jika disetel ke False atau tidak dikonfigurasi, p2p tidak akan digunakan.</translation>
 <translation id="7933141401888114454">Mengaktifkan pembuatan pengguna yang dilindungi</translation>
 <translation id="793473937901685727">Menyetel ketersediaan sertifikat untuk aplikasi ARC</translation>
 <translation id="7937766917976512374">Izinkan atau tolak penangkapan video</translation>
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb
index bb4c87c..0e97c13 100644
--- a/components/policy/resources/policy_templates_it.xtb
+++ b/components/policy/resources/policy_templates_it.xtb
@@ -350,7 +350,6 @@
 <translation id="1479427764273213107">L'impostazione del criterio consente di definire l'elenco di dispositivi USB che gli utenti possono scollegare dal proprio driver del kernel per essere utilizzati tramite l'API chrome.usb direttamente all'interno di un'app web. Le voci sono coppie costituite dall'ID fornitore USB e dall'ID prodotto per identificare un hardware specifico.
 
       Se non viene configurato, l'elenco di dispositivi USB scollegabili è vuoto.</translation>
-<translation id="1479515813926202288">Disattiva la ricerca assistita della fotocamera di Lens per gli utenti aziendali</translation>
 <translation id="1481508277421549404">Se il criterio è impostato su true, le estensioni installate dal criterio aziendale usano l'API Enterprise Hardware Platform.
 
       Se il criterio è impostato su false o non viene configurato, le estensioni non possono usare tale API.
@@ -442,13 +441,6 @@
       Visita la pagina https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Non è consentito l'uso della modalità headless</translation>
 <translation id="1588240398285670601">Impostazioni del browser</translation>
-<translation id="1593245608325508847">La configurazione del criterio consente di attivare la funzionalità di accesso limitato di Chrome in G Suite e di impedire agli utenti di modificare questa impostazione. Gli utenti possono accedere solo agli strumenti Google utilizzando gli account dei domini specificati (per consentire gli account gmail o googlemail, aggiungi consumer_accounts all'elenco dei domini). Questa impostazione impedisce agli utenti di accedere a un account secondario e di aggiungerne uno su un dispositivo gestito che richiede l'autenticazione di Google, se tale account non appartiene a uno dei domini esplicitamente consentiti.
-
-      Se il criterio viene lasciato vuoto o se non viene configurato, gli utenti possono accedere a G Suite con qualsiasi account.
-
-      Gli utenti non possono modificare o sovrascrivere questa impostazione.
-
-      Nota: questo criterio comporta l'aggiunta dell'intestazione X-GoogApps-Allowed-Domains a tutte le richieste GTTP e HTTPS inviate a tutti i domini google.com, come descritto all'indirizzo https://support.google.com/a/answer/1668854.</translation>
 <translation id="1599424828227887013">Attiva isolamento dei siti per origini specificate su dispositivi Android</translation>
 <translation id="159946228300522107">Se il criterio è impostato su True, Chrome ingrandisce la prima finestra mostrata alla prima esecuzione.
 
@@ -987,7 +979,6 @@
 <translation id="2303795211377219696">Attiva la Compilazione automatica per le carte di credito</translation>
 <translation id="2307496301287881990">Segnala stati del display e della grafica</translation>
 <translation id="2309390639296060546">Impostazione di geolocalizzazione predefinita</translation>
-<translation id="2327252517317514801">Definisci i domini autorizzati ad accedere a G Suite</translation>
 <translation id="2331354174913096226">Il modello URI del resolver DNS over HTTPS desiderato. Per specificare diversi resolver DNS over HTTPS, separa i modelli URI corrispondenti con gli spazi.
 
       Se il criterio DnsOverHttpsMode viene impostato su <ph name="SECURE_DNS_MODE_SECURE" />, questo criterio deve essere impostato e non può essere vuoto.
@@ -2603,7 +2594,6 @@
 <translation id="4494132853995232608">DTC wilco</translation>
 <translation id="449423975179525290">Imposta le norme relative a <ph name="PLUGIN_VM_NAME" />.</translation>
 <translation id="449784980858429908">Concedi automaticamente ai siti l'autorizzazione a connettersi a tutte le porte seriali</translation>
-<translation id="4507775063441355559">Consenti la ricerca assistita della fotocamera di <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="4510923771103268849">L'utente può avere accesso root ai contenitori Crostini</translation>
 <translation id="4515404363392014383">Attiva Navigazione sicura per le origini attendibili</translation>
 <translation id="4518251772179446575">Chiedi ogni volta che un sito desidera monitorare la posizione fisica degli utenti</translation>
@@ -3181,7 +3171,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />, vengono utilizzati i campi <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> e <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />.
 
       Nota: per esempi più approfonditi, consulta la pagina The Chromium Projects ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett ).</translation>
-<translation id="5264773067879932127">Se il criterio non viene configurato o se viene impostato su Disattivato, gli utenti possono effettuare ricerche con le loro fotocamere utilizzando <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Se viene impostato su Falso, gli utenti non possono visualizzare il pulsante <ph name="GOOGLE_LENS_PRODUCT_NAME" /> nella casella di ricerca, se la ricerca assistita della fotocamera di <ph name="GOOGLE_LENS_PRODUCT_NAME" /> è supportata.</translation>
 <translation id="5266173014392157048">Questo criterio è deprecato. Utilizza il criterio "<ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />".
 
       La configurazione del criterio consente di assegnare i server a cui <ph name="PRODUCT_NAME" /> può delegare le credenziali utente. Separa i nomi dei server con le virgole. I caratteri jolly (<ph name="WILDCARD_VALUE" />) sono consentiti.
@@ -4758,7 +4747,6 @@
       Su <ph name="MS_WIN_NAME" />, questa funzionalità è disponibile soltanto nelle istanze che fanno parte di un dominio <ph name="MS_AD_NAME" />, sono in esecuzione su Windows 10 Pro o sono registrate in <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Su <ph name="MAC_OS_NAME" />, questa funzionalità è disponibile soltanto nelle istanze gestite tramite MDM o aggiunte a un dominio tramite MCX.</translation>
 <translation id="7258823566580374486">Attiva separazione degli host di accesso remoto</translation>
 <translation id="7260204423892780600">Consente di gestire le impostazioni dell'Assistente Google.</translation>
-<translation id="7260277299188117560">Aggiornamento automatico p2p attivato</translation>
 <translation id="7261252191178797385">Immagine di sfondo del dispositivo</translation>
 <translation id="7264704483008663819">Questa norma è stata ritirata in M68; usa la norma DeveloperToolsAvailability.
 
@@ -4790,7 +4778,6 @@
 
       Se questa norma non è impostata, per impostazione predefinita la funzione non è consentita per gli utenti gestiti dall'azienda ed è consentita per gli utenti non gestiti.</translation>
 <translation id="7295019613773647480">Attiva utenti supervisionati</translation>
-<translation id="7295038772938766029">Attiva la ricerca assistita della fotocamera di Lens per gli utenti aziendali</translation>
 <translation id="7302043767260300182">Ritardo blocco schermo in caso di utilizzo di CA</translation>
 <translation id="7303902834678570827">Gli utenti di sessioni Ospite gestite non possono memorizzare le impostazioni di visualizzazione a livello di dispositivo.</translation>
 <translation id="731208205557053914">Segnala informazioni sui VPD</translation>
@@ -5239,7 +5226,6 @@
 <translation id="7925224837072026018">La configurazione del criterio consente alle estensioni o alle app per Android di accedere alle chiavi aziendali. Le chiavi sono destinate unicamente all'utilizzo aziendale se vengono generate tramite l'API chrome.enterprise.platformKeys su un account gestito. Gli utenti non possono consentire o revocare l'accesso delle estensioni o delle app per Android alle chiavi aziendali.
 
       Per impostazione predefinita, un'estensione o un'app per Android non può utilizzare una chiave destinata all'uso aziendale, il che equivale a impostare il criterio allowCorporateKeyUsage su Falso per tale estensione. Solo se il criterio allowCorporateKeyUsage viene impostato su Vero per un'estensione o un'app per Android può utilizzare qualsiasi chiave della piattaforma contrassegnata per uso aziendale per firmare dati arbitrari. L'autorizzazione viene concessa solo se l'estensione o l'app per Android viene considerata protetta dall'accesso alla chiave di potenziali utenti malintenzionati.</translation>
-<translation id="793134539373873765">Consente di specificare se p2p deve essere utilizzato per i payload di aggiornamento del sistema operativo. Se questa norma viene impostata su True, i dispositivi condivideranno e proveranno a consumare i payload di aggiornamento sulla LAN, riducendo potenzialmente l'utilizzo e la congestione della larghezza di banda Internet. Se il payload di aggiornamento non è disponibile sulla LAN, il dispositivo ripiegherà sul download da un server di aggiornamento. Se la norma viene impostata su False o non viene configurata, non verrà utilizzato p2p.</translation>
 <translation id="7933141401888114454">Attivazione della creazione di utenti controllati</translation>
 <translation id="793473937901685727">Imposta la disponibilità dei certificati per le app ARC</translation>
 <translation id="7937766917976512374">Consenti o nega acquisizione video</translation>
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb
index 034f798..205cde2 100644
--- a/components/policy/resources/policy_templates_ja.xtb
+++ b/components/policy/resources/policy_templates_ja.xtb
@@ -340,7 +340,6 @@
 <translation id="1479427764273213107">このポリシーでは、ユーザーがカーネル ドライバから分離してウェブアプリ内で直接 chrome.usb API を通じて使用できる USB デバイスのリストを定義できます。USB ベンダー ID と商品 ID をペアで入力し、個々のハードウェアを特定できるようにします。
 
       このポリシーを設定しない場合、分離可能な USB デバイスのリストは空になります。</translation>
-<translation id="1479515813926202288">Enterprise ユーザーに対して Google レンズのカメラを使用した検索を無効にする</translation>
 <translation id="1481508277421549404">このポリシーを True に設定した場合、エンタープライズ ポリシーによってインストールされた拡張機能に対して Enterprise Hardware Platform API の使用が許可されます。
 
       このポリシーを False に設定するか未設定のままにした場合、拡張機能に対して API の使用は禁止されます。
@@ -432,13 +431,6 @@
       詳しくは、https://www.chromestatus.com/feature/4664843055398912 をご覧ください。</translation>
 <translation id="1587585749332985896">ヘッドレス モードの使用を許可しない</translation>
 <translation id="1588240398285670601">ブラウザの設定</translation>
-<translation id="1593245608325508847">このポリシーでは、Chrome の制限付きログイン機能を G Suite で有効にするとともに、ユーザーがこの設定を変更できないようにします。ユーザーは、指定ドメインのアカウントでのみ、Google のツールにアクセスできます(Gmail アカウントまたは GoogleMail アカウントを許可する場合は、consumer_accounts をドメインリストに追加します)。この設定により、Google の認証を必要とする管理対象のデバイス上では、アカウントが明示的に許可されたドメインのいずれにも属していない場合に、ユーザーは予備のアカウントへのログインや追加ができなくなります。
-
-      この設定を空白または未設定のままにした場合、ユーザーはどのアカウントでも G Suite にアクセスできます。
-
-      ユーザーはこの設定を変更またはオーバーライドできません。
-
-      注: このポリシーにより、すべての google.com ドメインに対するすべての HTTP および HTTPS リクエストに X-GoogApps-Allowed-Domains ヘッダーが追加されます。詳しくは https://support.google.com/a/answer/1668854 をご覧ください。</translation>
 <translation id="1599424828227887013">Android デバイスで指定の発行元に対してサイト分離を有効にする</translation>
 <translation id="159946228300522107">このポリシーを True に設定した場合、Chrome では初回実行時に最初に表示されたウィンドウが最大化されます。このポリシーを False に設定した場合、または未設定のままにした場合、画面サイズによっては、Chrome で最初に表示されたウィンドウが最大化されます。</translation>
 <translation id="1600340610556453828">このポリシーを無効に設定した場合、<ph name="PRODUCT_OS_NAME" /> で Wi-Fi がオフになり、ユーザーはこの設定を変更できません。
@@ -964,7 +956,6 @@
 <translation id="2303795211377219696">クレジット カードの自動入力を有効にする</translation>
 <translation id="2307496301287881990">ディスプレイとグラフィックのステータスを報告する</translation>
 <translation id="2309390639296060546">デフォルトの位置情報設定</translation>
-<translation id="2327252517317514801">G Suite へのアクセスを許可するドメインを定義する</translation>
 <translation id="2331354174913096226">希望の DNS-over-HTTPS リゾルバの URI テンプレートを指定します。複数の DNS-over-HTTPS リゾルバを指定するには、対応する URI テンプレートをスペースで区切ります。
 
       DnsOverHttpsMode が <ph name="SECURE_DNS_MODE_SECURE" /> に設定されている場合、このポリシーの設定は必須で、空にはできません。
@@ -2545,7 +2536,6 @@
 <translation id="4494132853995232608">Wilco DTC</translation>
 <translation id="449423975179525290"><ph name="PLUGIN_VM_NAME" /> に関連するポリシーを設定します。</translation>
 <translation id="449784980858429908">すべてのシリアルポートへの接続を自動的にサイトに許可します。</translation>
-<translation id="4507775063441355559"><ph name="GOOGLE_LENS_PRODUCT_NAME" /> のカメラを使用した検索を許可する</translation>
 <translation id="4510923771103268849">Crostini コンテナへのルートアクセスをユーザーに許可する</translation>
 <translation id="4515404363392014383">信頼できる提供元に対してセーフ ブラウジングを有効にする</translation>
 <translation id="4518251772179446575">サイトがユーザーの物理的な現在地を追跡しようとしたときに毎回確認する</translation>
@@ -3099,7 +3089,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />: <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> フィールドと <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> フィールドを使用します。
 
       注: 詳しい例については、Chromium プロジェクトの説明(https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett)をご覧ください。</translation>
-<translation id="5264773067879932127">このポリシーを未設定のままにするか有効に設定した場合、ユーザーはカメラと <ph name="GOOGLE_LENS_PRODUCT_NAME" /> を使用して検索できます。このポリシーを False に設定した場合、<ph name="GOOGLE_LENS_PRODUCT_NAME" /> のカメラを使用した検索が可能な場合でも、検索ボックスに <ph name="GOOGLE_LENS_PRODUCT_NAME" /> ボタンは表示されません。</translation>
 <translation id="5266173014392157048">このポリシーはサポートが終了しています。代わりに <ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" /> ポリシーを使用してください。
 
       このポリシーでは、<ph name="PRODUCT_NAME" /> が委任できるサーバーを割り当てることができます。複数のサーバー名を入力するときはカンマで区切ります。ワイルドカード(<ph name="WILDCARD_VALUE" />)を使用できます。
@@ -4615,7 +4604,6 @@
       <ph name="MS_WIN_NAME" /> では、<ph name="MS_AD_NAME" /> ドメインに追加されたインスタンス、Windows 10 Pro で実行されているインスタンス、<ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> に登録されているインスタンスでのみこの機能を使用できます。<ph name="MAC_OS_NAME" /> では、MDM を介して管理されるインスタンスまたは MCX を介してドメインに追加されたインスタンスでのみこの機能を使用できます。</translation>
 <translation id="7258823566580374486">リモート アクセス ホストのカーテンを有効にする</translation>
 <translation id="7260204423892780600">Google アシスタントの設定を管理します。</translation>
-<translation id="7260277299188117560">自動更新での p2p の有効化</translation>
 <translation id="7261252191178797385">デバイスの壁紙画像</translation>
 <translation id="7264704483008663819">このポリシーは M68 でサポートを終了しました。代わりに DeveloperToolsAvailability を使用してください。
 
@@ -4647,7 +4635,6 @@
 
       このポリシーが未設定の場合、デフォルトにより、企業の管理対象ユーザーは使用を許可されず、管理対象外のユーザーは使用を許可されます。</translation>
 <translation id="7295019613773647480">監視対象ユーザーを有効にする</translation>
-<translation id="7295038772938766029">Enterprise ユーザーに対して Google レンズのカメラを使用した検索を有効にする</translation>
 <translation id="7302043767260300182">画面がロックされるまでの時間(AC 電源での実行時)</translation>
 <translation id="7303902834678570827">管理対象のゲスト セッションのユーザーにデバイスのディスプレイ設定の保存を許可しない</translation>
 <translation id="731208205557053914">VPD 情報を報告する</translation>
@@ -5082,7 +5069,6 @@
 <translation id="7925224837072026018">このポリシーでは、拡張機能または Android アプリに対し、企業キーへのアクセスを許可します。管理対象アカウントで chrome.enterprise.platformKeys API を使用して生成したキーは、企業専用のキーと指定されます。ユーザーは、拡張機能または Android アプリに企業キーへのアクセス権を付与することはできず、拡張機能または Android アプリに付与された企業キーへのアクセス権を取り消すこともできません。
 
       デフォルトでは、拡張機能または Android アプリで企業用のキーを使用することはできません。この動作は、拡張機能または Android アプリに対して allowCorporateKeyUsage を False に設定した場合の結果と同じです。拡張機能または Android アプリに対して allowCorporateKeyUsage が True に設定されている場合のみ、その拡張機能または Android アプリでは企業用のプラットフォーム キーを任意のデータの署名に使用できます。対象の拡張機能または Android アプリがキーへのアクセスを攻撃から保護できると信頼できる場合にのみ、この許可を付与してください。</translation>
-<translation id="793134539373873765">p2p を OS 更新ペイロードに使用するかどうかを指定します。True に設定すると、デバイスは LAN 上で更新ペイロードを共有し、使用しようとするため、インターネット帯域幅の使用と混雑が削減される可能性があります。更新ペイロードが LAN 上で使用できない場合、デバイスは更新サーバーからのダウンロードにフォールバックします。False に設定するか、何も設定しない場合、p2p は使用されません。</translation>
 <translation id="7933141401888114454">監視対象ユーザーを作成できるようにする</translation>
 <translation id="793473937901685727">ARC アプリで証明書を使用できるかどうかを設定します</translation>
 <translation id="7937766917976512374">動画キャプチャを許可または拒否する</translation>
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb
index 383b8f8..fb4c570 100644
--- a/components/policy/resources/policy_templates_ko.xtb
+++ b/components/policy/resources/policy_templates_ko.xtb
@@ -350,7 +350,6 @@
 <translation id="1479427764273213107">정책을 설정하면 사용자가 웹 앱 내에서 직접 chrome.usb API를 통해 사용하기 위해 커널 드라이버에서 분리할 수 있는 USB 기기 목록을 정의합니다. 항목은 특정 하드웨어를 식별하는 USB 공급업체 식별자 및 제품 식별자의 쌍입니다.
 
       설정하지 않으면 분리할 수 있는 USB 기기 목록이 빈 상태로 설정됩니다.</translation>
-<translation id="1479515813926202288">기업 사용자의 렌즈 카메라 지원 검색 사용 중지</translation>
 <translation id="1481508277421549404">정책을 True로 설정하면 기업 정책에 의해 설치된 확장 프로그램에서 Enterprise Hardware Platform API를 사용할 수 있습니다.
 
       정책을 False로 설정하거나 설정하지 않으면 확장 프로그램에서 이 API를 사용할 수 없습니다.
@@ -442,13 +441,6 @@
       https://www.chromestatus.com/feature/4664843055398912 페이지를 참고하세요.</translation>
 <translation id="1587585749332985896">헤드리스 모드 사용 허용 안 함</translation>
 <translation id="1588240398285670601">브라우저 설정</translation>
-<translation id="1593245608325508847">이 정책을 설정하면 G Suite 내 Chrome의 제한된 로그인 기능이 사용 설정되고 사용자가 설정을 변경할 수 없습니다. 사용자는 특정 도메인의 계정을 사용해서만 gmail 또는 googlemail 계정을 허용하고 도메인 목록에 consumer_accounts를 추가하기 위해 Google 도구에 액세스할 수 있습니다. 이 설정은 보조 계정이 명시적으로 허용된 도메인에 속하지 않은 경우 사용자가 Google 인증이 필요한 관리 대상 기기에 보조 계정을 추가하고 보조 계정으로 로그인하는 것을 차단합니다.
-
-      설정을 비워 두거나 설정하지 않으면 사용자가 어느 계정으로든 G Suite에 액세스할 수 있습니다.
-
-      사용자는 이 설정을 변경하거나 재정의할 수 없습니다.
-
-      참고: 정책을 사용하면 https://support.google.com/a/answer/1668854에서 설명된 바와 같이 X-GoogApps-Allowed-Domains 헤더가 모든 google.com 도메인에 대한 HTTP 및 HTTPS 요청에 첨부됩니다.</translation>
 <translation id="1599424828227887013">Android 기기에서 지정된 출처의 사이트 격리 사용 설정</translation>
 <translation id="159946228300522107">정책을 True로 설정하면 Chrome에서 최초 실행 시 표시되는 첫 번째 창을 최대화합니다.
 
@@ -992,7 +984,6 @@
 <translation id="2303795211377219696">신용카드 정보 자동 완성 사용</translation>
 <translation id="2307496301287881990">디스플레이 및 그래픽 상태 보고</translation>
 <translation id="2309390639296060546">기본 위치정보 설정</translation>
-<translation id="2327252517317514801">G Suite에 액세스할 수 있게 허용된 도메인 정의</translation>
 <translation id="2331354174913096226">원하는 DNS-over-HTTPS 리졸버의 URI 템플릿입니다. 여러 개의 DNS-over-HTTPS 리졸버를 지정하려면 해당하는 URI 템플릿을 공백으로 구분하세요.
 
       DnsOverHttpsMode가 <ph name="SECURE_DNS_MODE_SECURE" />(으)로 설정되어 있으면 이 정책이 설정되어 있어야 하며 비어있으면 안 됩니다.
@@ -2620,7 +2611,6 @@
 <translation id="4494132853995232608">Wilco DTC</translation>
 <translation id="449423975179525290"><ph name="PLUGIN_VM_NAME" /> 관련 정책을 설정합니다.</translation>
 <translation id="449784980858429908">사이트에 모든 직렬 포트에 연결할 권한을 자동으로 부여합니다.</translation>
-<translation id="4507775063441355559"><ph name="GOOGLE_LENS_PRODUCT_NAME" /> 카메라 지원 검색 허용</translation>
 <translation id="4510923771103268849">사용자는 Crostini 컨테이너에 대한 루트 액세스 권한을 가질 수 있음</translation>
 <translation id="4515404363392014383">신뢰할 수 있는 소스에서 세이프 브라우징을 사용할 수 있도록 허용</translation>
 <translation id="4518251772179446575">사이트에서 사용자의 실제 위치를 추적할 때마다 확인</translation>
@@ -3199,7 +3189,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> 값을 선택하면 <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> 및 <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> 필드가 사용됩니다.
 
       참고: 자세한 예시를 보려면 Chromium 프로젝트(https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett)를 참고하세요.</translation>
-<translation id="5264773067879932127">정책을 설정하지 않거나 사용 설정하면 사용자가 <ph name="GOOGLE_LENS_PRODUCT_NAME" />을(를) 통해 카메라를 사용하여 검색할 수 있습니다. 정책을 False로 설정하면 <ph name="GOOGLE_LENS_PRODUCT_NAME" /> 카메라 지원 검색 기능이 제공될 때도 검색창에 <ph name="GOOGLE_LENS_PRODUCT_NAME" /> 버튼이 표시되지 않습니다.</translation>
 <translation id="5266173014392157048">이 정책은 지원 중단되었으므로 ‘<ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />’ 정책을 대신 사용하세요.
 
       정책을 설정하면 <ph name="PRODUCT_NAME" />이 사용자 인증 정보를 위임할 수 있는 서버가 할당됩니다. 서로 다른 서버 이름은 쉼표로 구분합니다. 와일드 카드(<ph name="WILDCARD_VALUE" />)를 사용할 수 있습니다.
@@ -4801,7 +4790,6 @@
       <ph name="MS_WIN_NAME" />의 경우 이 기능은 <ph name="MS_AD_NAME" /> 도메인에 연결된 인스턴스, Windows 10 Pro에서 실행되는 인스턴스 또는 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />에 등록된 인스턴스에서만 사용할 수 있습니다. <ph name="MAC_OS_NAME" />의 경우에는 MDM을 통해 관리되는 인스턴스 또는 MCX를 통해 도메인에 연결된 인스턴스에서만 사용할 수 있습니다.</translation>
 <translation id="7258823566580374486">원격 액세스 호스트 차단을 사용하도록 설정합니다.</translation>
 <translation id="7260204423892780600">Google 어시스턴트 설정을 제어합니다.</translation>
-<translation id="7260277299188117560">p2p 자동 업데이트 사용</translation>
 <translation id="7261252191178797385">기기 배경화면 이미지</translation>
 <translation id="7264704483008663819">이 정책은 M68에서 지원이 중단되었습니다. 대신 DeveloperToolsAvailability를 사용하시기 바랍니다.
 
@@ -4833,7 +4821,6 @@
 
       이 정책이 설정되지 않으면 기본적으로 엔터프라이즈 관리 사용자의 경우 사용 중지되고 관리되지 않는 사용자의 경우 사용 설정됩니다.</translation>
 <translation id="7295019613773647480">관리 대상 사용자를 사용하도록 설정</translation>
-<translation id="7295038772938766029">기업 사용자의 렌즈 카메라 지원 검색 사용 설정</translation>
 <translation id="7302043767260300182">AC 전원으로 실행할 때 화면 잠금 지연</translation>
 <translation id="7303902834678570827">관리 게스트 세션 사용자가 기기 전체에 적용되는 화면 설정을 저장할 수 없음</translation>
 <translation id="731208205557053914">VPD 정보 보고</translation>
@@ -5283,7 +5270,6 @@
 <translation id="7925224837072026018">이 정책을 설정하면 회사 키에 대한 액세스 권한이 확장 프로그램 또는 Android 애플리케이션에 부여됩니다. 관리 계정에서 chrome.enterprise.platformKeys API를 사용하여 생성된 경우에만 키가 회사용으로 지정됩니다. 사용자는 회사 키에 대한 액세스 권한을 확장 프로그램 또는 Android 애플리케이션에 부여 또는 철회할 수 없습니다.
 
       기본적으로 확장 프로그램 또는 Android 애플리케이션은 회사용으로 지정된 키를 사용할 수 없으며, 이는 확장 프로그램 또는 Android 애플리케이션의 allowCorporateKeyUsage를 False로 설정하는 것과 동일합니다. 확장 프로그램의 allowCorporateKeyUsage를 True로 설정하는 경우에만 확장 프로그램 또는 Android 애플리케이션에서 회사용으로 표시된 플랫폼 키를 사용하여 임의의 데이터에 서명할 수 있습니다. 확장 프로그램 또는 Android 애플리케이션이 공격자로부터 키에 대한 액세스 권한을 보호한다고 신뢰할 수 있는 경우에만 이 권한을 허용하세요.</translation>
-<translation id="793134539373873765">OS 업데이트 페이로드에 p2p를 사용할지 여부를 지정합니다. True로 설정되면 기기는 LAN에서 업데이트 페이로드를 공유하고 소비하려고 시도하여 인터넷 대역폭 사용량 및 혼잡을 줄일 수 있습니다. LAN에서 업데이트 페이로드를 사용할 수 없는 경우 기기는 다시 업데이트 서버로부터 다운로드합니다. False로 설정되었거나 아무런 설정이 없는 경우 p2p가 사용되지 않습니다.</translation>
 <translation id="7933141401888114454">관리 대상 사용자 생성을 허용합니다.</translation>
 <translation id="793473937901685727">ARC 앱에 인증서 사용 가능 여부 설정</translation>
 <translation id="7937766917976512374">동영상 캡처 허용 또는 거부</translation>
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb
index 48ca232..9665135 100644
--- a/components/policy/resources/policy_templates_nl.xtb
+++ b/components/policy/resources/policy_templates_nl.xtb
@@ -350,7 +350,6 @@
 <translation id="1479427764273213107">Als je het beleid instelt, wordt de lijst met USB-apparaten gedefinieerd die door gebruikers mogen worden ontkoppeld van hun kernel-driver, zodat ze via de chrome.usb API rechtstreeks kunnen worden gebruikt in een web-app. Items zijn paren van de ID van de USB-leverancier en de ID van het product, zodat specifieke hardware kan worden geïdentificeerd.
 
       Als je het beleid niet instelt, is de lijst met USB-apparaten die kunnen worden ontkoppeld leeg.</translation>
-<translation id="1479515813926202288">Door de camera ondersteund zoeken via Lens uitzetten voor zakelijke gebruikers</translation>
 <translation id="1481508277421549404">Als je het beleid instelt op True, kunnen extensies die zijn geïnstalleerd door bedrijfsbeleid de Enterprise Hardware Platform API gebruiken.
 
       Als je het beleid instelt op False of niet instelt, kunnen extensies deze API niet gebruiken.
@@ -442,13 +441,6 @@
       Zie https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Gebruik van de stand zonder interface niet toestaan</translation>
 <translation id="1588240398285670601">Browserinstellingen</translation>
-<translation id="1593245608325508847">Als je dit beleid instelt, wordt de beperkte inlogfunctie van Chrome in G Suite aangezet. Gebruikers kunnen deze instelling niet wijzigen. Gebruikers kunnen Google-tools alleen openen met accounts van de opgegeven domeinen (voeg consumer_accounts toe aan de lijst met domeinen om Gmail- en GoogleMail-accounts toe te staan). Deze instelling voorkomt dat gebruikers inloggen op een secundair account en dit toevoegen aan een beheerd apparaat waarvoor Google-verificatie vereist is, als dit account niet behoort tot één van de expliciet toegestane domeinen.
-
-      Als je deze instelling leeg laat of niet instelt, kunnen gebruikers G Suite openen met elk account.
-
-      Gebruikers kunnen deze instelling niet wijzigen of overschrijven.
-
-      Opmerking: Door dit beleid wordt de kop X-GoogApps-Allowed-Domains toegevoegd aan alle HTTP- en HTTPS-verzoeken voor alle google.com-domeinen, zoals beschreven in https://support.google.com/a/answer/1668854.</translation>
 <translation id="1599424828227887013">Site-isolatie aanzetten voor opgegeven oorsprongen op Android-apparaten</translation>
 <translation id="159946228300522107">Als je het beleid instelt op True, maximaliseert Chrome het eerste venster tijdens de eerste uitvoering.
 
@@ -980,7 +972,6 @@
 <translation id="2303795211377219696">Automatisch invullen aanzetten voor creditcards</translation>
 <translation id="2307496301287881990">Statussen van scherm en grafische kaart rapporteren</translation>
 <translation id="2309390639296060546">Standaardinstelling voor geolocatie</translation>
-<translation id="2327252517317514801">Domeinen definiëren voor toegang tot G Suite</translation>
 <translation id="2331354174913096226">De URI-template van de gewenste DNS-over-HTTPS-resolver. Als je meerdere DNS-over-HTTPS-resolvers wilt opgeven, scheid je de overeenkomstige URI-templates met een spatie.
 
       Als de DnsOverHttpsMode is ingesteld op <ph name="SECURE_DNS_MODE_SECURE" />, moet dit beleid worden ingesteld en mag het niet leeg blijven.
@@ -2587,7 +2578,6 @@
 <translation id="4494132853995232608">Wilco DTC</translation>
 <translation id="449423975179525290">Aan <ph name="PLUGIN_VM_NAME" /> gerelateerd beleid configureren.</translation>
 <translation id="449784980858429908">Automatisch rechten aan sites geven om verbinding te maken met alle seriële poorten.</translation>
-<translation id="4507775063441355559">Door de camera ondersteund zoeken via <ph name="GOOGLE_LENS_PRODUCT_NAME" /> toestaan</translation>
 <translation id="4510923771103268849">De gebruiker heeft toestemming voor roottoegang tot Crostini-containers</translation>
 <translation id="4515404363392014383">Safe Browsing voor vertrouwde bronnen aanzetten</translation>
 <translation id="4518251772179446575">Goedkeuring vragen wanneer een site de fysieke locatie van gebruikers wil bijhouden</translation>
@@ -3162,7 +3152,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />: De velden <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> en <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> worden gebruikt.
 
       Opmerking: Voor gedetailleerdere voorbeelden ga je naar The Chromium Projects ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett ).</translation>
-<translation id="5264773067879932127">Als je het beleid toepast of niet instelt, kunnen gebruikers zoeken met hun camera's via <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Als je het beleid instelt op False, zien gebruikers de knop <ph name="GOOGLE_LENS_PRODUCT_NAME" /> niet in het zoekvak als door de camera ondersteund zoeken via <ph name="GOOGLE_LENS_PRODUCT_NAME" /> wordt ondersteund.</translation>
 <translation id="5266173014392157048">Dit beleid is beëindigd. Gebruik in plaats daarvan het beleid <ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />.
 
       Als je het beleid instelt, worden servers toegewezen waaraan <ph name="PRODUCT_NAME" /> kan delegeren. Gebruik bij meerdere servernamen een komma als scheidingsteken. Jokertekens (<ph name="WILDCARD_VALUE" />) zijn toegestaan.
@@ -4726,7 +4715,6 @@
       In <ph name="MS_WIN_NAME" /> is deze functionaliteit alleen beschikbaar voor instanties die zijn gekoppeld aan een <ph name="MS_AD_NAME" />-domein, worden uitgevoerd in Windows 10 Pro of zijn ingeschreven voor <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. In <ph name="MAC_OS_NAME" /> is deze functionaliteit alleen beschikbaar voor instanties die via MDM worden beheerd of via MCX aan een domein zijn gekoppeld.</translation>
 <translation id="7258823566580374486">Afscherming van hosts voor externe toegang aanzetten</translation>
 <translation id="7260204423892780600">Hiermee bepaal je de instellingen voor de Google Assistent.</translation>
-<translation id="7260277299188117560">Automatisch updaten van p2p aangezet</translation>
 <translation id="7261252191178797385">Achtergrondafbeelding voor apparaat</translation>
 <translation id="7264704483008663819">Dit beleid is beëindigd in M68. Gebruik in plaats hiervan DeveloperToolsAvailability.
 
@@ -4758,7 +4746,6 @@
 
       Als dit beleid niet wordt ingesteld, geldt de standaardwaarde 'niet toegestaan' voor beheerde zakelijke gebruikers en 'toegestaan' voor niet-beheerde gebruikers.</translation>
 <translation id="7295019613773647480">Gebruikers met beperkte rechten aanzetten</translation>
-<translation id="7295038772938766029">Door de camera ondersteund zoeken via Lens aanzetten voor zakelijke gebruikers</translation>
 <translation id="7302043767260300182">Vertraging van schermvergrendeling wanneer op netstroom wordt gewerkt</translation>
 <translation id="7303902834678570827">Gebruikers van beheerde gastsessies kunnen geen weergave-eigenschappen voor het hele apparaat opslaan</translation>
 <translation id="731208205557053914">VPD-gegevens rapporteren</translation>
@@ -5206,7 +5193,6 @@
 <translation id="7925224837072026018">Als je het beleid instelt, geef je toegang tot zakelijke sleutels tot extensies of Android-apps. Sleutels zijn alleen voor zakelijk gebruik bedoeld als ze via een beheerd account worden aangemaakt met de chrome.enterprise.platformKeys API. Gebruikers kunnen geen toegang toestaan of intrekken tot zakelijke sleutels naar of van extensies of Android-apps.
 
       Een extensie of Android-app kan standaard geen sleutel gebruiken die is bedoeld voor zakelijk gebruik. Dit staat gelijk aan het instellen van allowCorporateKeyUsage op False voor die extensie of Android-app. Alleen als allowCorporateKeyUsage voor een extensie of Android-app is ingesteld op True kan deze elke platformsleutel gebruiken die is gemarkeerd voor zakelijk gebruik om willekeurige gegevens te ondertekenen. Geef deze toestemming alleen als je er zeker van bent dat de extensie of de Android-app de toegang tot de sleutel voldoende beveiligt tegen aanvallers.</translation>
-<translation id="793134539373873765">Specificeert of p2p wordt gebruikt voor netto-updateladingen voor het besturingssysteem. Als dit is ingesteld op 'True', proberen apparaten netto-updateladingen (payloads) op te halen via het LAN, waardoor bandbreedtegebruik en vertraging kunnen worden verminderd. Als de netto-updatelading niet beschikbaar is via het LAN, gaat het apparaat over tot downloaden via een updateserver. Als deze instelling is ingesteld op 'False' of niet is geconfigureerd, wordt 2p2 niet gebruikt.</translation>
 <translation id="7933141401888114454">Aanmaak van bewaakte gebruikers aanzetten</translation>
 <translation id="793473937901685727">Certificaatbeschikbaarheid instellen voor ARC-apps</translation>
 <translation id="7937766917976512374">Het opnemen van video's toestaan of weigeren</translation>
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb
index 6d37f808..bb6644f67 100644
--- a/components/policy/resources/policy_templates_pt-BR.xtb
+++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -346,7 +346,6 @@
 <translation id="1479427764273213107">Se a política for definida, será configurada uma lista de dispositivos USB que o usuário pode remover do driver de kernel dele para uso pela API chrome.usb diretamente dentro de um app da Web. As entradas são pares de um identificador de fornecedor e um identificador de produto USB para reconhecer um hardware específico.
 
       Se não for definida, a lista de dispositivo USB que podem ser removidos ficará vazia.</translation>
-<translation id="1479515813926202288">Desativar a pesquisa assistida pela câmera do Lens para usuários corporativos</translation>
 <translation id="1481508277421549404">Se a política for definida como verdadeira, as extensões instaladas pela política comercial poderão usar a API Enterprise Hardware Platform.
 
       Se a política for definida como falsa ou não for definida, as extensões não poderão usar essa API.
@@ -438,13 +437,6 @@
       Consulte https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Não permitir o uso do modo headless</translation>
 <translation id="1588240398285670601">Configurações do navegador</translation>
-<translation id="1593245608325508847">Se a política for definida, o recurso de login restrito do Chrome será ativado no G Suite e os usuários não poderão mudar essa configuração. Os usuários poderão acessar as ferramentas do Google apenas usando contas dos domínios especificados. Para permitir contas gmail ou googlemail, adicione consumer_accounts à lista de domínios. Essa configuração impede que os usuários façam login e adicionem uma conta secundária em um dispositivo gerenciado que precisa da autenticação do Google se essa conta não pertencer a um dos domínios explicitamente permitidos.
-
-      Deixar essa configuração vazia ou sem definição permitirá que os usuários acessem o G Suite com qualquer conta.
-
-      Os usuários não poderão mudar ou substituir essa configuração.
-
-      Observação: essa política faz com que o cabeçalho X-GoogApps-Allowed-Domains seja anexado a todas as solicitações HTTP e HTTPS de todos os domínios google.com, como descrito em https://support.google.com/a/answer/1668854.</translation>
 <translation id="1599424828227887013">Ativa o isolamento de sites para origens específicas em dispositivos Android</translation>
 <translation id="159946228300522107">Se a política for definida como verdadeira, o Chrome maximizará a primeira janela exibida durante a primeira execução.
 
@@ -988,7 +980,6 @@
 <translation id="2303795211377219696">Ativar o preenchimento automático para cartões de crédito</translation>
 <translation id="2307496301287881990">Informar status de tela e gráficos</translation>
 <translation id="2309390639296060546">Configuração padrão de geolocalização</translation>
-<translation id="2327252517317514801">Definir os domínios autorizados a acessar o G Suite</translation>
 <translation id="2331354174913096226">O modelo de URI do resolvedor de DNS sobre HTTPS desejado. Para especificar vários resolvedores de DNS sobre HTTPS, separe os modelos de URI correspondentes com espaços.
 
       Se DnsOverHttpsMode estiver definido como <ph name="SECURE_DNS_MODE_SECURE" />, esta política precisará ser definida e não poderá estar vazia.
@@ -2610,7 +2601,6 @@
 <translation id="4494132853995232608">DTC wilco</translation>
 <translation id="449423975179525290">Configura políticas relacionadas ao <ph name="PLUGIN_VM_NAME" />.</translation>
 <translation id="449784980858429908">Permitir automaticamente que os sites se conectem a todas as portas seriais.</translation>
-<translation id="4507775063441355559">Permitir a pesquisa assistida pela câmera do <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="4510923771103268849">O usuário tem permissão de acesso root aos contêineres do Crostini</translation>
 <translation id="4515404363392014383">Ativar a Navegação segura para fontes confiáveis</translation>
 <translation id="4518251772179446575">Perguntar sempre que um site quiser rastrear a localização física dos usuários</translation>
@@ -3183,7 +3173,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />, os campos <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> e <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> serão usados.
 
       Observação: para ver mais exemplos detalhados, acesse The Chromium Projects (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett, link em inglês).</translation>
-<translation id="5264773067879932127">Se a política for ativada ou deixada sem definição, os usuários poderão pesquisar com a câmera usando o <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Se a política for desativada, o botão do <ph name="GOOGLE_LENS_PRODUCT_NAME" /> não estará disponível na caixa de pesquisa quando houver compatibilidade com a pesquisa assistida pela câmera do <ph name="GOOGLE_LENS_PRODUCT_NAME" />.</translation>
 <translation id="5266173014392157048">Esta política está obsoleta. Use a <ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />.
 
       A definição da política atribui servidores que podem ser delegados pelo <ph name="PRODUCT_NAME" />. Separe vários nomes de servidor usando vírgulas. Caracteres curinga (<ph name="WILDCARD_VALUE" />) são permitidos.
@@ -4775,7 +4764,6 @@
       No <ph name="MS_WIN_NAME" />, essa funcionalidade está disponível apenas em instâncias associadas a um domínio do <ph name="MS_AD_NAME" />, executadas no Windows 10 Pro ou registradas no <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. No <ph name="MAC_OS_NAME" />, essa funcionalidade está disponível apenas em instâncias gerenciadas por MDM ou associadas a um domínio via MCX.</translation>
 <translation id="7258823566580374486">Ativar cortinas de hosts de acesso remoto</translation>
 <translation id="7260204423892780600">Controla as configurações do Google Assistente.</translation>
-<translation id="7260277299188117560">Atualização automática de p2p ativada</translation>
 <translation id="7261252191178797385">Imagem de plano de fundo do dispositivo</translation>
 <translation id="7264704483008663819">O uso desta política foi suspenso no M68. Substitua-a por DeveloperToolsAvailability.
 
@@ -4807,7 +4795,6 @@
 
       Se esta política for deixada sem definição, o comportamento padrão será não permitir para usuários gerenciados por empresas e permitir para usuários não gerenciados.</translation>
 <translation id="7295019613773647480">Ativar usuários supervisionados</translation>
-<translation id="7295038772938766029">Ativar a pesquisa assistida pela câmera do Lens para usuários corporativos</translation>
 <translation id="7302043767260300182">Intervalo de bloqueio da tela no funcionamento com alimentação CA</translation>
 <translation id="7303902834678570827">Usuários de Sessões de visitante gerenciadas não podem armazenar configurações de tela para o dispositivo</translation>
 <translation id="731208205557053914">Enviar informações sobre os VPD</translation>
@@ -5255,7 +5242,6 @@
 <translation id="7925224837072026018">Se a política for definida, as extensões ou os apps Android terão acesso a chaves corporativas. Apenas chaves geradas usando a API chrome.enterprise.platformKeys em uma conta gerenciada são designadas para uso corporativo. O usuário não poderá conceder ou revogar o acesso de extensões ou apps Android a chaves corporativas.
 
       Por padrão, uma extensão ou um app Android não pode usar uma chave designada como corporativa. Isso é equivalente a definir allowCorporateKeyUsage como "Falsa" para a política. Uma extensão ou um app Android só poderá usar chaves de plataforma marcadas como corporativas para assinar dados arbitrários se allowCorporateKeyUsage for definida como "Verdadeira" para eles. Conceda essa permissão apenas se você confiar que a extensão ou o app Android protegerá a chave contra o acesso de invasores.</translation>
-<translation id="793134539373873765">Especifica se p2p deve ser usado para cargas de atualização do sistema operacional. Se for definido como verdadeiro, os dispositivos compartilharão e tentarão consumir as cargas de atualização na LAN, possivelmente reduzindo o uso de largura de banda de Internet e o congestionamento. Se a carga de atualização não estiver disponível na LAN, o dispositivo voltará a fazer download a partir de um servidor de atualização. Se for definido como falso ou não for configurado, o p2p não será usado.</translation>
 <translation id="7933141401888114454">Ativar a criação de usuários supervisionados</translation>
 <translation id="793473937901685727">Definir a disponibilidade do certificado para apps ARC</translation>
 <translation id="7937766917976512374">Permitir ou negar captura de vídeo</translation>
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb
index 20834ca..eeb6d201 100644
--- a/components/policy/resources/policy_templates_ru.xtb
+++ b/components/policy/resources/policy_templates_ru.xtb
@@ -347,7 +347,6 @@
 <translation id="1479427764273213107">Это правило задает список USB-устройств, которые можно использовать напрямую в веб-приложениях через chrome.usb API (в обход драйвера ядра). Каждая запись содержит пару идентификаторов (продавца и товара), которая позволяет точно определить устройство.
 
       Если это правило не настроено, список отсоединяемых USB-устройств будет пустым.</translation>
-<translation id="1479515813926202288">Отключить в Объективе поиск с помощью камеры для корпоративных пользователей</translation>
 <translation id="1481508277421549404">Если задано значение True, то расширения, установленные с помощью корпоративного правила, смогут использовать Enterprise Hardware Platform API.
 
       Если правило не настроено или указано значение False, расширения не смогут использовать этот API.
@@ -439,13 +438,6 @@
       Подробную информацию можно прочитать по ссылке https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Запретить использование режима консольного браузера</translation>
 <translation id="1588240398285670601">Настройки браузера</translation>
-<translation id="1593245608325508847">Если правило настроено, будет включена функция Chrome, ограничивающая вход в G Suite, и пользователи не смогут изменять эту настройку. Пользователи смогут получить доступ к приложениям Google только с помощью аккаунтов в определенных доменах (чтобы разрешить использование аккаунтов Gmail или Googlemail, добавьте consumer_accounts в список доменов). Если аккаунт не связан с доменом из списка разрешенных, эта настройка будет запрещать пользователю входить в аккаунт, а также добавлять дополнительный аккаунт на управляемом устройстве с обязательной аутентификацией Google.
-
-      Если правило не настроено, пользователь может получить доступ к G Suite с помощью любого аккаунта.
-
-      Пользователи не могут изменить или переопределить эту настройку.
-
-      Примечание. Это правило добавляет заголовок X-GoogApps-Allowed-Domains к запросам HTTP и HTTPS во всех доменах google.com. Подробную информацию можно найти здесь: https://support.google.com/a/answer/1668854.</translation>
 <translation id="1599424828227887013">Включить изоляцию для определенных сайтов на устройствах Android</translation>
 <translation id="159946228300522107">Если для правила задано значение True, Chrome будет всегда разворачивать первое окно при начальном запуске.
 
@@ -983,7 +975,6 @@
 <translation id="2303795211377219696">Включить автозаполнение данных кредитных карт</translation>
 <translation id="2307496301287881990">Сообщать статусы экрана и видеокарты</translation>
 <translation id="2309390639296060546">Настройка географического положения по умолчанию</translation>
-<translation id="2327252517317514801">Определение доменов с правом доступа к G Suite</translation>
 <translation id="2331354174913096226">Шаблон URI нужного преобразователя DNS поверх HTTPS. Чтобы указать несколько преобразователей DNS поверх HTTPS, разделите соответствующие шаблоны URI пробелами.
 
       Это правило должно быть настроено (его нельзя оставлять пустым), если для правила DnsOverHttpsMode задано значение <ph name="SECURE_DNS_MODE_SECURE" />.
@@ -2598,7 +2589,6 @@
 <translation id="4494132853995232608">Wilco DTC</translation>
 <translation id="449423975179525290">Настройте правила, связанные с <ph name="PLUGIN_VM_NAME" />.</translation>
 <translation id="449784980858429908">Автоматически разрешать сайтам подключение ко всем последовательным портам</translation>
-<translation id="4507775063441355559">Разрешить в сервисе "<ph name="GOOGLE_LENS_PRODUCT_NAME" />" поиск с помощью камеры</translation>
 <translation id="4510923771103268849">Разрешить пользователю получать root-доступ к контейнерам Crostini</translation>
 <translation id="4515404363392014383">Включить режим Безопасного просмотра для надежных источников.</translation>
 <translation id="4518251772179446575">Спрашивать, если сайт пытается отследить местоположение пользователя</translation>
@@ -3170,7 +3160,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> – будут использоваться поля <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> и <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />.
 
       Примечание. Подробную информацию можно найти здесь: https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett.</translation>
-<translation id="5264773067879932127">Если правило не настроено или задано значение Enabled, пользователи смогут выполнять поиск в сервисе "<ph name="GOOGLE_LENS_PRODUCT_NAME" />" с помощью камеры. Если указано значение False, кнопка сервиса "<ph name="GOOGLE_LENS_PRODUCT_NAME" />" не будет отображаться в окне, даже если в сервисе "<ph name="GOOGLE_LENS_PRODUCT_NAME" />" поддерживается поиск с помощью камеры.</translation>
 <translation id="5266173014392157048">Это правило больше не поддерживается. Используйте вместо него правило <ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />.
 
       Правило позволяет указать список серверов, которым <ph name="PRODUCT_NAME" /> может предоставлять учетные данные пользователей. Названия серверов нужно разделять запятыми. Допустимы подстановочные знаки (<ph name="WILDCARD_VALUE" />).
@@ -4762,7 +4751,6 @@
       В <ph name="MS_WIN_NAME" /> это правило можно настроить только на устройствах из домена <ph name="MS_AD_NAME" />, на которых установлена ОС Windows 10 Pro или которые зарегистрированы в программе "<ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />". В <ph name="MAC_OS_NAME" /> правило поддерживается только на устройствах, которые контролируются с помощью ПО для управления мобильными устройствами или добавлены в домен через MCX.</translation>
 <translation id="7258823566580374486">Блокирование хостов при удаленном доступе</translation>
 <translation id="7260204423892780600">Настройки управления Google Ассистентом</translation>
-<translation id="7260277299188117560">Включение автоматического обновления в одноранговых сетях p2p</translation>
 <translation id="7261252191178797385">Изображение для обоев устройства</translation>
 <translation id="7264704483008663819">Это правило не поддерживается в M68, используйте вместо него правило DeveloperToolsAvailability.
 
@@ -4794,7 +4782,6 @@
 
       Если правило не настроено, по умолчанию функция отключена для корпоративных аккаунтов и включена для остальных пользователей.</translation>
 <translation id="7295019613773647480">Включить контролируемые профили</translation>
-<translation id="7295038772938766029">Включить в Объективе поиск с помощью камеры для корпоративных пользователей</translation>
 <translation id="7302043767260300182">Задержка блокировки экрана при работе от сети</translation>
 <translation id="7303902834678570827">В управляемом гостевом сеансе пользователи не могут сохранять параметры экрана на уровне устройства</translation>
 <translation id="731208205557053914">Передача информации о VPD</translation>
@@ -5241,7 +5228,6 @@
 <translation id="7925224837072026018">Если правило включено, приложения для Android и расширения получают доступ к корпоративным ключам. Для использования в организации подходят только ключи, сгенерированные в управляемом аккаунте с помощью chrome.enterprise.platformKeys API. Пользователи не могут предоставлять или запрещать приложениям для Android и расширениям доступ к таким ключам.
 
       По умолчанию у приложений для Android и расширений нет доступа к корпоративным ключам. Это эквивалентно указанию значения False в параметре allowCorporateKeyUsage для этого приложения или расширения. Приложение Android или расширение может использовать корпоративные ключи для подписи произвольных данных только в том случае, если для него в параметре allowCorporateKeyUsage указано значение True. Предоставляйте это разрешение только расширениям и приложениям Android, в которых ключи защищены от действий злоумышленников.</translation>
-<translation id="793134539373873765">Определяет, будет ли использоваться одноранговая сеть p2p при обновлении операционной системы. Если задано значение "True", обмен данными между устройствами и обновление будут выполняться в сети LAN, что позволит сократить пропускную способность и перегрузку интернет-канала. Если в сети LAN обновление не поддерживается, устройство будет скачивать его со специального сервера. Если задано значение "False" или значение не задано, одноранговая сеть не будет использоваться.</translation>
 <translation id="7933141401888114454">Включает поддержку контролируемых профилей</translation>
 <translation id="793473937901685727">Настроить доступ к сертификатам для приложений ARC</translation>
 <translation id="7937766917976512374">Включение или отключение функции захвата видео</translation>
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb
index d3c955c..14b956b0 100644
--- a/components/policy/resources/policy_templates_th.xtb
+++ b/components/policy/resources/policy_templates_th.xtb
@@ -350,7 +350,6 @@
 <translation id="1479427764273213107">การตั้งค่านโยบายนี้จะกำหนดรายการอุปกรณ์ USB ที่ผู้ใช้จะปลดออกจากไดรเวอร์ Kernel เพื่อใช้งานผ่าน chrome.usb API ในเว็บแอปโดยตรงได้ รายการต่างๆ เป็นการจับคู่ระหว่างตัวระบุผู้ให้บริการ USB และตัวระบุผลิตภัณฑ์เพื่อที่จะระบุฮาร์ดแวร์ที่เจาะจง
 
       หากไม่ได้ตั้งค่านโยบาย รายการอุปกรณ์ USB ที่ปลดออกได้จะว่างเปล่า</translation>
-<translation id="1479515813926202288">ปิดใช้การค้นหาที่ได้รับความช่วยเหลือจากกล้อง Lens สำหรับผู้ใช้ระดับองค์กร</translation>
 <translation id="1481508277421549404">การตั้งค่านโยบายเป็น "จริง" จะให้ส่วนขยายที่ติดตั้งโดยนโยบายระดับองค์กรใช้ Enterprise Hardware Platform API ได้
 
       การตั้งค่านโยบายเป็น "เท็จ" หรือไม่ได้ตั้งค่าจะป้องกันไม่ให้ส่วนขยายใช้ API นี้
@@ -442,13 +441,6 @@
       โปรดดู https://www.chromestatus.com/feature/4664843055398912</translation>
 <translation id="1587585749332985896">ไม่อนุญาตให้ใช้โหมดไม่มีส่วนหัว</translation>
 <translation id="1588240398285670601">การตั้งค่าเบราว์เซอร์</translation>
-<translation id="1593245608325508847">การตั้งค่านโยบายจะเปิดฟีเจอร์การลงชื่อเข้าใช้แบบจำกัดของ Chrome ใน G Suite และป้องกันไม่ให้ผู้ใช้เปลี่ยนการตั้งค่านี้ ผู้ใช้จะเข้าถึงเครื่องมือของ Google ได้โดยใช้บัญชีจากโดเมนที่ระบุเท่านั้น (หากต้องการอนุญาตบัญชี gmail หรือ googlemail ให้เพิ่ม consumer_accounts ลงในรายการโดเมน) การตั้งค่านี้จะป้องกันไม่ให้ผู้ใช้ลงชื่อเข้าใช้และเพิ่มบัญชีรองในอุปกรณ์ที่จัดการซึ่งต้องมีการตรวจสอบสิทธิ์จาก Google หากบัญชีดังกล่าวไม่ได้อยู่ในโดเมนที่อนุญาตอย่างชัดแจ้ง
-
-      การปล่อยให้การตั้งค่านี้ว่างหรือไม่ได้ตั้งค่าหมายความว่าผู้ใช้จะเข้าถึง G Suite ด้วยบัญชีใดก็ได้
-
-      ผู้ใช้จะเปลี่ยนหรือลบล้างการตั้งค่านี้ไม่ได้
-
-      หมายเหตุ: นโยบายนี้ส่งผลให้ต้องเติมส่วนหัว X-GoogApps-Allowed-Domains ในคำขอ HTTP และ HTTPS ทั้งหมดที่ส่งไปยังโดเมน google.com ทั้งหมดตามที่อธิบายไว้ใน https://support.google.com/a/answer/1668854</translation>
 <translation id="1599424828227887013">เปิดใช้การแยกเว็บไซต์สำหรับต้นทางที่เจาะจงในอุปกรณ์ Android</translation>
 <translation id="159946228300522107">การตั้งค่านโยบายเป็น "จริง" หมายความว่า Chrome จะขยายหน้าต่างแรกที่แสดงเมื่อเรียกใช้ครั้งแรก
 
@@ -981,7 +973,6 @@
 <translation id="2303795211377219696">เปิดใช้ "ป้อนข้อความอัตโนมัติ" สำหรับบัตรเครดิต</translation>
 <translation id="2307496301287881990">รายงานสถานะการแสดงผลและกราฟิก</translation>
 <translation id="2309390639296060546">การตั้งค่าตำแหน่งทางภูมิศาสตร์เริ่มต้น</translation>
-<translation id="2327252517317514801">กำหนดโดเมนที่อนุญาตให้เข้าถึง G Suite</translation>
 <translation id="2331354174913096226">เทมเพลต URI ของรีโซลเวอร์ DNS-over-HTTPS ที่ต้องการ วิธีระบุรีโซลเวอร์ DNS-over-HTTPS หลายรายการคือเว้นวรรคระหว่างเทมเพลต URI ที่เกี่ยวข้อง
 
       หากตั้งค่า DnsOverHttpsMode เป็น <ph name="SECURE_DNS_MODE_SECURE" /> ก็ต้องตั้งค่านโยบายนี้และนโยบายต้องไม่ว่างเปล่า
@@ -2584,7 +2575,6 @@
 <translation id="4494132853995232608">Wilco DTC</translation>
 <translation id="449423975179525290">กำหนดค่านโยบายที่เกี่ยวข้องกับ <ph name="PLUGIN_VM_NAME" /></translation>
 <translation id="449784980858429908">ให้สิทธิ์เว็บไซต์โดยอัตโนมัติในการเชื่อมต่อกับพอร์ตอนุกรมทุกพอร์ต</translation>
-<translation id="4507775063441355559">อนุญาตการค้นหาที่ได้รับความช่วยเหลือจากกล้อง <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="4510923771103268849">ผู้ใช้มีสิทธิ์เข้าถึงรากของคอนเทนเนอร์ Crostini ได้</translation>
 <translation id="4515404363392014383">เปิดใช้ Safe Browsing สำหรับแหล่งที่มาที่เชื่อถือได้</translation>
 <translation id="4518251772179446575">ถามเมื่อไซต์ต้องการติดตามตำแหน่งทางกายภาพของผู้ใช้</translation>
@@ -3158,7 +3148,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> ระบบจะใช้ช่อง <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> และ <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />
 
       หมายเหตุ: ดูตัวอย่างโดยละเอียดเพิ่มเติมได้ที่ The Chromium Projects ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett )</translation>
-<translation id="5264773067879932127">การไม่ตั้งค่านโยบายหรือตั้งค่าเป็น "เปิดใช้" จะอนุญาตให้ผู้ใช้ค้นหาด้วยกล้องของตนโดยใช้ <ph name="GOOGLE_LENS_PRODUCT_NAME" /> ได้ หากตั้งค่านโยบายเป็น "เท็จ" ผู้ใช้จะไม่เห็นปุ่ม <ph name="GOOGLE_LENS_PRODUCT_NAME" /> ในช่องค้นหาเมื่อระบบรองรับการค้นหาที่ได้รับความช่วยเหลือจากกล้อง <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="5266173014392157048">นโยบายนี้เลิกใช้งานไปแล้ว โปรดใช้นโยบาย "<ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />" แทน
 
       การตั้งค่านโยบายจะกำหนดเซิร์ฟเวอร์ที่ <ph name="PRODUCT_NAME" /> อาจมอบสิทธิ์ให้ คั่นชื่อเซิร์ฟเวอร์หลายรายการด้วยเครื่องหมายจุลภาค ใช้ไวลด์การ์ด (<ph name="WILDCARD_VALUE" />) ได้
@@ -4724,7 +4713,6 @@
       ใน <ph name="MS_WIN_NAME" /> ฟังก์ชันการทำงานนี้ใช้ได้เฉพาะในอินสแตนซ์ที่เข้าร่วมโดเมน <ph name="MS_AD_NAME" />, ทำงานใน Windows 10 Pro หรือลงทะเบียนใน<ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> ใน <ph name="MAC_OS_NAME" /> ฟังก์ชันการทำงานนี้ใช้ได้เฉพาะในอินสแตนซ์ที่จัดการผ่าน MDM หรือเข้าร่วมโดเมนผ่าน MCX</translation>
 <translation id="7258823566580374486">เปิดใช้งานการปิดม่านโฮสต์การเข้าถึงระยะไกล</translation>
 <translation id="7260204423892780600">ควบคุมการตั้งค่าสำหรับ Google Assistant</translation>
-<translation id="7260277299188117560">เปิดใช้การอัปเดต p2p อัตโนมัติแล้ว</translation>
 <translation id="7261252191178797385">รูปภาพวอลเปเปอร์ของอุปกรณ์</translation>
 <translation id="7264704483008663819">นโยบายนี้เลิกใช้งานแล้วใน M68 โปรดใช้ DeveloperToolsAvailability แทน
 
@@ -4756,7 +4744,6 @@
 
       หากไม่ได้ตั้งค่านโยบายนี้ ระบบจะไม่อนุญาตให้ใช้ค่าเริ่มต้นกับผู้ใช้ที่มีการจัดการโดยองค์กรแต่อนุญาตให้ใช้กับผู้ใช้ที่ไม่มีการจัดการ</translation>
 <translation id="7295019613773647480">เปิดใช้งานผู้ใช้ภายใต้การควบคุมดูแล</translation>
-<translation id="7295038772938766029">เปิดใช้การค้นหาที่ได้รับความช่วยเหลือจากกล้อง Lens สำหรับผู้ใช้ระดับองค์กร</translation>
 <translation id="7302043767260300182">ระยะหน่วงเวลาการล็อกหน้าจอเมื่อทำงานโดยใช้ไฟ AC</translation>
 <translation id="7303902834678570827">ผู้ใช้เซสชันผู้เยี่ยมชมที่มีการจัดการจะจัดเก็บการตั้งค่าการแสดงผลแบบทั่วทั้งอุปกรณ์ไม่ได้</translation>
 <translation id="731208205557053914">รายงานข้อมูล VPD</translation>
@@ -5204,7 +5191,6 @@
 <translation id="7925224837072026018">การตั้งค่านโยบายจะให้สิทธิ์เข้าถึงคีย์ขององค์กรแก่ส่วนขยายหรือแอปพลิเคชัน Android คีย์มีไว้สำหรับการใช้งานขององค์กรเฉพาะในกรณีที่สร้างขึ้นโดยใช้ chrome.enterprise.platformKeys API ในบัญชีที่มีการจัดการ ผู้ใช้จะให้สิทธิ์เข้าถึงคีย์ขององค์กรแก่ส่วนขยายหรือแอปพลิเคชัน Android หรือถอนสิทธิ์เข้าถึงคีย์ขององค์กรจากส่วนขยายหรือแอปพลิเคชัน Android ไม่ได้
 
       โดยค่าเริ่มต้น ส่วนขยายหรือแอปพลิเคชัน Android จะใช้คีย์ที่กำหนดไว้สำหรับการใช้งานขององค์กรไม่ได้ ซึ่งเทียบเท่ากับการตั้งค่า allowCorporateKeyUsage เป็น "เท็จ" สำหรับส่วนขยายหรือแอปพลิเคชัน Android นั้น ส่วนขยายหรือแอปพลิเคชัน Android จะใช้คีย์ของแพลตฟอร์มที่มีการทำเครื่องหมายไว้สำหรับการใช้งานขององค์กรเพื่อลงนามข้อมูลที่กำหนดเองได้เฉพาะในกรณีที่มีการตั้งค่า allowCorporateKeyUsage เป็น "จริง" สำหรับส่วนขยายหรือแอปพลิเคชัน Android ดังกล่าว ควรมอบสิทธิ์นี้ต่อเมื่อมั่นใจว่าส่วนขยายหรือแอปพลิเคชัน Android มีการป้องกันการเข้าถึงคีย์จากผู้โจมตีเท่านั้น</translation>
-<translation id="793134539373873765">ระบุว่าจะใช้ p2p สำหรับส่วนข้อมูลการอัปเดต OS ไหม หากตั้งค่าเป็น "จริง" อุปกรณ์จะแชร์และพยายามรับส่วนข้อมูลการอัปเดตบน LAN ซึ่งอาจลดแบนด์วิดท์และความคับคั่งในอินเทอร์เน็ต หากส่วนข้อมูลการอัปเดตไม่พร้อมใช้งานบน LAN อุปกรณ์จะกลับไปใช้การดาวน์โหลดจากเซิร์ฟเวอร์การอัปเดต หากตั้งค่าเป็น "เท็จ" หรือไม่กำหนดค่า p2p จะไม่ถูกใช้งาน</translation>
 <translation id="7933141401888114454">เปิดใช้งานการสร้างผู้ใช้ภายใต้การควบคุมดูแล</translation>
 <translation id="793473937901685727">ตั้งค่าความพร้อมใช้งานของใบรับรองสำหรับแอป ARC</translation>
 <translation id="7937766917976512374">อนุญาตหรือปฏิเสธการจับวิดีโอ</translation>
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb
index 9d7abaa..df6e503 100644
--- a/components/policy/resources/policy_templates_tr.xtb
+++ b/components/policy/resources/policy_templates_tr.xtb
@@ -349,7 +349,6 @@
 <translation id="1479427764273213107">Politikayı ayarlamak, kullanıcıların chrome.usb API'sı aracılığıyla doğrudan bir web uygulaması içinde kullanmak için çekirdek sürücüsünden çıkarabildikleri USB cihazlarının listesini tanımlar. Girişler, belirli bir donanımı tanımlamak için kullanılan USB Tedarikçi Tanımlayıcısı ve Ürün Tanımlayıcısı çiftlerinden oluşmaktadır.
 
       Ayarlanmazsa çıkarılabilir USB cihazları listesi boştur.</translation>
-<translation id="1479515813926202288">Kurumsal kullanıcılar için Lens kamera destekli aramayı devre dışı bırak</translation>
 <translation id="1481508277421549404">Politika True (Doğru) değerine ayarlandığında kurumsal politika tarafından yüklenen uzantıların Kurumsal Donanım Platformu API'sini kullanmasına izin verilir.
 
       Politika False (Yanlış) değerine ayarlandığında veya ayarlanmadan bırakıldığında uzantıların bu API'yı kullanmasına izin verilmez.
@@ -441,13 +440,6 @@
       https://www.chromestatus.com/feature/4664843055398912 adresine bakın.</translation>
 <translation id="1587585749332985896">Gözetimsiz Mod'un kullanımına izin verme</translation>
 <translation id="1588240398285670601">Tarayıcı Ayarları</translation>
-<translation id="1593245608325508847">Politika ayarlanırsa G Suite'te Chrome'un kısıtlı oturum açma özelliği etkinleştirilir ve kullanıcılar bu ayarı değiştiremezler. Kullanıcılar sadece belirtilen alan adlarındaki hesapları kullanarak Google araçlarına erişebilirler (gmail veya googlemail hesaplarına izin vermek için alan adı listesine consumer_accounts öğesini ekleyin). Bu ayar, kullanıcıların Google kimlik doğrulaması gerektiren yönetilen bir cihazda oturum açmalarını ve açıkça izin verilen alan adlarından birine ait olmadığı sürece İkincil Hesap eklemelerini engeller.
-
-      Bu ayar boş veya ayarlanmadan bırakılırsa kullanıcılar herhangi bir hesapla G Suite'e erişebilirler.
-
-      Kullanıcılar bu ayarı değiştiremez veya geçersiz kılamazlar.
-
-      Not: Bu politika, https://support.google.com/a/answer/1668854 sayfasında açıklandığı gibi, tüm google.com alan adlarına gönderilen tüm HTTP ve HTTPS isteklerine X-GoogApps-Allowed-Domains başlığının eklenmesine neden olur.</translation>
 <translation id="1599424828227887013">Android cihazlarda Site İzolasyonu'nu belirtilen kaynaklar için etkinleştirme</translation>
 <translation id="159946228300522107">Politikayı True (Doğru) değerine ayarlamak, Chrome'un ilk çalıştırmada birinci pencereyi büyüteceği anlamına gelir.
 
@@ -985,7 +977,6 @@
 <translation id="2303795211377219696">Kredi kartları için Otomatik Doldurma özelliğini etkinleştirme</translation>
 <translation id="2307496301287881990">Ekran ve grafik durumlarını raporla</translation>
 <translation id="2309390639296060546">Varsayılan coğrafi konum ayarı</translation>
-<translation id="2327252517317514801">G Suite'e erişmesine izin verilen alan adlarını tanımla</translation>
 <translation id="2331354174913096226">İstenen DNS-over-HTTPS çözümleyicisinin URI şablonu. Birden fazla DNS-over-HTTPS çözümleyicisi belirlemek için karşılık gelen URI şablonlarını boşlukla ayırın.
 
       DnsOverHttpsMode <ph name="SECURE_DNS_MODE_SECURE" /> olarak ayarlanırsa bu politika ayarlanmalı, boş bırakılmamalıdır.
@@ -2603,7 +2594,6 @@
 <translation id="4494132853995232608">Wilco DTC</translation>
 <translation id="449423975179525290"><ph name="PLUGIN_VM_NAME" /> ile ilgili politikaları yapılandırır.</translation>
 <translation id="449784980858429908">Sitelere, tüm seri bağlantı noktalarına bağlanmak için otomatik olarak izin ver.</translation>
-<translation id="4507775063441355559"><ph name="GOOGLE_LENS_PRODUCT_NAME" /> Kamera Destekli Aramaya izin ver</translation>
 <translation id="4510923771103268849">Kullanıcının, Crostini kapsayıcılarına root erişimi olmasına izin verilir</translation>
 <translation id="4515404363392014383">Güvenilen kaynaklar için Güvenli Tarama'yı etkinleştir</translation>
 <translation id="4518251772179446575">Bir site, kullanıcının fiziksel konumunu izlemek istediğinde sor</translation>
@@ -3178,7 +3168,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />, <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> ve <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> alanları kullanılır.
 
       Not: Daha ayrıntılı örnekler için Chromium Projeleri'ni ziyaret edin (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation>
-<translation id="5264773067879932127">Politika ayarlanmadan bırakılır veya Etkin değerine ayarlanırsa kullanıcıların <ph name="GOOGLE_LENS_PRODUCT_NAME" /> kullanarak kameralarıyla arama yapmasına izin verilir. Politika, Dever Dışı değerine ayarlanırsa <ph name="GOOGLE_LENS_PRODUCT_NAME" /> Kamera Destekli Arama desteklense de kullanıcıya arama kutusunda <ph name="GOOGLE_LENS_PRODUCT_NAME" /> düğmesi gösterilmez.</translation>
 <translation id="5266173014392157048">Bu politika kullanımdan kaldırıldı. Bunun yerine lütfen "<ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />" politikasını kullanın.
 
       Politikayı ayarlamak <ph name="PRODUCT_NAME" /> ürününün yetki verebileceği sunucular atar. Birden fazla sunucu adını virgülle ayırın. Joker karakterlere (<ph name="WILDCARD_VALUE" />) izin verilir.
@@ -4746,7 +4735,6 @@
       <ph name="MS_WIN_NAME" /> işletim sisteminde bu işlev, yalnızca Windows 10 Pro üzerinde çalışan bir <ph name="MS_AD_NAME" /> alan adına katılmış veya <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> öğesine kaydolmuş örneklerde kullanılabilir. <ph name="MAC_OS_NAME" /> işletim sisteminde bu işlev yalnızca MDM ile çalışan veya MCX aracılığıyla bir alan adına katılmış örneklerde kullanılabilir.</translation>
 <translation id="7258823566580374486">Uzaktan erişen ana makinelerin perdelenmesini etkinleştirme</translation>
 <translation id="7260204423892780600">Google Asistan'la ilgili ayarları kontrol eder.</translation>
-<translation id="7260277299188117560">p2p otomatik güncellemesi etkin</translation>
 <translation id="7261252191178797385">Cihaz duvar kağıdı resmi</translation>
 <translation id="7264704483008663819">Bu politika M68 sürümünde kullanımdan kaldırılmıştır; lütfen bunun yerine DeveloperToolsAvailability politikasını kullanın.
 
@@ -4778,7 +4766,6 @@
 
       Bu politika ayarlanmadan bırakılırsa, varsayılan olarak kuruluş tarafından yönetilen kullanıcılara izin verilmezken, yönetilmeyen kullanıcılara izin verilir.</translation>
 <translation id="7295019613773647480">Denetlenen kullanıcıları etkinleştir</translation>
-<translation id="7295038772938766029">Kurumsal kullanıcılar için Lens kamera destekli aramayı etkinleştir</translation>
 <translation id="7302043767260300182">AC güçle çalışırken ekran kilidi gecikmesi</translation>
 <translation id="7303902834678570827">Yönetilen Misafir Oturumu kullanıcıları, cihaz genelindeki görüntü ayarlarını saklayamazlar.</translation>
 <translation id="731208205557053914">VPD bilgilerini raporla</translation>
@@ -5228,7 +5215,6 @@
 <translation id="7925224837072026018">Bu politika ayarlanırsa uzantıların veya Android uygulamalarının şirket anahtarlarına erişmesine izin verilir. Anahtarlar ancak yönetilen bir hesapta chrome.enterprise.platformKeys API kullanılarak oluşturulmuşsa şirket kullanımı için atanır. Kullanıcılar, uzantıların ya da Android uygulamalarının şirket anahtarlarına erişimine izin veremez veya şirket anahtarlarına erişim izinlerini kaldıramaz.
 
       Varsayılan olarak bir uzantı ya da Android uygulaması, şirket kullanımı için atanmış bir anahtarı kullanamaz. Bu, söz konusu uzantı ya da Android uygulaması için allowCorporateKeyUsage politikasını Yanlış değerine ayarlamayla eş değerdir. Yalnızca, bir uzantı ya da Android uygulaması için allowCorporateKeyUsage politikası Doğru değerine ayarlandığında, söz konusu uzantı ya da Android uygulaması rastgele verileri imzalamak amacıyla, şirket kullanımı için işaretlenen platform anahtarlarını kullanabilir. Saldırganlara karşı anahtar erişimi güvenliği sağlamak için bu izin yalnızca uzantıya ya da Android uygulamasına güveniliyorsa verilmelidir.</translation>
-<translation id="793134539373873765">OS güncelleme yükleri için p2p'nin kullanılıp kullanılmayacağını belirtir. Doğru seçeneğine ayarlanırsa, cihazlar LAN üzerindeki yükleri paylaşır ve kullanmaya çalışır, bu da İnternet bant genişliği kullanımını ve tıkanıklığını potansiyel olarak azaltır. Güncelleme yükü LAN'da kullanılamıyorsa, cihaz bir güncelleme sunucusundan indirme işlemine geçer. Yanlış seçeneğine ayarlanırsa veya yapılandırılmazsa p2p kullanılmaz.</translation>
 <translation id="7933141401888114454">Denetlenen kullanıcılar oluşturmayı etkinleştir</translation>
 <translation id="793473937901685727">ARC uygulamaları için sertifika kullanılabilirliğini ayarla</translation>
 <translation id="7937766917976512374">Video yakalamaya izin verme veya reddetme</translation>
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb
index 51c6e4e..b084640b 100644
--- a/components/policy/resources/policy_templates_uk.xtb
+++ b/components/policy/resources/policy_templates_uk.xtb
@@ -349,7 +349,6 @@
 <translation id="1479427764273213107">Налаштування цього пристрою визначають список пристроїв USB, які користувачі можуть від'єднувати від драйвера ядра, щоб використовувати через chrome.usb API просто у веб-додатку. Записи є парами ідентифікатора постачальника USB й ідентифікатора продукту для визначення апаратного забезпечення.
 
       Якщо це правило не налаштовано, список пристроїв USB, які можна від'єднувати, буде порожнім.</translation>
-<translation id="1479515813926202288">Вимкнути пошук за допомогою камери в додатку Об’єктив для корпоративних користувачів</translation>
 <translation id="1481508277421549404">Якщо для цього правила вибрано значення True, розширення, установлені згідно з корпоративним правилом, зможуть використовувати Enterprise Hardware Platform API.
 
       Якщо для цього правила вибрано значення False або його не налаштовано, розширення не зможуть використовувати API.
@@ -441,13 +440,6 @@
       Докладніше на сторінці https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Заборонити використовувати режим headless</translation>
 <translation id="1588240398285670601">Налаштування веб-переглядача</translation>
-<translation id="1593245608325508847">Якщо це правило налаштовано, в Chrome вмикається функція обмеженого входу в G Suite. Користувачі не можуть змінити цей параметр. Вони отримують доступ до інструментів Google лише з облікових записів вказаних доменів (для облікових записів gmail чи googlemail потрібно додати значення consumer_accounts у список доменів). Це налаштування забороняє користувачам входити в додатковий обліковий запис і зберігати його на керованому пристрої, де потрібна автентифікація Google, якщо цього облікового запису немає в списку дозволених доменів.
-
-      Якщо цей параметр не налаштовано, користувачі матимуть доступ до G Suite із будь-якого облікового запису.
-
-      Користувачі не можуть змінити або замінити його.
-
-      Примітка: якщо це правило застосовується, до всіх запитів HTTP та HTTPS, що надсилаються в домени google.com, додається заголовок X-GoogApps-Allowed-Domains, як описано на сторінці https://support.google.com/a/answer/1668854.</translation>
 <translation id="1599424828227887013">Увімкнути Ізоляцію сайтів для вказаних джерел на пристроях Android</translation>
 <translation id="159946228300522107">Якщо для цього правила вибрано значення True, Chrome розгортає перше вікно, яке відкривається під час першого запуску.
 
@@ -995,7 +987,6 @@
 <translation id="2303795211377219696">Вмикає функцію автозаповнення для кредитних карток</translation>
 <translation id="2307496301287881990">Повідомляти про статуси дисплея й графічного процесора</translation>
 <translation id="2309390639296060546">Налаштування географічного місцезнаходження за умовчанням</translation>
-<translation id="2327252517317514801">Визначати домени з доступом до G Suite</translation>
 <translation id="2331354174913096226">Шаблон URI бажаного резолвера DNS-over-HTTPS. Щоб указати кілька резолверів DNS-over-HTTPS, розділіть відповідні шаблони URI пробілами.
 
       Якщо для параметра DnsOverHttpsMode вибрано значення <ph name="SECURE_DNS_MODE_SECURE" />, це правило потрібно налаштувати (воно не може бути порожнім).
@@ -2624,7 +2615,6 @@
 <translation id="4494132853995232608">Wilco DTC</translation>
 <translation id="449423975179525290">Налаштовує правила, пов’язані з <ph name="PLUGIN_VM_NAME" />.</translation>
 <translation id="449784980858429908">Автоматично дозволяти сайтам підключатися до всіх послідовних портів</translation>
-<translation id="4507775063441355559">Дозволити пошук за допомогою камери в додатку <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="4510923771103268849">Користувач може отримувати доступ до контейнерів Crostini на кореневому рівні</translation>
 <translation id="4515404363392014383">Увімкнути безпечний перегляд для надійних джерел</translation>
 <translation id="4518251772179446575">Запитувати щоразу, коли сайт хоче відстежувати фізичне місцезнаходження користувача</translation>
@@ -3203,7 +3193,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />, використовуватимуться поля <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> і <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />.
 
       Примітка: щоб переглянути детальніші приклади, відвідайте веб-сайт проектів Chromium (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation>
-<translation id="5264773067879932127">Якщо не налаштувати це правило або вибрати для нього значення Enabled, користувачі зможуть здійснювати пошук за допомогою своїх камер у додатку <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Якщо для цього правила вибрати значення False, користувачі не бачитимуть кнопку <ph name="GOOGLE_LENS_PRODUCT_NAME" /> у полі пошуку, навіть якщо пошук за допомогою камери в додатку <ph name="GOOGLE_LENS_PRODUCT_NAME" /> підтримується.</translation>
 <translation id="5266173014392157048">Це правило більше не підтримується. Натомість використовуйте <ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />.
 
       За допомогою цього правила призначаються сервери, яким <ph name="PRODUCT_NAME" /> може передавати облікові дані. Назви серверів потрібно розділяти комами. Дозволяються символи підстановки (<ph name="WILDCARD_VALUE" />).
@@ -4801,7 +4790,6 @@
       У <ph name="MS_WIN_NAME" /> ця функція доступна лише для машин із Windows 10 Pro, зареєстрованих у домені <ph name="MS_AD_NAME" /> чи сервісі <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. У <ph name="MAC_OS_NAME" /> ця функція доступна лише для машин, які контролюються через Керування мобільними пристроями або зареєстровані в домені через MCX.</translation>
 <translation id="7258823566580374486">Увімкнути закривання хостів віддаленого доступу</translation>
 <translation id="7260204423892780600">Керує налаштуваннями для Google Асистента.</translation>
-<translation id="7260277299188117560">Автоматичне оновлення за допомогою p2p увімкнено</translation>
 <translation id="7261252191178797385">Фоновий малюнок пристрою</translation>
 <translation id="7264704483008663819">Це правило більше не підтримується у версії M68. Натомість використовуйте правило DeveloperToolsAvailability.
 
@@ -4833,7 +4821,6 @@
 
       Якщо це правило не налаштовано, за умовчанням дозвіл мають лише користувачі, якими не керує адміністратор.</translation>
 <translation id="7295019613773647480">Увімкнути контрольованих користувачів</translation>
-<translation id="7295038772938766029">Увімкнути пошук за допомогою камери в додатку Об’єктив для корпоративних користувачів</translation>
 <translation id="7302043767260300182">Затримка блокування екрана, коли використовується живлення від мережі</translation>
 <translation id="7303902834678570827">Користувачі керованого сеансу в режимі "Гість" не можуть зберігати налаштування екрана на рівні пристрою</translation>
 <translation id="731208205557053914">Повідомляти дані VPD</translation>
@@ -5281,7 +5268,6 @@
 <translation id="7925224837072026018">Якщо налаштувати це правило, розширення та додатки Android матимуть доступ до корпоративних ключів. Ключі призначаються для корпоративного використання, лише якщо їх згенеровано за допомогою chrome.enterprise.platformKeys API у керованому обліковому записі. Користувачі не можуть надавати чи блокувати розширенням або додаткам Android доступ до цих ключів.
 
       За умовчанням розширення або додатки Android не можуть використовувати корпоративний ключ (щоб заборонити це певному додатку чи розширенню, визначте його в цьому правилі та задайте значення false для параметра allowCorporateKeyUsage). Розширення або додаток Android може підписувати довільні дані будь-яким корпоративним ключем платформи, лише якщо задати для нього параметр allowCorporateKeyUsage зі значенням true. Цей дозвіл потрібно надавати, лише якщо розширення або додаток Android гарантує захист ключа від зловмисників.</translation>
-<translation id="793134539373873765">Указує, чи має використовуватися p2p (однорангове з’єднання) для даних оновлення ОС. Якщо для цього правила встановлено значення "true", пристрої обмінюватимуться даними й намагатимуться використовувати дані оновлення в LAN, що потенційно може знижувати використання пропускної спроможності й перевантаження каналів інтернет-зв’язку. Якщо дані оновлення не доступні через LAN, пристрій завантажуватиме їх із сервера оновлення. Якщо для цього правила встановлено значення "false" або його не налаштовано, p2p не використовуватиметься.</translation>
 <translation id="7933141401888114454">Вмикає створення контрольованих користувачів</translation>
 <translation id="793473937901685727">Налаштування доступності сертифікатів для додатків ARC</translation>
 <translation id="7937766917976512374">Дозволити чи заборонити запис відео</translation>
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb
index c2b12be..95fdcc0 100644
--- a/components/policy/resources/policy_templates_vi.xtb
+++ b/components/policy/resources/policy_templates_vi.xtb
@@ -350,7 +350,6 @@
 <translation id="1479427764273213107">Nếu đặt chính sách này, bạn có thể xác định danh sách các thiết bị USB mà người dùng có thể tách khỏi trình điều khiển nhân hệ điều hành để sử dụng thông qua API chrome.usb ngay trong ứng dụng web. Các mục trong danh sách là những cặp Mã nhận dạng nhà cung cấp và Mã nhận dạng sản phẩm USB để xác định một phần cứng cụ thể.
 
       Nếu bạn không đặt chính sách này, thì danh sách các thiết bị USB có thể tách sẽ trống.</translation>
-<translation id="1479515813926202288">Tắt tính năng tìm kiếm bằng máy ảnh thông qua Ống kính đối với người dùng doanh nghiệp</translation>
 <translation id="1481508277421549404">Khi bạn đặt chính sách này thành True, các tiện ích cài đặt theo chính sách doanh nghiệp sẽ được phép dùng API Enterprise Hardware Platform.
 
       Việc đặt chính sách này thành False hoặc không đặt chính sách này sẽ ngăn các tiện ích dùng API này.
@@ -442,13 +441,6 @@
       Vui lòng xem tại https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Không cho phép sử dụng Chế độ không có giao diện người dùng</translation>
 <translation id="1588240398285670601">Cài đặt của trình duyệt</translation>
-<translation id="1593245608325508847">Khi bạn đặt chính sách này, tính năng đăng nhập có giới hạn của Chrome sẽ được bật trong G Suite và người dùng sẽ không thể thay đổi tùy chọn cài đặt này. Người dùng chỉ có thể truy cập vào các công cụ của Google bằng tài khoản thuộc miền được chỉ định (để cho phép tài khoản gmail hoặc googlemail, hãy thêm consumer_accounts vào danh sách miền). Tùy chọn cài đặt này ngăn người dùng đăng nhập và thêm Tài khoản phụ trên một thiết bị được quản lý có yêu cầu quy trình xác thực của Google, nếu tài khoản đó không thuộc một trong những miền được cho phép rõ ràng.
-
-      Nếu bạn để trống hoặc không đặt tùy chọn cài đặt này, người dùng có thể truy cập vào G Suite bằng bất kỳ tài khoản nào.
-
-      Người dùng không thể thay đổi hay ghi đè tùy chọn cài đặt này.
-
-      Lưu ý: Với chính sách này, tiêu đề X-GoogApps-Allowed-Domains sẽ được thêm vào mọi yêu cầu HTTP và HTTPS gửi đến tất cả miền google.com, như mô tả trong https://support.google.com/a/answer/1668854.</translation>
 <translation id="1599424828227887013">Bật tính năng Cách ly trang web cho nguồn gốc đã chỉ định trên thiết bị Android</translation>
 <translation id="159946228300522107">Nếu bạn đặt chính sách này thành True, thì Chrome sẽ phóng to cửa sổ đầu tiên trong lần chạy đầu.
 
@@ -996,7 +988,6 @@
 <translation id="2303795211377219696">Bật tính năng Tự động điền cho thẻ tín dụng</translation>
 <translation id="2307496301287881990">Báo cáo trạng thái đồ họa và hiển thị</translation>
 <translation id="2309390639296060546">Cài đặt vị trí địa lý mặc định</translation>
-<translation id="2327252517317514801">Xác định miền được phép truy cập vào G Suite</translation>
 <translation id="2331354174913096226">Mẫu URI của trình phân giải DNS qua HTTPS mà bạn muốn. Để chỉ định nhiều trình phân giải DNS qua HTTPS, hãy phân tách các mẫu URI tương ứng bằng dấu cách.
 
       Nếu đặt DnsOverHttpsMode thành <ph name="SECURE_DNS_MODE_SECURE" />, thì bạn phải đặt chính sách này và không được để trống.
@@ -2625,7 +2616,6 @@
 <translation id="4494132853995232608">Wilco DTC</translation>
 <translation id="449423975179525290">Định cấu hình chính sách liên quan đến <ph name="PLUGIN_VM_NAME" />.</translation>
 <translation id="449784980858429908">Tự động cấp quyền cho các trang web để kết nối tất cả các cổng nối tiếp.</translation>
-<translation id="4507775063441355559">Cho phép tính năng Tìm kiếm bằng máy ảnh thông qua <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="4510923771103268849">Người dùng được phép truy cập gốc vào vùng chứa Crostini</translation>
 <translation id="4515404363392014383">Bật tính năng Duyệt web an toàn cho các nguồn đáng tin cậy</translation>
 <translation id="4518251772179446575">Hỏi bất cứ khi nào trang web muốn theo dõi vị trí thực của người dùng.</translation>
@@ -3206,7 +3196,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />, các trường <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> và <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> sẽ được dùng.
 
       Lưu ý: Để xem thêm ví dụ cụ thể, hãy truy cập vào trang The Chromium Projects (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation>
-<translation id="5264773067879932127">Nếu bạn không đặt hoặc đặt chính sách này thành Bật, thì người dùng sẽ được phép tìm kiếm bằng máy ảnh thông qua <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Nếu bạn đặt chính sách này thành Tắt, người dùng sẽ không thấy nút <ph name="GOOGLE_LENS_PRODUCT_NAME" /> trong hộp tìm kiếm dù họ có thể sử dụng tính năng Tìm kiếm bằng máy ảnh thông qua <ph name="GOOGLE_LENS_PRODUCT_NAME" />.</translation>
 <translation id="5266173014392157048">Chính sách này không còn dùng nữa, vui lòng sử dụng chính sách "<ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />".
 
       Nếu bạn đặt chính sách này, hệ thống sẽ chỉ định những máy chủ mà <ph name="PRODUCT_NAME" /> có thể ủy quyền. Hãy phân tách tên của các máy chủ bằng dấu phẩy. Cho phép sử dụng ký tự đại diện <ph name="WILDCARD_VALUE" />.
@@ -4809,7 +4798,6 @@
       Trên <ph name="MS_WIN_NAME" />, chức năng này chỉ có ở những phiên bản liên kết với một miền <ph name="MS_AD_NAME" />, chạy trên Windows 10 Pro hoặc đã đăng ký <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Trên <ph name="MAC_OS_NAME" />, chức năng này chỉ có ở những phiên bản được quản lý qua MDM hoặc liên kết với một miền qua MCX.</translation>
 <translation id="7258823566580374486">Bật tính năng ẩn của máy chủ truy cập từ xa</translation>
 <translation id="7260204423892780600">Các tùy chọn cài đặt kiểm soát dành cho Trợ lý Google.</translation>
-<translation id="7260277299188117560">Tự động cập nhật p2p được bật</translation>
 <translation id="7261252191178797385">Hình nền của thiết bị</translation>
 <translation id="7264704483008663819">Chính sách này không còn được dùng trong M68 nữa, vui lòng sử dụng chính sách DeveloperToolsAvailability để thay thế.
 
@@ -4841,7 +4829,6 @@
 
       Nếu bạn không đặt chính sách này, tùy chọn cài đặt mặc định sẽ là không được phép đối với người dùng do doanh nghiệp quản lý và được phép đối với người dùng không được quản lý.</translation>
 <translation id="7295019613773647480">Bật người dùng được giám sát</translation>
-<translation id="7295038772938766029">Bật tính năng tìm kiếm bằng máy ảnh thông qua Ống kính đối với người dùng doanh nghiệp</translation>
 <translation id="7302043767260300182">Độ trễ khóa màn hình khi chạy trên nguồn AC</translation>
 <translation id="7303902834678570827">Người dùng Phiên khách được quản lý không thể lưu trữ các chế độ cài đặt hiển thị trên toàn thiết bị</translation>
 <translation id="731208205557053914">Báo cáo thông tin về VPD</translation>
@@ -5288,7 +5275,6 @@
 <translation id="7925224837072026018">Khi bạn đặt chính sách này, hệ thống sẽ cấp cho các tiện ích hoặc ứng dụng Android quyền truy cập vào khóa công ty. Khóa được chỉ định để chỉ sử dụng trong công ty nếu được tạo bằng API chrome.enterprise.platformKeys trong một tài khoản được quản lý. Người dùng không thể cấp hay thu hồi quyền truy cập vào khóa công ty đối với các tiện ích hoặc ứng dụng Android.
 
       Theo mặc định, một tiện ích hoặc ứng dụng Android không thể dùng khóa được chỉ định để sử dụng trong công ty, điều này tương đương với việc đặt allowCorporateKeyUsage thành Tắt cho tiện ích/ứng dụng đó. Chỉ khi bạn đặt allowCorporateKeyUsage thành Bật cho một tiện ích hoặc ứng dụng Android, thì tiện ích/ứng dụng đó mới có thể dùng khóa nền tảng được đánh dấu để sử dụng trong công ty nhằm ký dữ liệu tùy ý. Chỉ cấp quyền này nếu bạn tin tưởng rằng tiện ích hoặc ứng dụng Android sẽ ngăn những kẻ tấn công truy cập vào khóa.</translation>
-<translation id="793134539373873765">Chỉ định có sử dụng p2p cho các phần tải dữ liệu cập nhật OS không. Nếu được đặt thành True, các thiết bị sẽ chia sẻ và cố gắng sử dụng các phần tải dữ liệu cập nhật trên LAN, có thể làm giảm nghẽn và mức sử dụng băng thông Internet. Nếu phần tải dữ liệu cập nhật không khả dụng trên LAN, thiết bị sẽ quay lại tải xuống từ máy chủ cập nhật. Nếu được đặt thành False hay không được định cấu hình, p2p sẽ không được sử dụng.</translation>
 <translation id="7933141401888114454">Cho phép tạo người dùng được giám sát</translation>
 <translation id="793473937901685727">Đặt mức độ khả dụng của chứng chỉ cho ứng dụng ARC</translation>
 <translation id="7937766917976512374">Cho phép hoặc từ chối quay video</translation>
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb
index db4b3bf..2302e38 100644
--- a/components/policy/resources/policy_templates_zh-CN.xtb
+++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -347,7 +347,6 @@
 <translation id="1479427764273213107">通过设置此政策,您可以指定一个 USB 设备列表,在其中列出用户可从内核驱动程序分离以便直接在 Web 应用内通过 chrome.usb API 使用的 USB 设备。列表中的条目是成对的用于标识特定硬件的 USB 供应商标识符和产品标识符。
 
       如果您不设置此政策,可分离式 USB 设备的列表便会是空的。</translation>
-<translation id="1479515813926202288">为企业用户停用由智能镜头提供支持的摄像头辅助搜索功能</translation>
 <translation id="1481508277421549404">如果此政策设为 True,系统会允许由企业政策安装的扩展程序使用 Enterprise Hardware Platform API。
 
       如果此政策设为 False 或未设置,系统会阻止扩展程序使用该 API。
@@ -439,13 +438,6 @@
       请参阅 https://www.chromestatus.com/feature/4664843055398912。</translation>
 <translation id="1587585749332985896">不允许使用无头模式</translation>
 <translation id="1588240398285670601">浏览器设置</translation>
-<translation id="1593245608325508847">通过设置此政策,您可以启用 Chrome 的 G Suite 受限登录功能,并禁止用户更改此设置。用户只能通过来自指定网域的帐号使用 Google 工具(若要允许使用 gmail 或 googlemail 帐号,请将 consumer_accounts 添加到网域列表中)。在需要通过 Google 身份验证的受管理设备上,这项设置会禁止用户登录帐号并添加辅助帐号(如果该帐号不属于某个明确允许的网域)。
-
-      如果您将此设置留空/未配置此设置,用户将能够使用任何帐号访问 G Suite。
-
-      用户无法更改或覆盖此设置。
-
-      请注意:此政策会致使系统将 X-GoogApps-Allowed-Domains 标头附加到向所有 google.com 网域发送的所有 HTTP 和 HTTPS 请求中,如 https://support.google.com/a/answer/1668854 中所述。</translation>
 <translation id="1599424828227887013">在 Android 设备上为指定的来源启用网站隔离功能</translation>
 <translation id="159946228300522107">如果此政策设为 True,Chrome 会在首次运行时将所显示的第一个窗口最大化。
 
@@ -974,7 +966,6 @@
 <translation id="2303795211377219696">允许使用“自动填充”功能填写信用卡信息</translation>
 <translation id="2307496301287881990">报告显示状态和图形状态</translation>
 <translation id="2309390639296060546">默认地理位置设置</translation>
-<translation id="2327252517317514801">指定可访问 G Suite 的网域</translation>
 <translation id="2331354174913096226">所需 DNS-over-HTTPS 解析器的 URI 模板。要指定多个 DNS-over-HTTPS 解析器,请使用空格将相应的 URI 模板分隔开。
 
       如果 DnsOverHttpsMode 设为 <ph name="SECURE_DNS_MODE_SECURE" />,则必须设置此政策,不能将它留空。
@@ -2584,7 +2575,6 @@
 <translation id="4494132853995232608">Wilco DTC</translation>
 <translation id="449423975179525290">配置与 <ph name="PLUGIN_VM_NAME" /> 相关的政策。</translation>
 <translation id="449784980858429908">自动授权网站连接所有串行端口。</translation>
-<translation id="4507775063441355559">启用由 <ph name="GOOGLE_LENS_PRODUCT_NAME" />提供支持的摄像头辅助搜索功能</translation>
 <translation id="4510923771103268849">允许用户拥有 Crostini 容器的 root 权限</translation>
 <translation id="4515404363392014383">针对可信来源启用安全浏览功能</translation>
 <translation id="4518251772179446575">每次网站尝试跟踪用户的地理位置时都询问我</translation>
@@ -3158,7 +3148,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />,系统会使用 <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> 和 <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> 字段。
 
       注意:如需查看更详细的示例,请访问 Chromium 项目 ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett )。</translation>
-<translation id="5264773067879932127">如果此政策未设置或已启用,用户便可借助 <ph name="GOOGLE_LENS_PRODUCT_NAME" />使用摄像头进行搜索。如果此政策设为 False,那么即使可以使用由 <ph name="GOOGLE_LENS_PRODUCT_NAME" />提供支持的摄像头辅助搜索功能,用户也不会在搜索框中看到 <ph name="GOOGLE_LENS_PRODUCT_NAME" />按钮。</translation>
 <translation id="5266173014392157048">此政策已被弃用,请改用“<ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />”政策。
 
       通过设置此政策,您可以指定 <ph name="PRODUCT_NAME" /> 可将用户凭据委派给哪台/哪些服务器。若要指定多个服务器名称,请用英文逗号分隔。允许使用通配符 <ph name="WILDCARD_VALUE" />。
@@ -4724,7 +4713,6 @@
       在 <ph name="MS_WIN_NAME" /> 上,此功能仅适用于已加入 <ph name="MS_AD_NAME" /> 网域的实例、在 Windows 10 专业版上运行的实例,或已注册 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />的实例。在 <ph name="MAC_OS_NAME" /> 上,此功能仅适用于通过 MDM 进行管理或通过 MCX 加入网域的实例。</translation>
 <translation id="7258823566580374486">启用远程访问主机的屏蔽设置</translation>
 <translation id="7260204423892780600">控制 Google 助理的设置。</translation>
-<translation id="7260277299188117560">自动更新 p2p 已启用</translation>
 <translation id="7261252191178797385">设备壁纸图片</translation>
 <translation id="7264704483008663819">我们已在 M68 中弃用了此政策,请改用 DeveloperToolsAvailability。
 
@@ -4756,7 +4744,6 @@
 
       如果未设置此政策,默认情况下,受企业管理的用户不能使用即时网络共享功能,不受管理的用户则能够使用即时网络共享功能。</translation>
 <translation id="7295019613773647480">启用受监管用户</translation>
-<translation id="7295038772938766029">为企业用户启用由智能镜头提供支持的摄像头辅助搜索功能</translation>
 <translation id="7302043767260300182">使用交流电源供电时的屏幕锁定延迟时间</translation>
 <translation id="7303902834678570827">受管理访客会话用户无法存储设备级显示设置</translation>
 <translation id="731208205557053914">报告 VPD 信息</translation>
@@ -5203,7 +5190,6 @@
 <translation id="7925224837072026018">通过设置此政策,您可以授权扩展程序或 Android 应用使用企业密钥。在受管理的帐号中使用 chrome.enterprise.platformKeys API 生成的密钥会被指定为仅供企业使用。用户无法授权/取消授权扩展程序或 Android 应用使用此类密钥。
 
       默认情况下,扩展程序或 Android 应用无权使用此类密钥(相当于针对扩展程序或 Android 应用将 allowCorporateKeyUsage 设为 False)。只有在针对某个扩展程序或 Android 应用将 allowCorporateKeyUsage 设为 True 的情况下,该扩展程序/应用才能利用被标记为供企业使用的平台密钥签署任意数据。为了防范黑客盗用密钥,切勿将这项权限授予不信任的扩展程序或 Android 应用。</translation>
-<translation id="793134539373873765">指定是否对操作系统更新有效负荷使用 p2p。如果设置为 True,设备将共享并试图消耗局域网中的更新有效负荷,从而可能会减少互联网带宽使用量和拥堵。如果局域网中没有更新有效负荷,设备将回退到从更新服务器下载。如果设置为 False 或未配置,则不会使用 p2p。</translation>
 <translation id="7933141401888114454">允许创建受监管用户</translation>
 <translation id="793473937901685727">为 ARC 应用设置证书可用性</translation>
 <translation id="7937766917976512374">是否允许视频捕获</translation>
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index bc6d4036..e3b15de 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -348,7 +348,6 @@
 <translation id="1479427764273213107">你可以透過這項政策來定義 USB 裝置清單,使用者可以從核心驅動程式中卸除這份清單中的 USB 裝置,並且直接透過 chrome.usb API 在網頁應用程式中使用。輸入項目為可識別特定硬體的 USB 供應商 ID 和產品 ID 組合。
 
       如果未設定,卸除式 USB 裝置的清單會空白。</translation>
-<translation id="1479515813926202288">針對 Enterprise 使用者停用智慧鏡頭相機輔助搜尋功能</translation>
 <translation id="1481508277421549404">如果將這項政策設為 True,由企業政策安裝的擴充功能會使用 Enterprise Hardware Platform API。
 
       如果將這項政策設為 False 或不設定,擴充功能將無法使用這個 API。
@@ -439,13 +438,6 @@
       請參閱 https://www.chromestatus.com/feature/4664843055398912。</translation>
 <translation id="1587585749332985896">禁止使用無頭模式</translation>
 <translation id="1588240398285670601">瀏覽器設定</translation>
-<translation id="1593245608325508847">設定這項政策會開啟 Chrome 在 G Suite 中的限制登入功能,並防止使用者變更這項設定。使用者只能透過指定網域的帳戶存取 Google 工具,如要允許 gmail 或 googlemail 帳戶,請將 consumer_accounts 新增至網域清單。這項設定可防止使用者在需要 Google 授權的受管理裝置上,使用不屬於明確允許網域的帳戶登入及新增次要帳戶。
-
-      如果將這項設定保留空白或不設定,則使用者可透過任何帳戶存取 G Suite。
-
-      使用者無法變更或覆寫這項設定。
-
-      注意:套用這項政策後,傳送給所有 google.com 網域的任何 HTTP 和 HTTPS 要求都會加上 X-GoogApps-Allowed-Domains 標頭。詳情請參閱以下說明文章:https://support.google.com/a/answer/1668854。</translation>
 <translation id="1599424828227887013">在 Android 裝置上為指定來源啟用網站隔離</translation>
 <translation id="159946228300522107">如果將這項政策設為 True,Chrome 首次執行時會將第一個顯示的視窗最大化。
 
@@ -977,7 +969,6 @@
 <translation id="2303795211377219696">啟用信用卡的自動填入功能</translation>
 <translation id="2307496301287881990">回報顯示狀態和圖形狀態</translation>
 <translation id="2309390639296060546">預設地理位置設定</translation>
-<translation id="2327252517317514801">定義可存取 G Suite 的網域</translation>
 <translation id="2331354174913096226">所需 DNS-over-HTTPS 解析器的 URI 範本。如要指定多個 DNS-over-HTTPS 解析器,請以半形空格分隔相應的 URI 範本。
 
       如果你將 DnsOverHttpsMode 設為 <ph name="SECURE_DNS_MODE_SECURE" />,就必須設定這項政策,不可將其保持空白。
@@ -2582,7 +2573,6 @@
 <translation id="4494132853995232608">Wilco DTC</translation>
 <translation id="449423975179525290">設定 <ph name="PLUGIN_VM_NAME" /> 的相關政策。</translation>
 <translation id="449784980858429908">自動授權網站連線至所有序列埠。</translation>
-<translation id="4507775063441355559">允許使用 <ph name="GOOGLE_LENS_PRODUCT_NAME" />相機輔助搜尋功能</translation>
 <translation id="4510923771103268849">允許使用者擁有 Crostini 容器的 Root 權限</translation>
 <translation id="4515404363392014383">針對信任的來源啟用「安全瀏覽」</translation>
 <translation id="4518251772179446575">詢問網站何時要追蹤使用者的實際位置</translation>
@@ -3155,7 +3145,6 @@
           * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />:Chrome 會使用 <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> 和 <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> 欄位。
 
       注意:如需詳細範例,請前往 Chromium 計畫 (網址為 https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett )。</translation>
-<translation id="5264773067879932127">如果將這項政策設為啟用或不設定,使用者就可以使用 <ph name="GOOGLE_LENS_PRODUCT_NAME" />透過相機進行搜尋。如果將這項政策設為 False,即使裝置支援 <ph name="GOOGLE_LENS_PRODUCT_NAME" />相機輔助搜尋功能,使用者在搜尋框中也不會看到 [<ph name="GOOGLE_LENS_PRODUCT_NAME" />] 按鈕。</translation>
 <translation id="5266173014392157048">這項政策已遭淘汰,請改用「<ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />」政策。
 
       你可以透過這項政策,指派 <ph name="PRODUCT_NAME" /> 可能會委派的目標伺服器。每個伺服器名稱須以半形逗號分隔,亦可使用萬用字元 (<ph name="WILDCARD_VALUE" />)。
@@ -4710,7 +4699,6 @@
       在 <ph name="MS_WIN_NAME" /> 上,這項功能僅適用於已加入 <ph name="MS_AD_NAME" /> 網域的執行個體、在 Windows 10 專業版上執行的執行個體,或是已註冊 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />服務的執行個體。在 <ph name="MAC_OS_NAME" /> 上,這項功能僅適用於透過行動裝置管理 (MDM) 軟體進行管理或透過 MCX 加入網域的執行個體。</translation>
 <translation id="7258823566580374486">啟用遠端存取主機遮幕</translation>
 <translation id="7260204423892780600">控管 Google 助理的設定。</translation>
-<translation id="7260277299188117560">已啟用自動更新 P2P</translation>
 <translation id="7261252191178797385">裝置桌布圖片</translation>
 <translation id="7264704483008663819">這項政策自 M68 起已淘汰,請改用 DeveloperToolsAvailability。
 
@@ -4742,7 +4730,6 @@
 
       如果不設定這項政策,在預設情況下,受企業管理的使用者將無法使用 Smart Lock 登入功能,其他一般的使用者則可使用這項登入功能。</translation>
 <translation id="7295019613773647480">啟用受監管的使用者</translation>
-<translation id="7295038772938766029">針對 Enterprise 使用者啟用智慧鏡頭相機輔助搜尋功能</translation>
 <translation id="7302043767260300182">在 AC 供電環境下執行時的螢幕鎖定延遲時間</translation>
 <translation id="7303902834678570827">受管理訪客工作階段的使用者無法儲存整部裝置的顯示設定</translation>
 <translation id="731208205557053914">回報 VPD 資訊</translation>
@@ -5183,7 +5170,6 @@
 <translation id="7925224837072026018">設定這項政策會將企業金鑰的存取權授予擴充功能或 Android 應用程式。在受管理的帳戶中使用 chrome.enterprise.platformKeys API 產生的金鑰僅供企業使用。使用者無法將企業金鑰的存取權授予擴充功能或 Android 應用程式,也無法撤銷擴充功能或 Android 應用程式對企業金鑰的存取權。
 
       根據預設,擴充功能或 Android 應用程式無法使用企業專用的金鑰 (等同於將 allowCorporateKeyUsage 設為 False)。擴充功能或 Android 應用程式只有在 allowCorporateKeyUsage 設為 True 時,才能使用企業專用的平台金鑰簽署任意資料。為了確保攻擊者無法獲得金鑰存取權,這項權限只應授予信任的擴充功能或 Android 應用程式。</translation>
-<translation id="793134539373873765">指定是否使用 P2P 更新裝載作業系統。如果設為 True,裝置將會在 LAN 上共用並嘗試使用更新裝載,藉此降低網際網路頻寬用量及減輕壅塞。如果 LAN 上未提供更新裝載,裝置將回歸至更新伺服器進行下載。如果設為 False 或未設定,則不會使用 P2P。</translation>
 <translation id="7933141401888114454">啟用建立受監管使用者的功能</translation>
 <translation id="793473937901685727">設定 ARC 應用程式的憑證可用性</translation>
 <translation id="7937766917976512374">允許或拒絕擷取視訊</translation>
diff --git a/components/strings/components_strings_af.xtb b/components/strings/components_strings_af.xtb
index 211d93cd..fa1d5bfb 100644
--- a/components/strings/components_strings_af.xtb
+++ b/components/strings/components_strings_af.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">Die gebruik van 'n instaanbediener is gedeaktiveer, maar 'n eksplisiete instaanbedieneropstelling word gespesifiseer.</translation>
 <translation id="4464826014807964867">Webwerwe met inligting van jou organisasie</translation>
-<translation id="4466881336512663640">Vormveranderinge sal verloor word. Is jy seker jy wil voortgaan?</translation>
 <translation id="4476953670630786061">Hierdie vorm is nie veilig nie. Outovul is afgeskakel.</translation>
 <translation id="4477350412780666475">Volgende snit</translation>
 <translation id="4482953324121162758">Hierdie werf sal nie vertaal word nie.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">Hierdie bladsy sluit verder ander hulpbronne in wat nie veilig is nie. Hierdie hulpbronne kan deur ander mense bekyk word terwyl hulle op pad is, en kan deur 'n aanvaller aangepas word om die bladsy se voorkoms te verander.</translation>
 <translation id="5786044859038896871">Wil jy jou kaartinligting invul?</translation>
 <translation id="578633867165174378">Chrome het die wagwoord wat jy sopas gebruik het, in 'n dataskending gekry. Ons beveel aan dat jy hierdie wagwoord nou verander.</translation>
-<translation id="5798290721819630480">Gooi veranderinge weg?</translation>
 <translation id="5803412860119678065">Wil jy jou <ph name="CARD_DETAIL" /> invul?</translation>
 <translation id="5804241973901381774">Toestemmings</translation>
 <translation id="5804427196348435412">Gebruik NFC-toestelle</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">Verifieer jou foonnommer</translation>
 <translation id="6433490469411711332">Wysig kontakinligting</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> het geweier om te koppel.</translation>
-<translation id="6434309073475700221">Gooi weg</translation>
 <translation id="6440503408713884761">Geïgnoreer</translation>
 <translation id="6443406338865242315">Watter uitbreidings en inproppe jy geïnstalleer het</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">Vorentoe</translation>
 <translation id="7485870689360869515">Geen data gevind nie.</translation>
 <translation id="7495528107193238112">Hierdie inhoud is geblokkeer. Kontak die werfeienaar om die kwessie reg te stel.</translation>
-<translation id="7498234416455752244">Hou aan wysig</translation>
 <translation id="7503664977220660814">Jy het sopas jou wagwoord op 'n misleidende werf ingevoer. Chromium beveel aan dat jy jou gestoorde wagwoorde vir <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> en ander werwe waar jy hierdie wagwoord gebruik, nou nagaan.</translation>
 <translation id="7508255263130623398">Teruggestuurde beleidtoestel-ID is leeg of stem nie met huidige toestel-ID ooreen nie</translation>
 <translation id="7508870219247277067">Avokadogroen</translation>
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb
index 139b386..16f7db66 100644
--- a/components/strings/components_strings_am.xtb
+++ b/components/strings/components_strings_am.xtb
@@ -933,7 +933,6 @@
 <translation id="4435702339979719576">የፖስታ ካርድ)</translation>
 <translation id="443673843213245140">የተኪ መጠቀም ተሰናክሏል ግን ግልጽ የሆነ የተኪ ውቅር ተገልጿል።</translation>
 <translation id="4464826014807964867">ከድርጅትዎ መረጃ ያላቸው ድርጣቢያዎች</translation>
-<translation id="4466881336512663640">የቅጽ ለውጦች ይጠፋሉ። እርግጠኛ ነዎት መቀጠል ይፈልጋሉ?</translation>
 <translation id="4476953670630786061">ይህ ቅጽ ደህንነቱ የተጠበቀ አይደለም። ራስ-ሙላ ጠፍቷል።</translation>
 <translation id="4477350412780666475">ቀጣይ ትራክ</translation>
 <translation id="4482953324121162758">ይህ ጣቢያ አይተረጎምም።</translation>
@@ -1287,7 +1286,6 @@
 <translation id="5785756445106461925">በተጨማሪ፣ ይህ ገጽ ደህንነታቸው ያልተጠበቀ ሌሎች ንብረቶችን አካትቷል። እነዚህ ንብረቶች በሽግግር ወቅት በሌሎች ሊታዩ ይችላሉ፣ እናም የገጹን መልክ ለመለወጥ በአጥቂዎች ሊቀየሩ ይችላሉ።</translation>
 <translation id="5786044859038896871">የካርድዎን መረጃ መሙላት ይፈልጋሉ?</translation>
 <translation id="578633867165174378">Chrome እርስዎ አሁን የተጠቀሙበትን የይለፍ ቃል በውሂብ ጥሰት ውስጥ አግኝቷል። ይህንን የይለፍ ቃል አሁን እንዲቀይሩ እንመክራለን።</translation>
-<translation id="5798290721819630480">ለውጦች ይወገዱ?</translation>
 <translation id="5803412860119678065">የእርስዎን <ph name="CARD_DETAIL" /> መሙላት ይፈልጋሉ?</translation>
 <translation id="5804241973901381774">ፍቃዶች</translation>
 <translation id="5804427196348435412">የNFC መሣሪያዎችን ይጠቀሙ</translation>
@@ -1448,7 +1446,6 @@
 <translation id="6428450836711225518">ስልክ ቁጥርዎን ያረጋግጡ</translation>
 <translation id="6433490469411711332">የዕውቂያ መረጃን ያርትዑ</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> ማገናኘት አሻፈረኝ ብሏል።</translation>
-<translation id="6434309073475700221">ጣለው</translation>
 <translation id="6440503408713884761">የተተወ</translation>
 <translation id="6443406338865242315">የትኛዎቹ ቅጥያዎች እና ተሰኪዎች ናቸው እርስዎ የጫኑት</translation>
 <translation id="6446163441502663861">ካሁ (የደብዳቤ ፖስታ)</translation>
@@ -1705,7 +1702,6 @@
 <translation id="7481312909269577407">ወደ ፊት</translation>
 <translation id="7485870689360869515">ምንም ውሂብ አልተገኘም።</translation>
 <translation id="7495528107193238112">ይህ ይዘት ታግዷል። ችግሩን ለማስተካከል የጣቢያውን ባለቤት ያነጋግሩ።</translation>
-<translation id="7498234416455752244">አርትዖቱን ቀጥል</translation>
 <translation id="7503664977220660814">አሁን የይለፍ ቃልዎን በአንድ አታላይ ጣቢያ ላይ አስገብተዋል። Chromium የ<ph name="WEBSITE_1" />፣ <ph name="WEBSITE_2" /> እና አሁን ይህን የይለፍ ቃል የተጠቀሙባቸው የሌሎች ጣቢያዎች የተቀመጡ የይለፍ ቃላትዎን መፈተሽ ይመክራል።</translation>
 <translation id="7508255263130623398">የተመላሽ መመሪያ መሣሪያ መታወቂያ ባዶ ነው ወይም ከአሁኑ የመሣሪያ መታወቂያ ጋር አይዛመድም</translation>
 <translation id="7508870219247277067">አቮካዶ አረንጓዴ</translation>
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb
index 65e4cf6..2274632 100644
--- a/components/strings/components_strings_ar.xtb
+++ b/components/strings/components_strings_ar.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">بطاقة بريدية)</translation>
 <translation id="443673843213245140">تم إيقاف استخدام الخادم الوكيل ولكن تم تحديد إعداد صريح للخادم الوكيل.</translation>
 <translation id="4464826014807964867">المواقع الإلكترونية التي تحتوي على معلومات واردة من مؤسستك</translation>
-<translation id="4466881336512663640">سيتم فقدان تغييرات النموذج. هل تريد فعلاً المتابعة؟</translation>
 <translation id="4476953670630786061">هذا النموذج غير آمن. تمّ إيقاف ميزة "الملء التلقائي".</translation>
 <translation id="4477350412780666475">المقطع الصوتي التالي</translation>
 <translation id="4482953324121162758">لن تتم ترجمة هذا الموقع.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">إضافة إلى ذلك، تتضمن هذه الصفحة موارد أخرى غير آمنة. ويستطيع الآخرون مشاهدة هذه الموارد أثناء نقلها، كما يستطيع أي مهاجم تعديلها لتغيير مظهر الصفحة.</translation>
 <translation id="5786044859038896871">هل تريد ملء معلومات بطاقتك؟</translation>
 <translation id="578633867165174378">‏لقد عثر Chrome في عمليّة اختراق للبيانات على كلمة المرور التي استخدمتها للتو. ننصحك بتغيير كلمة المرور هذه الآن.</translation>
-<translation id="5798290721819630480">هل تريد تجاهل التغييرات؟</translation>
 <translation id="5803412860119678065">هل تريد ملء <ph name="CARD_DETAIL" />؟</translation>
 <translation id="5804241973901381774">الأذونات</translation>
 <translation id="5804427196348435412">‏استخدام أجهزة NFC</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">إثبات ملكية رقم الهاتف</translation>
 <translation id="6433490469411711332">تعديل معلومات الاتصال</translation>
 <translation id="6433595998831338502">رفض <ph name="HOST_NAME" /> الاتصال.</translation>
-<translation id="6434309073475700221">تجاهل</translation>
 <translation id="6440503408713884761">تم تجاهله</translation>
 <translation id="6443406338865242315">الإضافات والمكوّنات الإضافية التي تثبّتها</translation>
 <translation id="6446163441502663861">‏Kahu (مغلف)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">إلى الأمام</translation>
 <translation id="7485870689360869515">لم يتم العثور على بيانات.</translation>
 <translation id="7495528107193238112">هذا المحتوى محظور. يمكنك التواصل مع مالك الموقع الإلكتروني لحلّ المشكلة.</translation>
-<translation id="7498234416455752244">متابعة التعديل</translation>
 <translation id="7503664977220660814">‏لقد أدخلت للتو كلمة المرور في موقع إلكتروني مريب. وللحفاظ على أمان بياناتك، ينصحك Chromium بالتحقّق من كلمات المرور المحفوظة للموقعين الإلكترونيين <ph name="WEBSITE_1" /> و<ph name="WEBSITE_2" /> وغيرهما من المواقع التي تستخدم فيها الآن كلمة المرور هذه.</translation>
 <translation id="7508255263130623398">رقم تعريف الجهاز المعروض للسياسة فارغ أو لا يتطابق مع رقم تعريف الجهاز الحالي</translation>
 <translation id="7508870219247277067">أخضر مصفر</translation>
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb
index 7bf2c29..a12d780 100644
--- a/components/strings/components_strings_as.xtb
+++ b/components/strings/components_strings_as.xtb
@@ -218,6 +218,7 @@
 <translation id="1703835215927279855">লেটাৰ</translation>
 <translation id="1706954506755087368">{1,plural, =1{এই ছাৰ্ভাৰটোৱে এইটোক <ph name="DOMAIN" /> বুলি প্ৰমাণ কৰিব নোৱাৰিলে, ইয়াৰ সুৰক্ষা প্ৰমাণপত্ৰ কাইলৈৰপৰা মান্য হ’লহেঁতেন। কোনো ভুল কনফিগাৰেশ্বনৰ বাবে বা কোনো আক্ৰমণকাৰীয়ে আপোনাৰ সংযোগ অৱৰোধ কৰাৰ বাবে এয়া হ’ব পাৰে।}one{এই ছাৰ্ভাৰটোৱে এইটোক <ph name="DOMAIN" /> বুলি প্ৰমাণ কৰিব নোৱাৰিলে, ইয়াৰ সুৰক্ষা প্ৰমাণপত্ৰ # দিনৰ পিছত মান্য হ’লহেঁতেন। কোনো ভুল কনফিগাৰেশ্বনৰ বাবে বা কোনো আক্ৰমণকাৰীয়ে আপোনাৰ সংযোগ অৱৰোধ কৰাৰ বাবে এয়া হ’ব পাৰে।}other{এই ছাৰ্ভাৰটোৱে এইটোক <ph name="DOMAIN" /> বুলি প্ৰমাণ কৰিব নোৱাৰিলে, ইয়াৰ সুৰক্ষা প্ৰমাণপত্ৰ # দিনৰ পিছত মান্য হ’লহেঁতেন। কোনো ভুল কনফিগাৰেশ্বনৰ বাবে বা কোনো আক্ৰমণকাৰীয়ে আপোনাৰ সংযোগ অৱৰোধ কৰাৰ বাবে এয়া হ’ব পাৰে।}}</translation>
 <translation id="1710259589646384581">OS</translation>
+<translation id="1711234383449478798"><ph name="POLICY_NAME" />টো <ph name="VALUE" /> হিচাপে ছেট কৰা নাই বাবে অৱজ্ঞা কৰা হৈছে।</translation>
 <translation id="1712552549805331520"><ph name="URL" />এ আপোনাৰ ল’কেল কম্পিউটাৰত স্থায়ীভাৱে ডেটা ষ্ট’ৰ কৰিব বিচাৰে</translation>
 <translation id="1713628304598226412">ট্ৰে’ ২</translation>
 <translation id="1715874602234207">F</translation>
@@ -937,7 +938,6 @@
 <translation id="4435702339979719576">প’ষ্টকার্ড)</translation>
 <translation id="443673843213245140">এটা প্ৰক্সিৰ ব্যৱহাৰ অক্ষম কৰা হৈছে কিন্তু এটা মুখ্য প্ৰক্সিৰ কনফিগাৰেশ্বন নিৰ্দিষ্ট কৰা হৈছে।</translation>
 <translation id="4464826014807964867">আপোনাৰ প্ৰতিষ্ঠানৰ তথ্য থকা ৱেবছাইট</translation>
-<translation id="4466881336512663640">ফৰ্মত কৰা সালসলনি নোহোৱা হৈ যাব। আপুনি অব্যাহত ৰাখিবলৈ বিচাৰে বুলি নিশ্চিতনে?</translation>
 <translation id="4476953670630786061">এই ফৰ্মখন সুৰক্ষিত নহয়। স্বয়ংক্রিয়ভাৱে পূৰ কৰাৰ সুবিধাটো অফ কৰা হৈছে।</translation>
 <translation id="4477350412780666475">পৰৱৰ্তী ট্ৰেক</translation>
 <translation id="4482953324121162758">এই ছাইটটো অনুবাদ কৰা নহয়।</translation>
@@ -1291,7 +1291,6 @@
 <translation id="5785756445106461925">তাৰোপৰি, এই পৃষ্ঠাত কিছুমান অসুৰক্ষিত সমল আছে। এই সমল পৰিবহণৰ সময়ত অন্য লোকসকলে চাব পাৰিব আৰু পৃষ্ঠাটোৰ ৰূপ সলনি কৰিবলৈ কোনো আক্ৰমণকাৰীয়ে এই সমল সংশোধন কৰিব পাৰে।</translation>
 <translation id="5786044859038896871">আপুনি আপোনাৰ কাৰ্ডৰ তথ্য ভৰাব খোজে নেকি?</translation>
 <translation id="578633867165174378">Chromeএ আপুনি এইমাত্ৰ ডেটা উলংঘনত ব্যৱহাৰ কৰা পাছৱৰ্ডটো বিচাৰি পাইছে। আমি এই পাছৱৰ্ডটো এতিয়াই সলনি কৰাটো চুপাৰিছ কৰোঁ।</translation>
-<translation id="5798290721819630480">সালসলনিসমূহ বাতিল কৰিবনে?</translation>
 <translation id="5803412860119678065">আপুনি নিজৰ <ph name="CARD_DETAIL" /> পুৰাব খোজেনে?</translation>
 <translation id="5804241973901381774">অনুমতি</translation>
 <translation id="5804427196348435412">NFC ডিভাইচসমূহ ব্যৱহাৰ কৰক</translation>
@@ -1450,7 +1449,6 @@
 <translation id="6428450836711225518">আপোনাৰ ফ’ন নম্বৰটো সত্যাপন কৰক</translation>
 <translation id="6433490469411711332">সম্পর্কৰ তথ্য সম্পাদনা কৰক</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" />এ সংযোগ কৰিবলৈ অস্বীকাৰ কৰিছে।</translation>
-<translation id="6434309073475700221">প্ৰত্যাখ্যান কৰক</translation>
 <translation id="6440503408713884761">উপেক্ষিত কৰা হৈছে</translation>
 <translation id="6443406338865242315">আপুনি ইনষ্টল কৰা এক্সটেনশ্বন আৰু প্লাগইনসমূহ</translation>
 <translation id="6446163441502663861">কাহু (লেফাফা)</translation>
@@ -1705,7 +1703,6 @@
 <translation id="7481312909269577407">ফৰৱাৰ্ড কৰক</translation>
 <translation id="7485870689360869515">কোনো ডেটা বিচাৰি পোৱা নগ’ল।</translation>
 <translation id="7495528107193238112">এই সমলটো অৱৰোধ কৰা হৈছে। সমস্যাটো সমাধান কৰিবলৈ ছাইটৰ গৰাকীৰ সৈতে যোগাযোগ কৰক।</translation>
-<translation id="7498234416455752244">সম্পাদনা কৰি থাকক</translation>
 <translation id="7503664977220660814">আপুনি এটা প্ৰৱঞ্চনামূলক ছাইটত এইমাত্ৰ নিজৰ পাছৱৰ্ডটো দিছে। Chromiumএ <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> আৰু অন্য ছাইটসমূহ, য’ত আপুনি এই পাছৱৰ্ডটো ব্যৱহাৰ কৰে সেইবিলাকত ছেভ কৰি থোৱা আপোনাৰ পাছৱৰ্ডসমূহ এতিয়াই পৰীক্ষা কৰাটো চুপাৰিছ কৰে।</translation>
 <translation id="7508255263130623398">উভতোৱা নীতিৰ ডিভাইচ আইডি খালী বা বর্তমান আইডি সৈতে অমিল</translation>
 <translation id="7508870219247277067">গাঢ় সেউজীয়া</translation>
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb
index 40f32193..61c0257 100644
--- a/components/strings/components_strings_az.xtb
+++ b/components/strings/components_strings_az.xtb
@@ -938,7 +938,6 @@
 <translation id="4435702339979719576">Postkart)</translation>
 <translation id="443673843213245140">Proksi istifadəsi deaktiv edilib, amma ətraflı proksi konfiqurasiyası müəyyən edilib.</translation>
 <translation id="4464826014807964867">Təşkilatınızın məlumatları olan veb saytlar</translation>
-<translation id="4466881336512663640">Formaya edilmiş dəyişikliklər silinəcək. Davam etmək istədiyinizə əminsiniz?</translation>
 <translation id="4476953670630786061">Bu forma güvənli deyil. Avto doldurma deaktiv edilib.</translation>
 <translation id="4477350412780666475">Növbəti trek</translation>
 <translation id="4482953324121162758">Bu sayt tərcümə edilməyəcək.</translation>
@@ -1292,7 +1291,6 @@
 <translation id="5785756445106461925">Bundan əlavə, bu səhifəyə təhlükəsiz olmayan başqa resurslar daxildir. Bu resurslar keçid zamanı başqaları tərəfindən görüntülən bilər və hücumçu tərəfindən səhifə görünüşünün dəyişdirilməsi üçün modifikasiya edilə bilər.</translation>
 <translation id="5786044859038896871">Kart məlumatlarını doldurmaq istəyirsiniz?</translation>
 <translation id="578633867165174378">Chrome indicə istifadə etdiyiniz parolu bir data pozuntusunda tapıb. Bu parolu indi dəyişdirmənizi tövsiyə edirik.</translation>
-<translation id="5798290721819630480">Dəyişikliklər ləğv edilsin?</translation>
 <translation id="5803412860119678065"><ph name="CARD_DETAIL" /> doldurmaq istəyirsiniz?</translation>
 <translation id="5804241973901381774">İcazələr</translation>
 <translation id="5804427196348435412">NFC cihazlarını istifadə edin</translation>
@@ -1453,7 +1451,6 @@
 <translation id="6428450836711225518">Telefon nömrənizi doğrulayın</translation>
 <translation id="6433490469411711332">Kontakt məlumatını redaktə edin</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> qoşulmaq istəmədi.</translation>
-<translation id="6434309073475700221">Ləğv edin</translation>
 <translation id="6440503408713884761">İqnor edilənlər</translation>
 <translation id="6443406338865242315">Quraşdırdığınız artırmalar və qoşmalar</translation>
 <translation id="6446163441502663861">Kahu (Zərf)</translation>
@@ -1710,7 +1707,6 @@
 <translation id="7481312909269577407">İrəli</translation>
 <translation id="7485870689360869515">Heç bir data tapılmadı.</translation>
 <translation id="7495528107193238112">Bu məzmun bloklanıb. Problemi düzəltmək üçün sayt sahibi ilə əlaqə saxlayın.</translation>
-<translation id="7498234416455752244">Düzəlişə davam edin</translation>
 <translation id="7503664977220660814">İndicə parolunuzu aldadıcı saytda daxil etdiniz. Chromium <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> saytlarında və bu paroldan istifadə etdiyiniz digər saytlarda saxlanılmış parollarınızı indi yoxlamağı tövsiyə edir.</translation>
 <translation id="7508255263130623398">Qaytarılmış qaydalar cihaz İD'si boşdur və ya cari cihaz İD'si ilə üst-üstə düşmür</translation>
 <translation id="7508870219247277067">Avokado Yaşılı</translation>
diff --git a/components/strings/components_strings_be.xtb b/components/strings/components_strings_be.xtb
index 922131a..5c4d0fa 100644
--- a/components/strings/components_strings_be.xtb
+++ b/components/strings/components_strings_be.xtb
@@ -942,7 +942,6 @@
 <translation id="4435702339979719576">паштоўка)</translation>
 <translation id="443673843213245140">Выкарыстанне проксі-сервера выключана, але яўная канфігурацыя проксі вызначана.</translation>
 <translation id="4464826014807964867">Вэб-сайты са звесткамі ад вашай арганізацыі</translation>
-<translation id="4466881336512663640">Змены ў форме будуць страчаны. Вы сапраўды хочаце працягнуць?</translation>
 <translation id="4476953670630786061">Гэта форма не з'яўляецца бяспечнай. Аўтазапаўненне было выключана.</translation>
 <translation id="4477350412780666475">Наступны трэк</translation>
 <translation id="4482953324121162758">Гэты сайт не будзе перакладацца.</translation>
@@ -1296,7 +1295,6 @@
 <translation id="5785756445106461925">Акрамя таго, на гэтай старонцы ёсць іншыя рэсурсы, якія не з'яўляюцца бяспечнымі: яны могуць быць прагледжаны іншымі падчас перадачы, а таксама могуць быць мадыфікаваны зламыснікам з мэтай змяніць выгляд старонкі.</translation>
 <translation id="5786044859038896871">Запоўніць даныя карткі?</translation>
 <translation id="578633867165174378">Браўзер Chrome выявіў, што пароль, які вы толькі што выкарысталі, быў раскрыты пры ўцечцы даных. Мы рэкамендуем змяніць яго зараз жа.</translation>
-<translation id="5798290721819630480">Адхіліць змены?</translation>
 <translation id="5803412860119678065">Запоўніць наступныя даныя: <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Дазволы</translation>
 <translation id="5804427196348435412">выкарыстоўваць прылады NFC</translation>
@@ -1457,7 +1455,6 @@
 <translation id="6428450836711225518">Спраўдзіце свой нумар тэлефона</translation>
 <translation id="6433490469411711332">Змена кантактных звестак</translation>
 <translation id="6433595998831338502">Хост <ph name="HOST_NAME" /> адмовіўся ад падключэння.</translation>
-<translation id="6434309073475700221">Адхіліць</translation>
 <translation id="6440503408713884761">Ігнаруецца</translation>
 <translation id="6443406338865242315">Якія пашырэнні і ўбудовы вы ўсталявалі.</translation>
 <translation id="6446163441502663861">Kahu (канверт)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">Далей</translation>
 <translation id="7485870689360869515">Даныя не знойдзены.</translation>
 <translation id="7495528107193238112">Гэта змесціва заблакіравана. Каб вырашыць праблему, звярніцеся да ўладальніка сайта.</translation>
-<translation id="7498234416455752244">Рэдагаваць далей</translation>
 <translation id="7503664977220660814">Вы толькі што ўвялі свой пароль на сайце, вядомым падманнымі паводзінамі. Chromium рэкамендуе праверыць захаваныя паролі на сайтах <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> і на іншых сайтах, дзе выкарыстоўваецца гэты пароль.</translation>
 <translation id="7508255263130623398">Атрыманы з палітыкі ідэнтыфікатар прылады пусты або не супадае з бягучым ідэнтыфікатарам прылады</translation>
 <translation id="7508870219247277067">Цёмна-зялёны</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb
index 1592fab..a1e908a 100644
--- a/components/strings/components_strings_bg.xtb
+++ b/components/strings/components_strings_bg.xtb
@@ -939,7 +939,6 @@
 <translation id="4435702339979719576">пощенска картичка)</translation>
 <translation id="443673843213245140">Използването на прокси сървър е деактивирано, но е посочена изрична негова конфигурация.</translation>
 <translation id="4464826014807964867">Уебсайтове, които разполагат с информация от организацията ви</translation>
-<translation id="4466881336512663640">Промените във формуляра ще бъдат заличени. Наистина ли искате да продължите?</translation>
 <translation id="4476953670630786061">Този формуляр не е защитен. Автоматичното попълване е изключено.</translation>
 <translation id="4477350412780666475">Следващ запис</translation>
 <translation id="4482953324121162758">Този сайт няма да се превежда.</translation>
@@ -1293,7 +1292,6 @@
 <translation id="5785756445106461925">Освен това тази страница включва други ресурси, които не са защитени. Докато се предават, те могат да бъдат видени от други хора и да бъдат модифицирани от извършител на атака, така че да се промени изгледът на страницата.</translation>
 <translation id="5786044859038896871">Искате ли да се попълнят данните за кредитната ви карта?</translation>
 <translation id="578633867165174378">Chrome разкри паролата, която току-що използвахте, при нарушение на сигурността на данните. Препоръчваме ви да я промените сега.</translation>
-<translation id="5798290721819630480">Да се отхвърлят ли промените?</translation>
 <translation id="5803412860119678065">Искате ли да се попълнят данните за <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Разрешения</translation>
 <translation id="5804427196348435412">Използване на устройства с NFC</translation>
@@ -1454,7 +1452,6 @@
 <translation id="6428450836711225518">Потвърдете телефонния си номер</translation>
 <translation id="6433490469411711332">Редактиране на информацията за връзка</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> отказа да установи връзка.</translation>
-<translation id="6434309073475700221">Отхвърляне</translation>
 <translation id="6440503408713884761">Пренебрегнато</translation>
 <translation id="6443406338865242315">Кои разширения и приставки сте инсталирали</translation>
 <translation id="6446163441502663861">Kahu (плик)</translation>
@@ -1711,7 +1708,6 @@
 <translation id="7481312909269577407">Напред</translation>
 <translation id="7485870689360869515">Няма намерени данни.</translation>
 <translation id="7495528107193238112">Това съдържание е блокирано. Свържете се със собственика на сайта, за да отстрани проблема.</translation>
-<translation id="7498234416455752244">Продължаване с редактирането</translation>
 <translation id="7503664977220660814">Току-що въведохте паролата си в измамнически сайт. Chromium препоръчва да проверите запазените си пароли за <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> и други сайтове, на които понастоящем използвате тази парола.</translation>
 <translation id="7508255263130623398">Върнатият от правилата идентификационен номер на устройството е празен или не съответства на текущия</translation>
 <translation id="7508870219247277067">авокадовозелено</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb
index 8b47e72..d26f8029 100644
--- a/components/strings/components_strings_bn.xtb
+++ b/components/strings/components_strings_bn.xtb
@@ -218,6 +218,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706954506755087368">{1,plural, =1{এই সার্ভার যে <ph name="DOMAIN" /> তা এটি প্রমাণ করতে পারেনি; এর নিরাপত্তা সার্টিফিকেটটি আগামীকালের বলে মনে হচ্ছে। কোনও ভুল কনফিগারেশনের কারণে অথবা আপনার সংযোগে বাধাপ্রদানকারী কোনও আক্রমণকারীর কারণে এমনটি হতে পারে।}one{এই সার্ভার যে <ph name="DOMAIN" /> তা এটি প্রমাণ করতে পারেনি; এর নিরাপত্তা সার্টিফিকেটটি আগামী # দিন পরের বলে মনে হচ্ছে। কোনও ভুল কনফিগারেশনের কারণে অথবা আপনার সংযোগে বাধাপ্রদানকারী কোনও আক্রমণকারীর কারণে এমনটি হতে পারে।}other{এই সার্ভার যে <ph name="DOMAIN" /> তা এটি প্রমাণ করতে পারেনি; এর নিরাপত্তা সার্টিফিকেটটি আগামী # দিন পরের বলে মনে হচ্ছে। কোনও ভুল কনফিগারেশনের কারণে অথবা আপনার সংযোগে বাধাপ্রদানকারী কোনও আক্রমণকারীর কারণে এমনটি হতে পারে।}}</translation>
 <translation id="1710259589646384581">OS</translation>
+<translation id="1711234383449478798">এড়িয়ে যাওয়া হয়েছে কারণ <ph name="VALUE" />-এর নীতির মাধ্যমে <ph name="POLICY_NAME" /> সেট করা হয়নি।</translation>
 <translation id="1712552549805331520"><ph name="URL" /> স্থায়ীভাবে আপনার কম্পিউটারে ডেটা স্টোর করতে চায়</translation>
 <translation id="1713628304598226412">ট্রে ২</translation>
 <translation id="1715874602234207">F</translation>
@@ -943,7 +944,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">প্রক্সির ব্যবহার অক্ষম করা হয়েছে কিন্তু কোনো স্পষ্ট প্রক্সি কনফিগারেশান নির্দিষ্ট করা হয়েছে৷</translation>
 <translation id="4464826014807964867">এমন ওয়েবসাইট যার ব্যাপারে আপনার সংস্থার কাছ থেকে তথ্য পাওয়া গেছে</translation>
-<translation id="4466881336512663640">ফর্মে করা পরিবর্তনগুলি সেভ হবে না। আপনি কি চালিয়ে যেতে চান?</translation>
 <translation id="4476953670630786061">এই ফর্ম নিরাপদ নয়। অটোফিল বন্ধ করে দেওয়া হয়েছে।</translation>
 <translation id="4477350412780666475">পরের ট্র্যাক চালান</translation>
 <translation id="4482953324121162758">এই সাইটটি অনুবাদ করা হবে না।</translation>
@@ -1297,7 +1297,6 @@
 <translation id="5785756445106461925">উপরন্তু, এই পৃষ্ঠাতে অন্যান্য সংস্থান অন্তর্ভুক্ত রয়েছে যা নিরাপদ নয়৷ এই সংস্থানগুলি ট্রানজিটের সময় অন্যরা দেখতে পাবে এবং পৃষ্ঠাটির চেহারাটি পরিবর্তন করতে কোনও আক্রমণকারী এর পরিবর্তন করতে পারেন৷</translation>
 <translation id="5786044859038896871">আপনি কি আপনার কার্ডের তথ্য পূরণ করতে চান?</translation>
 <translation id="578633867165174378">Chrome-এর হিসেবে আপনার এখনই ব্যবহার করা পাসওয়ার্ডের তথ্য চুরি হয়ে গেছে। আমরা সাজেস্ট করছি এখনই এই পাসওয়ার্ড পরিবর্তন করুন।</translation>
-<translation id="5798290721819630480">পরিবর্তনগুলি খারিজ করবেন?</translation>
 <translation id="5803412860119678065">আপনি কি আপনার <ph name="CARD_DETAIL" /> এর তথ্য পূরণ করতে চান?</translation>
 <translation id="5804241973901381774">অনুমতিগুলি</translation>
 <translation id="5804427196348435412">NFC ডিভাইস ব্যবহার করুন</translation>
@@ -1457,7 +1456,6 @@
 <translation id="6428450836711225518">আপনার ফোন নম্বর যাচাই করুন</translation>
 <translation id="6433490469411711332">পরিচিতি তথ্য সম্পাদনা করুন</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> সংযোগ করতে প্রত্যাখ্যান করেছে।</translation>
-<translation id="6434309073475700221">বাতিল</translation>
 <translation id="6440503408713884761">এড়ানো হয়েছে</translation>
 <translation id="6443406338865242315">কোন কোন এক্সটেনশন ও প্লাগ-ইন আপনি ইনস্টল করেছেন</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1714,7 +1712,6 @@
 <translation id="7481312909269577407">ফরওয়ার্ড</translation>
 <translation id="7485870689360869515">কোনো ডেটা পাওয়া যায়নি৷</translation>
 <translation id="7495528107193238112">এই কন্টেন্ট ব্লক করা হয়েছে। এই সমস্যার সমাধান করতে সাইটের মালিকের সাথে যোগাযোগ করুন।</translation>
-<translation id="7498234416455752244">এডিট করতে থাকুন</translation>
 <translation id="7503664977220660814">আপনি এইমাত্র একটি প্রতারণামূলক সাইটে আপনার পাসওয়ার্ড লিখেছেন। <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> এবং অন্যান্য সাইটে, যেখানে যেখানে আপনি এই পাসওয়ার্ডটি ব্যবহার করেন, Chromium আপনাকে সেইসব জায়গায় গিয়ে আপনার সেভ করা পাসওয়ার্ডগুলি পরিবর্তন করতে সাজেস্ট করছে।</translation>
 <translation id="7508255263130623398">ফিরে পাওয়া নীতির ডিভাইস আইডি খালি অথবা বর্তমান ডিভাইস আইডির সাথে মিলছে না</translation>
 <translation id="7508870219247277067">অ্যাভোকাডো সবুজ</translation>
diff --git a/components/strings/components_strings_bs.xtb b/components/strings/components_strings_bs.xtb
index 7163a125..bd15bb5 100644
--- a/components/strings/components_strings_bs.xtb
+++ b/components/strings/components_strings_bs.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">Razglednica)</translation>
 <translation id="443673843213245140">Korištenje proksi servera je onemogućeno ali je određena eksplicitna konfiguracija proksi servera.</translation>
 <translation id="4464826014807964867">Web lokacije s informacijama o vašoj organizaciji</translation>
-<translation id="4466881336512663640">Izgubit ćete izmjene obrasca Jeste li sigurni da želite nastaviti?</translation>
 <translation id="4476953670630786061">Ovaj obrazac nije siguran. Automatsko popunjavanje je isključeno.</translation>
 <translation id="4477350412780666475">Sljedeća numera</translation>
 <translation id="4482953324121162758">Ova web lokacija neće biti prevedena.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">Dalje, ova stranica obuhvata druge resurse koji nisu sigurni. Te resurse mogu vidjeti drugi dok su u tranzitu, a može ih promijeniti napadač kako bi promijenio izgled stranice.</translation>
 <translation id="5786044859038896871">Želite li popuniti informacije o svojoj kartici?</translation>
 <translation id="578633867165174378">Chrome je u narušavanju podataka pronašao lozinku koju ste upravo koristili. Preporučujemo da odmah promijenite tu lozinku.</translation>
-<translation id="5798290721819630480">Odbaciti promjene?</translation>
 <translation id="5803412860119678065">Želite li popuniti svoju karticu <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Odobrenja</translation>
 <translation id="5804427196348435412">Koristiti NFC uređaje</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">Potvrdite broj telefona</translation>
 <translation id="6433490469411711332">Uređivanje podataka za kontakt</translation>
 <translation id="6433595998831338502">Host računar <ph name="HOST_NAME" /> je odbio povezivanje.</translation>
-<translation id="6434309073475700221">Odbaci</translation>
 <translation id="6440503408713884761">Zanemareno</translation>
 <translation id="6443406338865242315">Koje ekstenzije i dodatke ste instalirali</translation>
 <translation id="6446163441502663861">Kahu (koverta)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">Proslijedi</translation>
 <translation id="7485870689360869515">Nije pronađen nijedan rezultat.</translation>
 <translation id="7495528107193238112">Ovaj sadržaj je blokiran. Kontaktirajte vlasnika web lokacije da riješite problem.</translation>
-<translation id="7498234416455752244">Nastavi uređivanje</translation>
 <translation id="7503664977220660814">Upravo ste unijeli lozinku na obmanjujućoj web lokaciji. Chromium preporučuje provjeru sačuvanih lozinki za <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> i druge web lokacije na kojima sada koristite ovu lozinku.</translation>
 <translation id="7508255263130623398">Vraćeni ID uređaja pravila ne postoji ili ne odgovara trenutnom ID-u uređaja</translation>
 <translation id="7508870219247277067">Avokado zelena</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb
index 799aa4c..f3a7f51e 100644
--- a/components/strings/components_strings_ca.xtb
+++ b/components/strings/components_strings_ca.xtb
@@ -932,7 +932,6 @@
 <translation id="4435702339979719576">Postal)</translation>
 <translation id="443673843213245140">L'ús d'un servidor intermediari no està activat, però s'ha especificat una configuració explícita d'un servidor intermediari.</translation>
 <translation id="4464826014807964867">Llocs web amb informació sobre la teva organització</translation>
-<translation id="4466881336512663640">Es perdran els canvis fets al formulari. Confirmes que vols continuar?</translation>
 <translation id="4476953670630786061">Aquest formulari no és segur. S'ha desactivat l'emplenament automàtic.</translation>
 <translation id="4477350412780666475">Pista següent</translation>
 <translation id="4482953324121162758">Aquest lloc web no es traduirà.</translation>
@@ -1286,7 +1285,6 @@
 <translation id="5785756445106461925">A més, aquesta pàgina conté altres recursos que no són segurs. La resta d'usuaris poden visualitzar-los mentre estan en trànsit, i algun atacant podria modificar-los per canviar l'aparença de la pàgina.</translation>
 <translation id="5786044859038896871">Vols emplenar la informació de la teva targeta?</translation>
 <translation id="578633867165174378">Chrome ha trobat la contrasenya que acabes de fer servir en una violació de les dades. Et recomanem que canviïs la contrasenya ara.</translation>
-<translation id="5798290721819630480">Vols descartar els canvis?</translation>
 <translation id="5803412860119678065">Vols emplenar la informació de la teva targeta <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Permisos</translation>
 <translation id="5804427196348435412">Utilitza dispositius amb NFC</translation>
@@ -1447,7 +1445,6 @@
 <translation id="6428450836711225518">Verifica el número de telèfon</translation>
 <translation id="6433490469411711332">Edita la informació de contacte</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> no ens ha permès establir la connexió.</translation>
-<translation id="6434309073475700221">Descarta els canvis</translation>
 <translation id="6440503408713884761">Ignorada</translation>
 <translation id="6443406338865242315">Quines extensions i connectors has instal·lat</translation>
 <translation id="6446163441502663861">Kahu (sobre)</translation>
@@ -1704,7 +1701,6 @@
 <translation id="7481312909269577407">Endavant</translation>
 <translation id="7485870689360869515">No s'han trobat dades.</translation>
 <translation id="7495528107193238112">Aquest contingut està bloquejat. Contacta amb el propietari del lloc web per resoldre el problema.</translation>
-<translation id="7498234416455752244">Continua editant</translation>
 <translation id="7503664977220660814">Acabes d'introduir la contrasenya en un lloc web enganyós. Chromium et recomana que comprovis les teves contrasenyes desades per a <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> i altres llocs web en què utilitzis aquesta contrasenya ara.</translation>
 <translation id="7508255263130623398">L'identificador de dispositiu de la política que s'ha tornat és buit o no coincideix amb l'actual</translation>
 <translation id="7508870219247277067">Verd alvocat</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb
index 7105ed2..e102859 100644
--- a/components/strings/components_strings_cs.xtb
+++ b/components/strings/components_strings_cs.xtb
@@ -928,7 +928,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">Využití proxy serveru je zakázáno, je však určena explicitní konfigurace proxy serveru.</translation>
 <translation id="4464826014807964867">Weby s informacemi od vaší organizace</translation>
-<translation id="4466881336512663640">Změny ve formuláři budou ztraceny. Opravdu chcete pokračovat?</translation>
 <translation id="4476953670630786061">Tento formulář není zabezpečený. Automatické vyplňování bylo vypnuto.</translation>
 <translation id="4477350412780666475">Další skladba</translation>
 <translation id="4482953324121162758">Tento web se nebude překládat.</translation>
@@ -1281,7 +1280,6 @@
 <translation id="5785756445106461925">Tato stránka obsahuje ještě další nezabezpečené zdroje. Tyto zdroje budou během přenosu moci zobrazit jiní uživatelé a případní útočníci je mohou upravit a změnit tak vzhled stránky.</translation>
 <translation id="5786044859038896871">Chcete vyplnit informace o kartě?</translation>
 <translation id="578633867165174378">Chrome zjistil, že právě použité heslo bylo vyzrazeno při porušení zabezpečení údajů. Doporučujeme vám ihned toto heslo změnit.</translation>
-<translation id="5798290721819630480">Zahodit změny?</translation>
 <translation id="5803412860119678065">Chcete vyplnit informace o kartě <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Oprávnění</translation>
 <translation id="5804427196348435412">Používat zařízení NFC</translation>
@@ -1441,7 +1439,6 @@
 <translation id="6428450836711225518">Ověření telefonního čísla</translation>
 <translation id="6433490469411711332">Upravit kontaktní údaje</translation>
 <translation id="6433595998831338502">Web <ph name="HOST_NAME" /> odmítl připojení.</translation>
-<translation id="6434309073475700221">Zahodit</translation>
 <translation id="6440503408713884761">Ignorováno</translation>
 <translation id="6443406338865242315">Která rozšíření a pluginy máte nainstalované</translation>
 <translation id="6446163441502663861">Kahu (obálka)</translation>
@@ -1697,7 +1694,6 @@
 <translation id="7481312909269577407">Vpřed</translation>
 <translation id="7485870689360869515">Nebyla nalezena žádná data.</translation>
 <translation id="7495528107193238112">Tento obsah je blokován. Požádejte vlastníka webu, aby tento problém vyřešil.</translation>
-<translation id="7498234416455752244">Pokračovat v úpravách</translation>
 <translation id="7503664977220660814">Právě jste své heslo zadali na klamavém webu. Chromium doporučuje zkontrolovat uložená hesla pro weby <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> a další weby, na nichž toto heslo používáte.</translation>
 <translation id="7508255263130623398">Vrácené ID zařízení pro zásady je prázdné nebo neodpovídá aktuálnímu ID zařízení</translation>
 <translation id="7508870219247277067">Žlutozelená</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb
index f6b28c6..ec9f465 100644
--- a/components/strings/components_strings_da.xtb
+++ b/components/strings/components_strings_da.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">Brug af en proxy er deaktiveret, men en eksplicit proxykonfiguration er angivet.</translation>
 <translation id="4464826014807964867">Websites med oplysninger fra din organisation</translation>
-<translation id="4466881336512663640">Du mister eventuelle formularændringer. Er du sikker på, at du vil fortsætte?</translation>
 <translation id="4476953670630786061">Denne formular er ikke sikker. Autofyld er blevet deaktiveret.</translation>
 <translation id="4477350412780666475">Næste nummer</translation>
 <translation id="4482953324121162758">Dette website kan ikke oversættes.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">Desuden indeholder denne side andre ressourcer, som ikke er sikre. Disse ressourcer kan ses af andre under overførslen og kan ændres af en hacker, så siden ser anderledes ud.</translation>
 <translation id="5786044859038896871">Skal dine kortoplysninger udfyldes?</translation>
 <translation id="578633867165174378">Chrome har fundet den adgangskode, du netop har brugt, i forbindelse med et brud på datasikkerheden. Vi anbefaler, at du ændrer adgangskoden med det samme.</translation>
-<translation id="5798290721819630480">Vil du kassere ændringerne?</translation>
 <translation id="5803412860119678065">Skal <ph name="CARD_DETAIL" /> udfyldes?</translation>
 <translation id="5804241973901381774">Tilladelser</translation>
 <translation id="5804427196348435412">Brug NFC-enheder</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">Bekræft dit telefonnummer</translation>
 <translation id="6433490469411711332">Rediger kontaktoplysninger</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> nægtede at oprette forbindelse.</translation>
-<translation id="6434309073475700221">Kassér</translation>
 <translation id="6440503408713884761">Ignoreret</translation>
 <translation id="6443406338865242315">Hvilke udvidelser og plugins, du har installeret</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">Frem</translation>
 <translation id="7485870689360869515">Der blev ikke fundet nogen data.</translation>
 <translation id="7495528107193238112">Dette indhold er blokeret. Kontakt ejeren af websitet for at løse problemet.</translation>
-<translation id="7498234416455752244">Fortsæt redigering</translation>
 <translation id="7503664977220660814">Du har lige angivet din adgangskode på et vildledende website. Chromium anbefaler, at du straks tjekker dine gemte adgangskoder til <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> og andre websites, hvor du bruger denne adgangskode.</translation>
 <translation id="7508255263130623398">Det returnerede enheds-id for politikken er tomt eller stemmer ikke overens med det nuværende enheds-id</translation>
 <translation id="7508870219247277067">Avocadogrøn</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb
index 26a7b29..a381fca 100644
--- a/components/strings/components_strings_de.xtb
+++ b/components/strings/components_strings_de.xtb
@@ -218,6 +218,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706954506755087368">{1,plural, =1{Dieser Server konnte nicht beweisen, dass er <ph name="DOMAIN" /> ist. Sein Sicherheitszertifikat gilt vermutlich erst ab morgen. Mögliche Gründe sind eine fehlerhafte Konfiguration oder ein Angreifer, der Ihre Verbindung abfängt.}other{Dieser Server konnte nicht beweisen, dass er <ph name="DOMAIN" /> ist. Sein Sicherheitszertifikat gilt vermutlich erst in # Tagen. Mögliche Gründe sind eine fehlerhafte Konfiguration oder ein Angreifer, der Ihre Verbindung abfängt.}}</translation>
 <translation id="1710259589646384581">Betriebssystem</translation>
+<translation id="1711234383449478798">Ignoriert, weil <ph name="POLICY_NAME" /> nicht auf <ph name="VALUE" /> festgelegt ist.</translation>
 <translation id="1712552549805331520"><ph name="URL" /> möchte Daten dauerhaft auf Ihrem lokalen Computer speichern</translation>
 <translation id="1713628304598226412">Fach 2</translation>
 <translation id="1715874602234207">F</translation>
@@ -929,7 +930,6 @@
 <translation id="4435702339979719576">Postkarte)</translation>
 <translation id="443673843213245140">Die Proxy-Nutzung ist deaktiviert, es ist jedoch eine explizite Proxy-Konfiguration festgelegt.</translation>
 <translation id="4464826014807964867">Websites mit Informationen Ihrer Organisation</translation>
-<translation id="4466881336512663640">Änderungen im Formular gehen verloren. Möchten Sie den Vorgang wirklich fortsetzen?</translation>
 <translation id="4476953670630786061">Dieses Formular ist nicht sicher. Die Funktion „Automatisches Ausfüllen“ wurde deaktiviert.</translation>
 <translation id="4477350412780666475">Nächster Titel</translation>
 <translation id="4482953324121162758">Diese Website wird nicht übersetzt.</translation>
@@ -1283,7 +1283,6 @@
 <translation id="5785756445106461925">Außerdem enthält diese Seite andere, nicht sichere Ressourcen. Diese Ressourcen können während der Übertragung von anderen Nutzern angezeigt und von Angreifern bearbeitet werden, die das Layout der Seite verändern.</translation>
 <translation id="5786044859038896871">Möchten Sie Ihre Kreditkarteninformationen eingeben?</translation>
 <translation id="578633867165174378">Chrome hat das Passwort, das Sie gerade verwendet haben, in einer Datenpanne gefunden. Wie empfehlen Ihnen, dieses Passwort jetzt zu ändern.</translation>
-<translation id="5798290721819630480">Änderungen verwerfen?</translation>
 <translation id="5803412860119678065">Möchten Sie die Daten Ihrer <ph name="CARD_DETAIL" /> eingeben?</translation>
 <translation id="5804241973901381774">Berechtigungen</translation>
 <translation id="5804427196348435412">NFC-Geräte verwenden</translation>
@@ -1444,7 +1443,6 @@
 <translation id="6428450836711225518">Telefonnummer bestätigen</translation>
 <translation id="6433490469411711332">Kontaktdaten bearbeiten</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> hat die Verbindung abgelehnt.</translation>
-<translation id="6434309073475700221">Verwerfen</translation>
 <translation id="6440503408713884761">Ignoriert</translation>
 <translation id="6443406338865242315">Welche Erweiterungen und Plug-ins Sie installiert haben</translation>
 <translation id="6446163441502663861">Kahu (Umschlag)</translation>
@@ -1701,7 +1699,6 @@
 <translation id="7481312909269577407">Vorwärts</translation>
 <translation id="7485870689360869515">Keine Daten gefunden</translation>
 <translation id="7495528107193238112">Dieser Inhalt ist blockiert. Setzen Sie sich mit dem Websiteinhaber in Verbindung, um das Problem zu beheben.</translation>
-<translation id="7498234416455752244">Weiter bearbeiten</translation>
 <translation id="7503664977220660814">Sie haben Ihr Passwort gerade auf einer verdächtigen Seite eingegeben. Chromium empfiehlt, Ihre gespeicherten Passwörter für <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> und alle anderen Websites, auf denen Sie dieses Passwort verwenden, zu prüfen.</translation>
 <translation id="7508255263130623398">Zurückgegebene Geräte-ID der Richtlinie ist leer oder entspricht nicht der aktuellen Geräte-ID</translation>
 <translation id="7508870219247277067">Avocadogrün</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb
index b752cd1a..9781105 100644
--- a/components/strings/components_strings_el.xtb
+++ b/components/strings/components_strings_el.xtb
@@ -945,7 +945,6 @@
 <translation id="4435702339979719576">Ταχυδρομική κάρτα)</translation>
 <translation id="443673843213245140">Η χρήση ενός διακομιστή μεσολάβησης είναι απενεργοποιημένη, αλλά έχει καθοριστεί μια ρητή διαμόρφωση διακομιστή μεσολάβησης.</translation>
 <translation id="4464826014807964867">Ιστότοποι με πληροφορίες από τον οργανισμό σας</translation>
-<translation id="4466881336512663640">Οι αλλαγές που πραγματοποιήθηκαν στη φόρμα θα χαθούν. Είστε βέβαιοι ότι θέλετε να συνεχίσετε;</translation>
 <translation id="4476953670630786061">Αυτή η φόρμα δεν είναι ασφαλής. Η αυτόματη συμπλήρωση έχει απενεργοποιηθεί.</translation>
 <translation id="4477350412780666475">Επόμενο κομμάτι</translation>
 <translation id="4482953324121162758">Αυτός ο ιστότοπος δεν θα μεταφραστεί.</translation>
@@ -1301,7 +1300,6 @@
 <translation id="5785756445106461925">Επίσης, αυτή η σελίδα περιέχει άλλους πόρους, οι οποίοι δεν είναι ασφαλείς. Αυτοί οι πόροι μπορούν να προβληθούν από άλλους χρήστες κατά τη μετάβαση και μπορούν να τροποποιηθούν από έναν εισβολέα ώστε να αλλάξει η εμφάνιση της σελίδας.</translation>
 <translation id="5786044859038896871">Θέλετε να συμπληρωθούν τα στοιχεία της κάρτας σας;</translation>
 <translation id="578633867165174378">Το Chrome εντόπισε σε μια παραβίαση δεδομένων τον κωδικό πρόσβασης που μόλις χρησιμοποιήσατε. Συνιστούμε να αλλάξετε άμεσα αυτόν τον κωδικό πρόσβασης.</translation>
-<translation id="5798290721819630480">Απόρριψη αλλαγών;</translation>
 <translation id="5803412860119678065">Θέλετε να συμπληρωθούν τα στοιχεία της κάρτας <ph name="CARD_DETAIL" />;</translation>
 <translation id="5804241973901381774">Άδειες</translation>
 <translation id="5804427196348435412">Χρήση συσκευών NFC</translation>
@@ -1462,7 +1460,6 @@
 <translation id="6428450836711225518">Επαλήθευση του αριθμού τηλεφώνου σας</translation>
 <translation id="6433490469411711332">Επεξεργασία στοιχείων επαφής</translation>
 <translation id="6433595998831338502">Ο κεντρικός υπολογιστής <ph name="HOST_NAME" /> απέρριψε τη σύνδεση.</translation>
-<translation id="6434309073475700221">Απόρριψη</translation>
 <translation id="6440503408713884761">Αγνοείται</translation>
 <translation id="6443406338865242315">Ποιες επεκτάσεις και προσθήκες έχετε εγκαταστήσει</translation>
 <translation id="6446163441502663861">Kahu (Φάκελος)</translation>
@@ -1719,7 +1716,6 @@
 <translation id="7481312909269577407">Προώθηση</translation>
 <translation id="7485870689360869515">Δεν βρέθηκαν δεδομένα</translation>
 <translation id="7495528107193238112">Αυτό το περιεχόμενο είναι αποκλεισμένο. Επικοινωνήστε με τον κάτοχο του ιστοτόπου για να διορθώσετε το πρόβλημα.</translation>
-<translation id="7498234416455752244">Συνέχιση επεξεργασίας</translation>
 <translation id="7503664977220660814">Μόλις καταχωρίσατε τον κωδικό πρόσβασής σας σε έναν παραπλανητικό ιστότοπο. Το Chromium συνιστά να ελέγξετε τους αποθηκευμένους κωδικούς πρόσβασής σας για τους ιστοτόπους <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> και τους άλλους ιστοτόπους όπου χρησιμοποιείτε αυτόν τον κωδικό πρόσβασης τώρα.</translation>
 <translation id="7508255263130623398">Η εμφανιζόμενη συσκευή πολιτικής είναι κενή ή δεν αντιστοιχεί στο τρέχον αναγνωριστικό συσκευής</translation>
 <translation id="7508870219247277067">Πράσινο αβοκάντο</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb
index 5b122f6..9e2a11d 100644
--- a/components/strings/components_strings_en-GB.xtb
+++ b/components/strings/components_strings_en-GB.xtb
@@ -942,7 +942,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">Use of a proxy is disabled but an explicit proxy configuration is specified.</translation>
 <translation id="4464826014807964867">Websites with info from your organisation</translation>
-<translation id="4466881336512663640">Form changes will be lost. Are you sure that you want to continue?</translation>
 <translation id="4476953670630786061">This form is not secure. Auto-fill has been turned off.</translation>
 <translation id="4477350412780666475">Next track</translation>
 <translation id="4482953324121162758">This site will not be translated.</translation>
@@ -1296,7 +1295,6 @@
 <translation id="5785756445106461925">Further, this page includes other resources which are not secure. These resources can be viewed by others while in transit, and can be modified by an attacker to change the look of the page.</translation>
 <translation id="5786044859038896871">Do you want to fill in your card info?</translation>
 <translation id="578633867165174378">Chrome found the password that you just used in a data breach. We recommend changing this password now.</translation>
-<translation id="5798290721819630480">Discard changes?</translation>
 <translation id="5803412860119678065">Do you want to fill in your <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Permissions</translation>
 <translation id="5804427196348435412">Use NFC devices</translation>
@@ -1457,7 +1455,6 @@
 <translation id="6428450836711225518">Verifying your phone number</translation>
 <translation id="6433490469411711332">Edit contact info</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> refused to connect.</translation>
-<translation id="6434309073475700221">Discard</translation>
 <translation id="6440503408713884761">Ignored</translation>
 <translation id="6443406338865242315">Which extensions and plug-ins you have installed</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1714,7 +1711,6 @@
 <translation id="7481312909269577407">Forward</translation>
 <translation id="7485870689360869515">No data found.</translation>
 <translation id="7495528107193238112">This content is blocked. Contact the site owner to fix the issue.</translation>
-<translation id="7498234416455752244">Keep editing</translation>
 <translation id="7503664977220660814">You just entered your password on a deceptive site. Chromium recommends checking your saved passwords for <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> and other sites where you use this password now.</translation>
 <translation id="7508255263130623398">Returned policy device ID is empty or doesn't match current device ID</translation>
 <translation id="7508870219247277067">Avocado green</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb
index ce0f453..70aa58f 100644
--- a/components/strings/components_strings_es-419.xtb
+++ b/components/strings/components_strings_es-419.xtb
@@ -933,7 +933,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">Se inhabilitó el uso de un proxy, pero se especificó una configuración explícita de proxy.</translation>
 <translation id="4464826014807964867">Sitios web con información de tu organización</translation>
-<translation id="4466881336512663640">Se perderán los cambios del formulario. ¿Confirmas que deseas continuar?</translation>
 <translation id="4476953670630786061">Este formulario no es seguro. Se desactivó la función Autocompletar.</translation>
 <translation id="4477350412780666475">Siguiente pista</translation>
 <translation id="4482953324121162758">Este sitio no se traducirá.</translation>
@@ -1287,7 +1286,6 @@
 <translation id="5785756445106461925">Además, esta página incluye otros recursos que no son seguros. Otras personas pueden ver estos recursos mientras se encuentran en tránsito, y un atacante puede modificarlos para cambiar la apariencia de la página.</translation>
 <translation id="5786044859038896871">¿Deseas llenar los campos con la información de tu tarjeta?</translation>
 <translation id="578633867165174378">Chrome encontró la contraseña que acabas de usar en una violación de la seguridad de los datos. Te recomendamos cambiar la contraseña ahora.</translation>
-<translation id="5798290721819630480">¿Descartas los cambios?</translation>
 <translation id="5803412860119678065">¿Deseas llenar los campos con la información de tu tarjeta <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Permisos</translation>
 <translation id="5804427196348435412">Usar dispositivos con NFC</translation>
@@ -1448,7 +1446,6 @@
 <translation id="6428450836711225518">Verifica tu número de teléfono</translation>
 <translation id="6433490469411711332">Editar la información de contacto</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> rechazó la conexión.</translation>
-<translation id="6434309073475700221">Descartar</translation>
 <translation id="6440503408713884761">Ignorada</translation>
 <translation id="6443406338865242315">Las extensiones y complementos que instalaste</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1705,7 +1702,6 @@
 <translation id="7481312909269577407">Reenviar</translation>
 <translation id="7485870689360869515">No se encontró ningún dato.</translation>
 <translation id="7495528107193238112">Este contenido está bloqueado. Comunícate con el propietario del sitio para solucionar el problema.</translation>
-<translation id="7498234416455752244">Seguir editando</translation>
 <translation id="7503664977220660814">Ingresaste tu contraseña en un sitio engañoso. Chromium te recomienda revisar las contraseñas guardadas para <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> y otros sitios donde uses esta contraseña.</translation>
 <translation id="7508255263130623398">El ID de dispositivo de la política que se muestra está vacío o no coincide con el ID de dispositivo actual</translation>
 <translation id="7508870219247277067">Verde aguacate</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb
index 688109a..db077a3 100644
--- a/components/strings/components_strings_es.xtb
+++ b/components/strings/components_strings_es.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">Se ha inhabilitado el uso de un servidor proxy, pero se han especificado ajustes de proxy explícitos.</translation>
 <translation id="4464826014807964867">Sitios web con información de tu organización</translation>
-<translation id="4466881336512663640">Se perderán los cambios realizados en el formulario. ¿Seguro que quieres continuar?</translation>
 <translation id="4476953670630786061">Este formulario no es seguro. Autocompletar se ha desactivado.</translation>
 <translation id="4477350412780666475">Pista siguiente</translation>
 <translation id="4482953324121162758">Este sitio web no se traducirá.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">Además, esta página incluye otros recursos que no son seguros. Otros usuarios pueden acceder a estos recursos mientras están en circulación y un atacante puede modificarlos para cambiar el aspecto de la página.</translation>
 <translation id="5786044859038896871">¿Quieres rellenar la información de la tarjeta?</translation>
 <translation id="578633867165174378">Chrome ha detectado que la contraseña que acabas de usar se ha visto expuesta en una quiebra de seguridad de datos. Te recomendamos que la cambies ahora.</translation>
-<translation id="5798290721819630480">¿Descartar cambios?</translation>
 <translation id="5803412860119678065">¿Quieres rellenar la información de <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Permisos</translation>
 <translation id="5804427196348435412">Usar dispositivos NFC</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">Verifica tu número de teléfono</translation>
 <translation id="6433490469411711332">Editar información de contacto</translation>
 <translation id="6433595998831338502">La página <ph name="HOST_NAME" /> ha rechazado la conexión.</translation>
-<translation id="6434309073475700221">Descartar</translation>
 <translation id="6440503408713884761">Ignorada</translation>
 <translation id="6443406338865242315">Qué extensiones y complementos tienes instalados</translation>
 <translation id="6446163441502663861">Kahu (sobre)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">Adelante</translation>
 <translation id="7485870689360869515">No se han encontrado datos.</translation>
 <translation id="7495528107193238112">Este contenido está bloqueado. Para solucionar el problema, ponte en contacto con el propietario del sitio web.</translation>
-<translation id="7498234416455752244">Seguir editando</translation>
 <translation id="7503664977220660814">Acabas de escribir tu contraseña en un sitio web engañoso. Chromium te recomienda que compruebes las contraseñas que has guardado en <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> y otros sitios en los que uses esta contraseña.</translation>
 <translation id="7508255263130623398">El ID de dispositivo de política devuelto está vacío o no coincide con el ID de dispositivo actual</translation>
 <translation id="7508870219247277067">Verde aguacate</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb
index fc962a6..53144a6 100644
--- a/components/strings/components_strings_et.xtb
+++ b/components/strings/components_strings_et.xtb
@@ -942,7 +942,6 @@
 <translation id="4435702339979719576">Postkaart)</translation>
 <translation id="443673843213245140">Puhverserveri kasutamine on keelatud, kuid määratud on ka konkreetne puhverserveri konfigureerimine.</translation>
 <translation id="4464826014807964867">Teie organisatsiooni teabega veebisaidid</translation>
-<translation id="4466881336512663640">Vormil tehtud muudatused lähevad kaotsi. Kas soovite kindlasti jätkata?</translation>
 <translation id="4476953670630786061">See vorm pole turvaline. Automaattäide on välja lülitatud.</translation>
 <translation id="4477350412780666475">Järgmine lugu</translation>
 <translation id="4482953324121162758">Seda saiti ei tõlgita.</translation>
@@ -1296,7 +1295,6 @@
 <translation id="5785756445106461925">Lisaks sisaldab see leht teisi ressursse, mis pole turvalised. Edastamise ajal võivad ressursse vaadata ka teised ja ründajad saavad lehe välimuse muutmiseks ressursse muuta.</translation>
 <translation id="5786044859038896871">Kas soovite sisestada oma kaarditeabe?</translation>
 <translation id="578633867165174378">Chrome leidis äsja kasutatud parooli andmetega seotud rikkumisest. Soovitame parooli kohe muuta.</translation>
-<translation id="5798290721819630480">Kas soovite muudatustest loobuda?</translation>
 <translation id="5803412860119678065">Kas soovite sisestada kirje <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Load</translation>
 <translation id="5804427196348435412">NFC-seadmete kasutamine</translation>
@@ -1457,7 +1455,6 @@
 <translation id="6428450836711225518">Kinnitage oma telefoninumber</translation>
 <translation id="6433490469411711332">Kontaktandmete muutmine</translation>
 <translation id="6433595998831338502">Host <ph name="HOST_NAME" /> keeldus ühendamast.</translation>
-<translation id="6434309073475700221">Loobu</translation>
 <translation id="6440503408713884761">Eiras</translation>
 <translation id="6443406338865242315">Millised laiendused ja pistikprogrammid olete installinud</translation>
 <translation id="6446163441502663861">Kahu (ümbrik)</translation>
@@ -1714,7 +1711,6 @@
 <translation id="7481312909269577407">Edasta</translation>
 <translation id="7485870689360869515">Andmeid ei leitud.</translation>
 <translation id="7495528107193238112">See sisu on blokeeritud. Probleemi lahendamiseks võtke ühendust saidi omanikuga.</translation>
-<translation id="7498234416455752244">Jätka muutmist</translation>
 <translation id="7503664977220660814">Sisestasite äsja oma parooli kahtlasele saidile. Chromium soovitab teil salvestatud paroole kontrollida saitide <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ja muude saitide puhul, kus praegu seda parooli kasutate.</translation>
 <translation id="7508255263130623398">Tagastatud reegli seadme-ID on tühi või ei kattu praeguse seadme-ID-ga</translation>
 <translation id="7508870219247277067">Avokaadoroheline</translation>
diff --git a/components/strings/components_strings_eu.xtb b/components/strings/components_strings_eu.xtb
index 9040eb9..22690d0 100644
--- a/components/strings/components_strings_eu.xtb
+++ b/components/strings/components_strings_eu.xtb
@@ -928,7 +928,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">Proxya erabiltzeko aukera desgaitu da, baina proxy-konfigurazio esplizitua zehaztu da.</translation>
 <translation id="4464826014807964867">Zure erakundeari buruzko informazioa duten webguneak</translation>
-<translation id="4466881336512663640">Inprimakiko aldaketak galdu egingo dira. Ziur aurrera egin nahi duzula?</translation>
 <translation id="4476953670630786061">Inprimaki hau ez da segurua. Desaktibatu egin da automatikoki betetzeko aukera.</translation>
 <translation id="4477350412780666475">Hurrengo pista</translation>
 <translation id="4482953324121162758">Webgune hau ez da itzuliko.</translation>
@@ -1282,7 +1281,6 @@
 <translation id="5785756445106461925">Gainera, orri honetan seguruak ez diren beste baliabide batzuk daude. Bidean dauden bitartean, beste pertsonek baliabide horiek ikus ditzakete eta erasotzaileek aldatu egin ditzakete orriaren portaera aldatzeko.</translation>
 <translation id="5786044859038896871">Txartelaren datuak betetzea nahi duzu?</translation>
 <translation id="578633867165174378">Chrome-k erabili berri duzun pasahitza aurkitu du datuen isilpekotasunaren urratze batean. Pasahitz hori berehala aldatzea gomendatzen dizugu.</translation>
-<translation id="5798290721819630480">Aldaketak baztertu nahi dituzu?</translation>
 <translation id="5803412860119678065"><ph name="CARD_DETAIL" /> txartelaren datuak betetzea nahi duzu?</translation>
 <translation id="5804241973901381774">Baimenak</translation>
 <translation id="5804427196348435412">Erabili NFC bidezko gailuak</translation>
@@ -1442,7 +1440,6 @@
 <translation id="6428450836711225518">Egiaztatu telefono-zenbakia</translation>
 <translation id="6433490469411711332">Editatu harremanetarako informazioa</translation>
 <translation id="6433595998831338502">Konexioa baztertu du <ph name="HOST_NAME" /> webguneak.</translation>
-<translation id="6434309073475700221">Baztertu</translation>
 <translation id="6440503408713884761">Ez ikusi egin zaio</translation>
 <translation id="6443406338865242315">Instalatuta dauzkazun luzapenak eta pluginak.</translation>
 <translation id="6446163441502663861">Kahu (gutun-azala)</translation>
@@ -1699,7 +1696,6 @@
 <translation id="7481312909269577407">Aurrera</translation>
 <translation id="7485870689360869515">Ez da daturik aurkitu</translation>
 <translation id="7495528107193238112">Eduki hori blokeatuta dago. Jarri harremanetan webgunearen arduradunarekin arazoa konpontzeko.</translation>
-<translation id="7498234416455752244">Jarraitu editatzen</translation>
 <translation id="7503664977220660814">Webgune engainagarri batean idatzi duzu pasahitza. <ph name="WEBSITE_1" /> eta <ph name="WEBSITE_2" /> webguneetarako eta pasahitz hori erabili duzun beste webgune batzuetarako gordetako pasahitzak egiaztatzea gomendatzen dizu Chromium-ek.</translation>
 <translation id="7508255263130623398">Itzuli den gidalerroaren gailu IDa hutsik dago edo ez dator bat gailuaren IDarekin</translation>
 <translation id="7508870219247277067">Ahuakatea</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb
index 4c5d9b56..807a3a5d 100644
--- a/components/strings/components_strings_fa.xtb
+++ b/components/strings/components_strings_fa.xtb
@@ -941,7 +941,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">استفاده از پروکسی غیرفعال است اما یک پیکربندی خاص برای پروکسی تعیین شده است.</translation>
 <translation id="4464826014807964867">وب‌سایت‌های حاوی اطلاعات سازمان شما</translation>
-<translation id="4466881336512663640">تغییرات فرم از بین می‌رود. مطمئن هستید می‌خواهید ادامه دهید؟</translation>
 <translation id="4476953670630786061">این فرم ایمن نیست. تکمیل خودکار خاموش شده است.</translation>
 <translation id="4477350412780666475">آهنگ بعدی</translation>
 <translation id="4482953324121162758">این سایت ترجمه نخواهد شد.</translation>
@@ -1295,7 +1294,6 @@
 <translation id="5785756445106461925">علاوه بر این، این صفحه دارای منابع دیگری است که امن نیستند. دیگران می‌توانند در حین انتقال، این منابع را ببینند و این منابع می‌توانند برای تغییر قفل صفحه، توسط یک مهاجم تغییر داده شوند.</translation>
 <translation id="5786044859038896871">می‌خواهید اطلاعات کارتتان را وارد کنید؟</translation>
 <translation id="578633867165174378">‏Chrome گذرواژه‌ای را که اکنون استفاده کردید در سرقت اطلاعات شبکه پیدا کرده است. توصیه می‌کنیم این گذرواژه را همین حالا تغییر دهید.</translation>
-<translation id="5798290721819630480">از تغییرات صرف‌‌نظر می‌کنید؟</translation>
 <translation id="5803412860119678065">می‌خواهید <ph name="CARD_DETAIL" /> خود را وارد کنید؟</translation>
 <translation id="5804241973901381774">مجوزها</translation>
 <translation id="5804427196348435412">‏استفاده از دستگاه‌های مجهز به NFC</translation>
@@ -1456,7 +1454,6 @@
 <translation id="6428450836711225518">به‌تأیید رساندن شماره تلفن</translation>
 <translation id="6433490469411711332">ویرایش اطلاعات تماس</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> از اتصال خودداری کرد.</translation>
-<translation id="6434309073475700221">صرف‌نظرکردن</translation>
 <translation id="6440503408713884761">نادیده گرفته شد</translation>
 <translation id="6443406338865242315">افزونه‌ها و افزایه‌هایی که نصب کرده‌اید</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1713,7 +1710,6 @@
 <translation id="7481312909269577407">ارسال کردن</translation>
 <translation id="7485870689360869515">هیچ داده‌ای یافت نشد.</translation>
 <translation id="7495528107193238112">این محتوا مسدود شده است. برای برطرف کردن مشکل با مالک سایت تماس بگیرید.</translation>
-<translation id="7498234416455752244">ادامه ویرایش</translation>
 <translation id="7503664977220660814">‏اخیراً گذرواژه‌تان را در سایتی فریب‌کار وارد کرده‌اید. Chromium توصیه می‌کند همین حالا گذرواژه‌های ذخیره‌شده برای <ph name="WEBSITE_1" />، <ph name="WEBSITE_2" />، و سایت‌های دیگری را که در آن‌ها از این گذرواژه استفاده می‌کنید بررسی کنید.</translation>
 <translation id="7508255263130623398">شناسه دستگاه خط‌مشی برگردانده‌شده خالی است یا با شناسه کنونی دستگاه مطابقت ندارد</translation>
 <translation id="7508870219247277067">سبز مایل به زرد</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb
index dc74d8f..52f174d 100644
--- a/components/strings/components_strings_fi.xtb
+++ b/components/strings/components_strings_fi.xtb
@@ -944,7 +944,6 @@
 <translation id="4435702339979719576">Postikortti</translation>
 <translation id="443673843213245140">Välityspalvelinta ei saa käyttää, mutta erilliset välityspalvelimen asetukset on määritetty.</translation>
 <translation id="4464826014807964867">Verkkosivustot, joilla on tietoa organisaatiostasi</translation>
-<translation id="4466881336512663640">Lomakkeen muutokset menetetään. Haluatko varmasti jatkaa?</translation>
 <translation id="4476953670630786061">Tämä lomake ei ole suojattu. Automaattinen täyttö on laitettu pois päältä.</translation>
 <translation id="4477350412780666475">Seuraava kappale</translation>
 <translation id="4482953324121162758">Tätä sivustoa ei käännetä.</translation>
@@ -1298,7 +1297,6 @@
 <translation id="5785756445106461925">Tällä sivulla on kuitenkin muita osia, jotka eivät ole suojattuja. Muut voivat tarkastella näitä osia siirron aikana, ja hyökkääjä voi muuttaa sivun ulkoasua muokkaamalla näitä osia.</translation>
 <translation id="5786044859038896871">Täytetäänkö kortin tiedot?</translation>
 <translation id="578633867165174378">Chrome löysi juuri käyttämäsi salasanan tietosuojaloukkauksesta. Suosittelemme vaihtamaan tämän salasanan heti.</translation>
-<translation id="5798290721819630480">Hylätäänkö muutokset?</translation>
 <translation id="5803412860119678065">Täytetäänkö kortin <ph name="CARD_DETAIL" /> tiedot?</translation>
 <translation id="5804241973901381774">Luvat</translation>
 <translation id="5804427196348435412">Käytä NFC-laitteita</translation>
@@ -1459,7 +1457,6 @@
 <translation id="6428450836711225518">Vahvista puhelinnumerosi</translation>
 <translation id="6433490469411711332">Muokkaa yhteystietoja</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> kieltäytyi muodostamasta yhteyttä.</translation>
-<translation id="6434309073475700221">Hylkää</translation>
 <translation id="6440503408713884761">Ohitettu</translation>
 <translation id="6443406338865242315">Asentamasi laajennukset</translation>
 <translation id="6446163441502663861">Kahu (kirjekuori)</translation>
@@ -1716,7 +1713,6 @@
 <translation id="7481312909269577407">Seuraava</translation>
 <translation id="7485870689360869515">Tietoja ei löydy.</translation>
 <translation id="7495528107193238112">Tämä sisältö on estetty. Pyydä sivuston omistajalta apua ongelman korjaamiseen.</translation>
-<translation id="7498234416455752244">Jatka muokkausta</translation>
 <translation id="7503664977220660814">Lisäsit juuri salasanasi petolliselle sivustolle. Chromium suosittelee tarkistamaan näihin tallentamasi salasanat: <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ja muut sivustot, joilla käytät salasanaa tällä hetkellä.</translation>
 <translation id="7508255263130623398">Palautettu käytännön laitetunnus on tyhjä tai ei vastaa nykyistä laitetunnusta.</translation>
 <translation id="7508870219247277067">Avokadonvihreä</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb
index 639ea6dd..396b10c9 100644
--- a/components/strings/components_strings_fil.xtb
+++ b/components/strings/components_strings_fil.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">Hindi pinagana ang paggamit ng isang proxy ngunit tinutukoy ang isang tahasang configuration ng proxy.</translation>
 <translation id="4464826014807964867">Mga website na may impormasyon mula sa iyong organisasyon</translation>
-<translation id="4466881336512663640">Mawawala ang mga pagbabago sa form. Sigurado ka bang gusto mong magpatuloy?</translation>
 <translation id="4476953670630786061">Hindi secure ang form na ito. Na-off ang autofill.</translation>
 <translation id="4477350412780666475">Susunod na Track</translation>
 <translation id="4482953324121162758">Hindi ita-translate ang site na ito.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">Bukod pa rito, ang page na ito ay may iba pang mga mapagkukunang hindi secure. Makikita ng iba ang mga mapagkukunang ito habang ipinadadala, at maaaring baguhin ng isang umaatake upang baguhin ang hitsura ng page.</translation>
 <translation id="5786044859038896871">Gusto mo bang ilagay ang impormasyon ng iyong card?</translation>
 <translation id="578633867165174378">Nakita ng Chrome sa isang paglabag sa data ang password na kakagamit mo lang. Inirerekomenda naming palitan na ngayon ang password na ito.</translation>
-<translation id="5798290721819630480">I-discard ang mga pagbabago?</translation>
 <translation id="5803412860119678065">Gusto mo bang ilagay ang iyong <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Mga Pahintulot</translation>
 <translation id="5804427196348435412">Gumamit ng mga NFC device</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">I-verify ang iyong numero ng telepono</translation>
 <translation id="6433490469411711332">I-edit ang impormasyon sa pakikipag-ugnayan</translation>
 <translation id="6433595998831338502">Tumangging kumonekta ang <ph name="HOST_NAME" />.</translation>
-<translation id="6434309073475700221">I-discard</translation>
 <translation id="6440503408713884761">Binalewala</translation>
 <translation id="6443406338865242315">Aling mga extension at plugin ang na-install mo</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">Sumulong</translation>
 <translation id="7485870689360869515">Walang nahanap na data.</translation>
 <translation id="7495528107193238112">Naka-block ang content na ito. Makipag-ugnayan sa may-ari ng site para maayos ang isyu.</translation>
-<translation id="7498234416455752244">Magpatuloy sa pag-edit</translation>
 <translation id="7503664977220660814">Kakalagay mo lang ng iyong password sa isang mapanlinlang na site. Inirerekomenda ng Chromium na suriin mo ngayon ang iyong mga naka-save na password para sa <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />, at iba pang site kung saan mo ginagamit ang password na ito.</translation>
 <translation id="7508255263130623398">Walang laman ang ibinalik na device id ng patakaran o hindi ito tumutugma sa kasalukuyang device id</translation>
 <translation id="7508870219247277067">Avocado Green</translation>
diff --git a/components/strings/components_strings_fr-CA.xtb b/components/strings/components_strings_fr-CA.xtb
index e63d47b..1108df9 100644
--- a/components/strings/components_strings_fr-CA.xtb
+++ b/components/strings/components_strings_fr-CA.xtb
@@ -932,7 +932,6 @@
 <translation id="4435702339979719576">Carte postale</translation>
 <translation id="443673843213245140">L'utilisation d'un mandataire est désactivée, mais une configuration de mandataire explicite est spécifiée.</translation>
 <translation id="4464826014807964867">Sites Web avec des données fournies par votre organisation</translation>
-<translation id="4466881336512663640">Les changements apportés aux formulaires seront perdus. Voulez-vous vraiment continuer?</translation>
 <translation id="4476953670630786061">Ce formulaire n'est pas sécurisé. Le remplissage automatique a été désactivé.</translation>
 <translation id="4477350412780666475">Chanson suivante</translation>
 <translation id="4482953324121162758">Ce site ne sera pas traduit.</translation>
@@ -1286,7 +1285,6 @@
 <translation id="5785756445106461925">De plus, cette page inclut d'autres ressources qui ne sont pas sécurisées. Ces ressources peuvent être consultées par des tiers pendant leur transfert, et modifiées par un pirate informatique dans le but de changer l’apparence de cette page.</translation>
 <translation id="5786044859038896871">Voulez-vous fournir les renseignements concernant votre carte de crédit?</translation>
 <translation id="578633867165174378">Chrome a trouvé le mot de passe que vous venez juste d'utiliser dans une violation de données. Nous vous recommandons de changer ce mot de passe maintenant.</translation>
-<translation id="5798290721819630480">Supprimer les modifications?</translation>
 <translation id="5803412860119678065">Voulez-vous fournir les renseignements concernant votre carte <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Autorisations</translation>
 <translation id="5804427196348435412">Utiliser des appareils NFC</translation>
@@ -1447,7 +1445,6 @@
 <translation id="6428450836711225518">Vérifier votre numéro de téléphone</translation>
 <translation id="6433490469411711332">Modifier les coordonnées</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> a refusé la connexion.</translation>
-<translation id="6434309073475700221">Supprimer</translation>
 <translation id="6440503408713884761">Ignorée</translation>
 <translation id="6443406338865242315">Les extensions et les plugiciels que vous avez installés</translation>
 <translation id="6446163441502663861">Enveloppe Kahu</translation>
@@ -1704,7 +1701,6 @@
 <translation id="7481312909269577407">Suivant</translation>
 <translation id="7485870689360869515">Aucune donnée trouvée.</translation>
 <translation id="7495528107193238112">Ce contenu est bloqué. Communiquez avec le propriétaire du site pour corriger le problème.</translation>
-<translation id="7498234416455752244">Poursuivre la modification</translation>
 <translation id="7503664977220660814">Vous venez d'entrer votre mot de passe sur un site trompeur. Chromium vous recommande de vérifier vos mots de passe enregistrés pour <ph name="WEBSITE_1" />, pour <ph name="WEBSITE_2" /> et pour tout autre site sur lequel vous utilisez ce mot de passe maintenant.</translation>
 <translation id="7508255263130623398">L'ID d'appareil de la règle renvoyé est vide ou ne correspond pas à l'ID d'appareil actuel</translation>
 <translation id="7508870219247277067">Avocat</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb
index 5ebdfca3..70256c5 100644
--- a/components/strings/components_strings_fr.xtb
+++ b/components/strings/components_strings_fr.xtb
@@ -218,6 +218,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706954506755087368">{1,plural, =1{Impossible de vérifier que ce serveur est bien <ph name="DOMAIN" />, car la date d'émission de son certificat de sécurité est fixée à demain. Cela peut être dû à une mauvaise configuration ou bien à l'interception de votre connexion par un pirate informatique.}one{Impossible de vérifier que ce serveur est bien <ph name="DOMAIN" />, car la date d'émission de son certificat de sécurité est ultérieure de # jour à la date du jour. Cela peut être dû à une mauvaise configuration ou bien à l'interception de votre connexion par un pirate informatique.}other{Impossible de vérifier que ce serveur est bien <ph name="DOMAIN" />, car la date d'émission de son certificat de sécurité est ultérieure de # jours à la date du jour. Cela peut être dû à une mauvaise configuration ou bien à l'interception de votre connexion par un pirate informatique.}}</translation>
 <translation id="1710259589646384581">Système d'exploitation</translation>
+<translation id="1711234383449478798">Ignorée, car <ph name="POLICY_NAME" /> n'est pas définie sur <ph name="VALUE" />.</translation>
 <translation id="1712552549805331520"><ph name="URL" /> souhaite stocker des données de façon permanente sur votre ordinateur local</translation>
 <translation id="1713628304598226412">Bac 2</translation>
 <translation id="1715874602234207">F</translation>
@@ -940,7 +941,6 @@
 <translation id="4435702339979719576">Carte postale)</translation>
 <translation id="443673843213245140">L'utilisation d'un proxy est désactivée, mais une configuration de proxy explicite est spécifiée.</translation>
 <translation id="4464826014807964867">Sites Web avec des infos fournies par votre organisation</translation>
-<translation id="4466881336512663640">Les modifications apportées au formulaire seront perdues. Voulez-vous vraiment continuer ?</translation>
 <translation id="4476953670630786061">Ce formulaire n'est pas sécurisé. La saisie automatique a été désactivée.</translation>
 <translation id="4477350412780666475">Titre suivant</translation>
 <translation id="4482953324121162758">Ce site ne sera pas traduit.</translation>
@@ -1294,7 +1294,6 @@
 <translation id="5785756445106461925">De plus, cette page inclut d'autres ressources qui ne sont pas sécurisées. Ces ressources peuvent être consultées par des tiers pendant leur transfert, et modifiées par un pirate informatique dans le but de changer l'aspect de cette page.</translation>
 <translation id="5786044859038896871">Souhaitez-vous indiquer vos informations de carte de paiement ?</translation>
 <translation id="578633867165174378">Chrome a détecté que votre dernier mot de passe utilisé a été exposé lors d'une violation de données. Nous vous recommandons de le modifier immédiatement.</translation>
-<translation id="5798290721819630480">Supprimer les modifications ?</translation>
 <translation id="5803412860119678065">Souhaitez-vous indiquer les informations "<ph name="CARD_DETAIL" />" ?</translation>
 <translation id="5804241973901381774">Autorisations</translation>
 <translation id="5804427196348435412">Utiliser des appareils NFC</translation>
@@ -1455,7 +1454,6 @@
 <translation id="6428450836711225518">Validez votre numéro de téléphone</translation>
 <translation id="6433490469411711332">Modifier les coordonnées</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> n'autorise pas la connexion.</translation>
-<translation id="6434309073475700221">Supprimer</translation>
 <translation id="6440503408713884761">Ignoré</translation>
 <translation id="6443406338865242315">Les extensions et les plug-ins que vous avez installés</translation>
 <translation id="6446163441502663861">Kahu (enveloppe)</translation>
@@ -1712,7 +1710,6 @@
 <translation id="7481312909269577407">Avancer</translation>
 <translation id="7485870689360869515">Aucune donnée n'a été trouvée.</translation>
 <translation id="7495528107193238112">Ce contenu est bloqué. Pour résoudre le problème, contactez le propriétaire du site.</translation>
-<translation id="7498234416455752244">Poursuivre les modifications</translation>
 <translation id="7503664977220660814">Vous venez de saisir votre mot de passe sur un site trompeur. Chromium vous recommande de vérifier vos mots de passe enregistrés pour <ph name="WEBSITE_1" /> et <ph name="WEBSITE_2" />, ainsi que les autres sites pour lesquels vous utilisez ce mot de passe actuellement.</translation>
 <translation id="7508255263130623398">L'ID d'appareil de la règle renvoyé est vide ou ne correspond pas à l'ID d'appareil actuel.</translation>
 <translation id="7508870219247277067">Vert avocat</translation>
diff --git a/components/strings/components_strings_gl.xtb b/components/strings/components_strings_gl.xtb
index 01206cf4..f4359f3 100644
--- a/components/strings/components_strings_gl.xtb
+++ b/components/strings/components_strings_gl.xtb
@@ -940,7 +940,6 @@
 <translation id="4435702339979719576">Postal)</translation>
 <translation id="443673843213245140">O uso dun proxy está desactivado, pero especifícase unha configuración de proxy explícita.</translation>
 <translation id="4464826014807964867">Sitios web con información da túa organización</translation>
-<translation id="4466881336512663640">Perderanse os cambios que realizases no formulario. Seguro que queres continuar?</translation>
 <translation id="4476953670630786061">Este formulario non é seguro, polo que se desactivou a función de autocompletar.</translation>
 <translation id="4477350412780666475">Pista seguinte</translation>
 <translation id="4482953324121162758">Non se traducirá este sitio.</translation>
@@ -1294,7 +1293,6 @@
 <translation id="5785756445106461925">Ademais, esta páxina inclúe outros recursos que non son seguros. Outros usuarios poden ver estes recursos mentres se desprazan e un atacante pode cambiar o aspecto da páxina.</translation>
 <translation id="5786044859038896871">Queres completar a información da tarxeta de crédito?</translation>
 <translation id="578633867165174378">Chrome atopou o contrasinal que acabas de utilizar entre os datos dunha violación da seguranza dos datos. Recomendámosche que o cambies de inmediato.</translation>
-<translation id="5798290721819630480">Queres descartar os cambios?</translation>
 <translation id="5803412860119678065">Queres completar a información da tarxeta de crédito <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Permisos</translation>
 <translation id="5804427196348435412">Utilizar dispositivos con NFC</translation>
@@ -1455,7 +1453,6 @@
 <translation id="6428450836711225518">Verificar o teu número de teléfono</translation>
 <translation id="6433490469411711332">Editar información de contacto</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> rexeitou a conexión.</translation>
-<translation id="6434309073475700221">Descartar</translation>
 <translation id="6440503408713884761">Política ignorada</translation>
 <translation id="6443406338865242315">As extensións e os complementos que teñas instalados</translation>
 <translation id="6446163441502663861">Kahu (sobre)</translation>
@@ -1712,7 +1709,6 @@
 <translation id="7481312909269577407">Adiante</translation>
 <translation id="7485870689360869515">Non se atoparon datos.</translation>
 <translation id="7495528107193238112">Este contido está bloqueado. Ponte en contacto co propietario do sitio para corrixir o problema.</translation>
-<translation id="7498234416455752244">Seguir editando</translation>
 <translation id="7503664977220660814">Acabas de escribir o teu contrasinal nun sitio enganoso. Chromium recomenda comprobar os contrasinais gardados para <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> e outros sitios nos que esteas a utilizar este contrasinal neste momento.</translation>
 <translation id="7508255263130623398">O código de dispositivo da política está baleiro ou non coincide co código do dispositivo actual</translation>
 <translation id="7508870219247277067">Verde aguacate</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb
index 8ec81f9..041f1dd6 100644
--- a/components/strings/components_strings_gu.xtb
+++ b/components/strings/components_strings_gu.xtb
@@ -218,6 +218,7 @@
 <translation id="1703835215927279855">અક્ષર</translation>
 <translation id="1706954506755087368">{1,plural, =1{આ સર્વર સાબિત કરી શક્યું નથી કે તે <ph name="DOMAIN" /> છે; તેનું સુરક્ષા પ્રમાણપત્ર આવતીકાલથી માનવામાં આવે છે તે પ્રમાણે છે. આ કોઇ ખોટી ગોઠવણીને કારણે થયું હશે અથવા કોઇ હુમલાખોર તમારા કનેક્શનને અટકાવી રહ્યો છે.}one{આ સર્વર સાબિત કરી શક્યું નથી કે તે <ph name="DOMAIN" /> છે; તેનું સુરક્ષા પ્રમાણપત્ર માનવામાં આવે છે તે પ્રમાણે ભવિષ્યમાં # દિવસથી છે. આ કોઇ ખોટી ગોઠવણીને કારણે થયું હશે અથવા કોઇ હુમલાખોર તમારા કનેક્શનને અટકાવી રહ્યો છે.}other{આ સર્વર સાબિત કરી શક્યું નથી કે તે <ph name="DOMAIN" /> છે; તેનું સુરક્ષા પ્રમાણપત્ર માનવામાં આવે છે તે પ્રમાણે ભવિષ્યમાં # દિવસથી છે. આ કોઇ ખોટી ગોઠવણીને કારણે થયું હશે અથવા કોઇ હુમલાખોર તમારા કનેક્શનને અટકાવી રહ્યો છે.}}</translation>
 <translation id="1710259589646384581">OS</translation>
+<translation id="1711234383449478798">અવગણવામાં આવી કારણ કે <ph name="POLICY_NAME" />ને <ph name="VALUE" /> પર સેટ કરેલી નથી.</translation>
 <translation id="1712552549805331520"><ph name="URL" /> તમારા સ્થાનિક કમ્પ્યુટર પર કાયમી ધોરણે ડેટા સ્ટોર કરવા માગે છે</translation>
 <translation id="1713628304598226412">ટ્રે 2</translation>
 <translation id="1715874602234207">F</translation>
@@ -941,7 +942,6 @@
 <translation id="4435702339979719576">પોસ્ટકાર્ડ)</translation>
 <translation id="443673843213245140">પ્રૉક્સીનો ઉપયોગ બંધ કરેલો છે પણ એક સ્પષ્ટ પ્રૉક્સી ગોઠવણીનો ઉલ્લેખ કરેલો છે.</translation>
 <translation id="4464826014807964867">તમારી સંસ્થા દ્વારા પ્રદાન કરવામાં આવેલી માહિતી ધરાવતી વેબસાઇટ</translation>
-<translation id="4466881336512663640">ફોર્મના ફેરફારો ગુમાવશો. શું તમે ખરેખર ચાલુ રાખવા માગો છો?</translation>
 <translation id="4476953670630786061">આ ફોર્મ સુરક્ષિત નથી. ઑટોમૅટિક રીતે ભરવાની સુવિધા બંધ કરવામાં આવી છે.</translation>
 <translation id="4477350412780666475">આગલો ટ્રૅક</translation>
 <translation id="4482953324121162758">આ સાઇટનો અનુવાદ થશે નહીં.</translation>
@@ -1295,7 +1295,6 @@
 <translation id="5785756445106461925">વળી, આ પૃષ્ઠમાં અન્ય એવા સાધનો છે જે સુરક્ષિત નથી. ટ્રાંઝિટમાં હોવા પર અન્ય લોકો દ્વારા આ સાધનો જોઈ શકાય છે અને પૃષ્ઠનો દેખાવ બદલવા માટે હુમલાખોર દ્વારા સંશોધિત કરવામાં આવી શકે છે.</translation>
 <translation id="5786044859038896871">શું તમે તમારી કાર્ડ માહિતી ભરવા માગો છો?</translation>
 <translation id="578633867165174378">Chromeને તમે હમણાં જ ડેટા ઉલ્લંઘનમાં ઉપયોગમાં લીધેલો પાસવર્ડ મળ્યો છે. અમે આ પાસવર્ડ હમણાં જ બદલવાનો સુઝાવ આપીએ છીએ.</translation>
-<translation id="5798290721819630480">ફેરફારો કાઢી નાખીએ?</translation>
 <translation id="5803412860119678065">શું તમે તમારી <ph name="CARD_DETAIL" /> માહિતી ભરવા માગો છો?</translation>
 <translation id="5804241973901381774">પરવાનગીઓ</translation>
 <translation id="5804427196348435412">NFC ડિવાઇસનો ઉપયોગ કરો</translation>
@@ -1456,7 +1455,6 @@
 <translation id="6428450836711225518">તમારો ફોન નંબર ચકાસો</translation>
 <translation id="6433490469411711332">સંપર્ક માહિતીમાં ફેરફાર કરો</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> એ કનેક્ટ કરવાનો ઇનકાર કર્યો.</translation>
-<translation id="6434309073475700221">કાઢી નાખો</translation>
 <translation id="6440503408713884761">અવગણી</translation>
 <translation id="6443406338865242315">તમે કયા એક્સ્ટેંશન અને પ્લગ-ઇન ઇન્સ્ટૉલ કર્યા છે</translation>
 <translation id="6446163441502663861">Kahu (એન્વલપ)</translation>
@@ -1713,7 +1711,6 @@
 <translation id="7481312909269577407">ફોર્વર્ડ કરો</translation>
 <translation id="7485870689360869515">કોઈ ડેટા મળ્યો નથી.</translation>
 <translation id="7495528107193238112">આ કન્ટેન્ટ બ્લૉક કરવામાં આવ્યું છે. સમસ્યાનાં નિરાકરણ માટે, સાઇટના માલિકનો સંપર્ક કરો.</translation>
-<translation id="7498234416455752244">ફેરફાર કરવાનું ચાલુ રાખો</translation>
 <translation id="7503664977220660814">હમણાં જ કોઈ છેતરામણી સાઇટ પર તમે તમારો પાસવર્ડ દાખલ કર્યો. <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> અને હવે તમે આ પાસવર્ડનો જ્યાં ઉપયોગ કરતા હો તે અન્ય સાઇટ પરના તમે સાચવેલા પાસવર્ડ ચેક કરવાનો Chromium સુઝાવ આપે છે.</translation>
 <translation id="7508255263130623398">પરત થયેલું પૉલિસી ડિવાઇસ id ખાલી છે અથવા વર્તમાન ટોકન સાથે મેળ ખાતું નથી</translation>
 <translation id="7508870219247277067">જમરૂખ જેવો લીલો</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb
index 74366b6..bbf7dacf 100644
--- a/components/strings/components_strings_hi.xtb
+++ b/components/strings/components_strings_hi.xtb
@@ -218,7 +218,8 @@
 <translation id="1703835215927279855">लेटर</translation>
 <translation id="1706954506755087368">{1,plural, =1{यह सर्वर प्रमाणित नहीं कर सका कि यह <ph name="DOMAIN" /> है; इसका सुरक्षा प्रमाणपत्र कल से माना जाएगा. ऐसा गलत कॉन्फ़िगरेशन के कारण या किसी आक्रमणकर्ता द्वारा आपके कनेक्शन को बाधित करने के कारण हो सकता है.}one{यह सर्वर प्रमाणित नहीं कर सका कि यह <ph name="DOMAIN" /> है; इसका सुरक्षा प्रमाणपत्र # दिन बाद से माना जाएगा. ऐसा गलत कॉन्फ़िगरेशन के कारण या किसी आक्रमणकर्ता द्वारा आपके कनेक्शन को बाधित करने के कारण हो सकता है.}other{यह सर्वर प्रमाणित नहीं कर सका कि यह <ph name="DOMAIN" /> है; इसका सुरक्षा प्रमाणपत्र # दिन बाद से माना जाएगा. ऐसा गलत कॉन्फ़िगरेशन के कारण या किसी आक्रमणकर्ता द्वारा आपके कनेक्शन को बाधित करने के कारण हो सकता है.}}</translation>
 <translation id="1710259589646384581">OS</translation>
-<translation id="1711234383449478798"><ph name="POLICY_NAME" /> को नज़रअंदाज़ किया गया, क्योंकि यह <ph name="VALUE" /> के लिए सेट नहीं किया गया है.</translation>
+<translation id="1711234383449478798">नज़रअंदाज़ किया गया, क्योंकि
+<ph name="POLICY_NAME" /> को <ph name="VALUE" /> पर सेट नहीं किया गया है.</translation>
 <translation id="1712552549805331520"><ph name="URL" /> आपके स्थानीय कंप्यूटर पर हमेशा के लिए डेटा संग्रहित करना चाहता है</translation>
 <translation id="1713628304598226412">ट्रे 2</translation>
 <translation id="1715874602234207">एफ़</translation>
@@ -940,7 +941,6 @@
 <translation id="4435702339979719576">पोस्टकार्ड)</translation>
 <translation id="443673843213245140">प्रॉक्‍सी का उपयोग अक्षम है लेकिन कोई स्‍पष्ट प्रॉक्‍सी कॉन्फ़िगरेशन दर्ज किया गया है.</translation>
 <translation id="4464826014807964867">ऐसी वेबसाइटें जिनके बारे में आपके संगठन ने जानकारी दी है</translation>
-<translation id="4466881336512663640">फ़ॉर्म में किए गए बदलाव हटा दिए जाएँगे. क्या आप वाकई जारी रखना चाहते हैं?</translation>
 <translation id="4476953670630786061">यह फ़ॉर्म सुरक्षित नहीं है. ऑटोमैटिक भरने की सुविधा बंद कर दी गई है.</translation>
 <translation id="4477350412780666475">अगला ट्रैक</translation>
 <translation id="4482953324121162758">इस साइट का अनुवाद नहीं किया जाएगा.</translation>
@@ -1294,7 +1294,6 @@
 <translation id="5785756445106461925">इसके अतिरिक्त, इस पेज में ऐसे अन्य संसाधन भी शामिल हैं, जो सुरक्षित नहीं हैं. ट्रांज़िट में होने के दौरान ये संसाधन अन्य लोगों द्वारा देखे जा सकते हैं और पेज का स्वरूप बदलने के लिए किसी हमवलावर द्वारा इनमें बदलाव किए जा सकते हैं.</translation>
 <translation id="5786044859038896871">क्या अपनी कार्ड जानकारी भरना चाहते हैं?</translation>
 <translation id="578633867165174378">Chrome के मुताबिक, आपने अभी जो पासवर्ड इस्तेमाल किया है वह लीक हो चुका है. हमारा सुझाव है कि आप इस पासवर्ड को अभी बदल दें.</translation>
-<translation id="5798290721819630480">बदलाव खारिज कर दें?</translation>
 <translation id="5803412860119678065">क्या आप अपनी <ph name="CARD_DETAIL" /> भरना चाहते हैं?</translation>
 <translation id="5804241973901381774">अनुमतियां</translation>
 <translation id="5804427196348435412">NFC डिवाइस इस्तेमाल करें</translation>
@@ -1455,7 +1454,6 @@
 <translation id="6428450836711225518">अपने फ़ोन नंबर की पुष्टि करें</translation>
 <translation id="6433490469411711332">संपर्क जानकारी में बदलाव करें</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> ने कनेक्ट करने से मना कर दिया है.</translation>
-<translation id="6434309073475700221">खारिज करें</translation>
 <translation id="6440503408713884761">अनदेखा किया गया</translation>
 <translation id="6443406338865242315">आपने कौनसे एक्सटेंशन और प्लग इन इंस्टॉल किए हैं</translation>
 <translation id="6446163441502663861">काहू (एन्वेलप)</translation>
@@ -1712,7 +1710,6 @@
 <translation id="7481312909269577407">आगे जाएं</translation>
 <translation id="7485870689360869515">कोई डेटा नहीं मिला</translation>
 <translation id="7495528107193238112">इस कॉन्टेंट को ब्लॉक कर दिया गया है. समस्या को ठीक करने के लिए, साइट के मालिक से संपर्क करें.</translation>
-<translation id="7498234416455752244">बदलाव करना जारी रखें</translation>
 <translation id="7503664977220660814">आपने अभी जिस साइट पर अपना पासवर्ड डाला है वह सुरक्षित नहीं है. क्रोमियम, <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> और उन साइटों पर तुरंत जाकर, सेव किए गए पासवर्ड की जांच करने का सुझाव देता है जिन पर आपने इस पासवर्ड का इस्तेमाल किया है.</translation>
 <translation id="7508255263130623398">वापस लौटाया हुआ नीति डिवाइस आईडी खाली है या उसका मिलान वर्तमान डिवाइस आईडी से नहीं होता है</translation>
 <translation id="7508870219247277067">एवोकैडो हरा</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb
index eae290b..680a2d05 100644
--- a/components/strings/components_strings_hr.xtb
+++ b/components/strings/components_strings_hr.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">Dopisnica)</translation>
 <translation id="443673843213245140">Upotreba proxy poslužitelja onemogućena je, ali određena je izričita konfiguracija proxy poslužitelja.</translation>
 <translation id="4464826014807964867">Web-lokacije s podacima iz vaše organizacije</translation>
-<translation id="4466881336512663640">Izgubit će se promjene koje ste unijeli u obrazac. Jeste li sigurni da želite nastaviti?</translation>
 <translation id="4476953670630786061">Ovaj obrazac nije siguran. Automatsko popunjavanje je isključeno.</translation>
 <translation id="4477350412780666475">Sljedeća pjesma</translation>
 <translation id="4482953324121162758">Ova web-lokacija neće biti prevedena.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">Nadalje, ova stranica sadrži druge resurse koji nisu sigurni. Te resurse mogu vidjeti drugi tijekom prijenosa i napadač ih može izmijeniti kako bi promijenio izgled stranice.</translation>
 <translation id="5786044859038896871">Želite li ispuniti podatke o kartici?</translation>
 <translation id="578633867165174378">Chrome je saznao da je zaporka koju ste upravo upotrijebili otkrivena u povredi podataka. Preporučujemo da odmah promijenite tu zaporku.</translation>
-<translation id="5798290721819630480">Želite li odbaciti izmjene?</translation>
 <translation id="5803412860119678065">Želite li ispuniti podatke o kartici <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Dozvoljeno</translation>
 <translation id="5804427196348435412">koristiti NFC uređaje</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">Potvrdite svoj telefonski broj</translation>
 <translation id="6433490469411711332">Uređivanje podataka za kontakt</translation>
 <translation id="6433595998831338502">Host <ph name="HOST_NAME" /> odbio je povezivanje.</translation>
-<translation id="6434309073475700221">Odbaci</translation>
 <translation id="6440503408713884761">Zanemareno</translation>
 <translation id="6443406338865242315">koja ste proširenja i dodatke instalirali</translation>
 <translation id="6446163441502663861">Kahu (omotnica)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">Naprijed</translation>
 <translation id="7485870689360869515">Nema pronađenih podataka.</translation>
 <translation id="7495528107193238112">Ovaj je sadržaj blokiran. Obratite se vlasniku web-lokacije da biste riješili problem.</translation>
-<translation id="7498234416455752244">Nastavi uređivati</translation>
 <translation id="7503664977220660814">Upravo ste unijeli zaporku na obmanjujućoj web-lokaciji. Chromium preporučuje da odmah provjerite spremljene zaporke za <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> i druge web-lokacije na kojima koristite tu zaporku.</translation>
 <translation id="7508255263130623398">Vraćeni ID uređaja pravila prazan je ili ne odgovara trenutačnom ID-u uređaja</translation>
 <translation id="7508870219247277067">Zelenožuta</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb
index 3294d24..ae64266 100644
--- a/components/strings/components_strings_hu.xtb
+++ b/components/strings/components_strings_hu.xtb
@@ -939,7 +939,6 @@
 <translation id="4435702339979719576">képeslap)</translation>
 <translation id="443673843213245140">A proxy használata le van tiltva, de kifejezett proxykonfiguráció van megadva.</translation>
 <translation id="4464826014807964867">Webhelyek, amelyek a szervezetétől származó adatokkal rendelkeznek</translation>
-<translation id="4466881336512663640">Az űrlapon végzett módosítások elvesznek. Biztosan folytatni szeretné?</translation>
 <translation id="4476953670630786061">Ez az űrlap nem biztonságos. Az automatikus kitöltés funkciót a rendszer kikapcsolta.</translation>
 <translation id="4477350412780666475">Következő szám</translation>
 <translation id="4482953324121162758">Nem fordítjuk le ezt a webhelyet.</translation>
@@ -1293,7 +1292,6 @@
 <translation id="5785756445106461925">Emellett az oldal azonban más forrásokat is tartalmaz, amelyek nem biztonságosak. Ezeket a forrásokat mások is megtekinthetik átvitel közben, és megváltoztatásukkal a támadók módosíthatják az oldal viselkedését.</translation>
 <translation id="5786044859038896871">Ki szeretné tölteni a kártyaadatait?</translation>
 <translation id="578633867165174378">A Chrome észlelte, hogy a most használt jelszava adatvédelmi incidensben volt érintett. Javasoljuk a jelszó azonnali módosítását.</translation>
-<translation id="5798290721819630480">Elveti a módosításokat?</translation>
 <translation id="5803412860119678065">Ki szeretné tölteni <ph name="CARD_DETAIL" /> kártyájának adataival?</translation>
 <translation id="5804241973901381774">Engedélyek</translation>
 <translation id="5804427196348435412">NFC-eszközök használata</translation>
@@ -1454,7 +1452,6 @@
 <translation id="6428450836711225518">Telefonszám ellenőrzése</translation>
 <translation id="6433490469411711332">Kapcsolattartási adatok szerkesztése</translation>
 <translation id="6433595998831338502">A(z) <ph name="HOST_NAME" /> visszautasította a csatlakozást.</translation>
-<translation id="6434309073475700221">Elvetés</translation>
 <translation id="6440503408713884761">Figyelmen kívül hagyva</translation>
 <translation id="6443406338865242315">Ön milyen bővítményeket és beépülő modulokat telepített.</translation>
 <translation id="6446163441502663861">Kahu (boríték)</translation>
@@ -1711,7 +1708,6 @@
 <translation id="7481312909269577407">Előre</translation>
 <translation id="7485870689360869515">Nem található adat.</translation>
 <translation id="7495528107193238112">Ez a tartalom le van tiltva. Vegye fel a kapcsolatot a webhely tulajdonosával a probléma elhárításához.</translation>
-<translation id="7498234416455752244">Szerkesztés folytatása</translation>
 <translation id="7503664977220660814">Megtévesztő webhelyen adta meg jelszavát. A Chromium azt javasolja, hogy azonnal módosítsa jelszavait azokon a webhelyeken, ahol ezt a jelszót használja (pl. <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />).</translation>
 <translation id="7508255263130623398">A visszakapott házirend eszközazonosítója üres, vagy nem felel meg a jelenlegi eszközazonosítónak</translation>
 <translation id="7508870219247277067">Avokádózöld</translation>
diff --git a/components/strings/components_strings_hy.xtb b/components/strings/components_strings_hy.xtb
index 0b6a041..af927cc 100644
--- a/components/strings/components_strings_hy.xtb
+++ b/components/strings/components_strings_hy.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">Պրոքսի-սերվերի օգտագործումն անջատված է, բայց հատկորոշված է ուղղակի կազմաձևում:</translation>
 <translation id="4464826014807964867">Կայքեր՝ ձեր կազմակերպությունից ստացած տեղեկություններով</translation>
-<translation id="4466881336512663640">Ձևում արված բոլոր փոփոխությունները կկորեն: Շարունակե՞լ։</translation>
 <translation id="4476953670630786061">Այս ձևն ապահով չէ։ Ինքնալրացումն անջատվել է։</translation>
 <translation id="4477350412780666475">Հաջորդ կատարումը</translation>
 <translation id="4482953324121162758">Այս կայքը չի թարգմանվի:</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">Բացի այդ, այս էջը պարունակում է այլ ռեսուրսներ, որոնք ապահով չեն: Այս ռեսուրսները տարանցման ժամանակ կարող են դիտվել ուրիշների կողմից և փոփոխվել հարձակվողի կողմից, ինչը կփոխի էջի տեսքը:</translation>
 <translation id="5786044859038896871">Ուզո՞ւմ եք լրացնել ձեր քարտի տվյալները:</translation>
 <translation id="578633867165174378">Chrome-ը հայտնաբերել է, որ գաղտնաբառը, որ հենց նոր օգտագործեցիք, կոտրվել է տվյալների արտահոսքի պատճառով։ Խորհուրդ ենք տալիս անհապաղ փոխել այս գաղտնաբառը։</translation>
-<translation id="5798290721819630480">Հրաժարվե՞լ փոփոխություններից:</translation>
 <translation id="5803412860119678065">Ուզո՞ւմ եք լրացնել ձեր <ph name="CARD_DETAIL" /> քարտի տվյալները:</translation>
 <translation id="5804241973901381774">Թույլտվություններ</translation>
 <translation id="5804427196348435412">Օգտագործել NFC սարքերը</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">Հաստատեք ձեր հեռախոսահամարը</translation>
 <translation id="6433490469411711332">Փոփոխեք կոնտակտային տվյալները</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" />-ը մերժեց կապակցումը:</translation>
-<translation id="6434309073475700221">Հրաժարվել</translation>
 <translation id="6440503408713884761">Անտեսված</translation>
 <translation id="6443406338865242315">Ինչ ընդլայնումներ և փլագիններ եք դուք տեղադրել</translation>
 <translation id="6446163441502663861">Kahu (ծրար)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">Forward</translation>
 <translation id="7485870689360869515">Տվյալներ չեն գտնվել:</translation>
 <translation id="7495528107193238112">Այս բովանդակությունն արգելափակված է։ Խնդիրը վերացնելու համար դիմեք կայքի սեփականատիրոջը։</translation>
-<translation id="7498234416455752244">Շարունակել աշխատանքը</translation>
 <translation id="7503664977220660814">Դուք հենց նոր մուտքագրեցիք ձեր գաղտնաբառը կասկածելի կայքում։ Chromiume-ը խորհուրդ է տալիս ստուգել պահված գաղտնաբառերը <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> և այլ կայքերի համար, որտեղ դուք այժմ օգտագործում եք այս գաղտնաբառը։</translation>
 <translation id="7508255263130623398">Սարքի վերադարձված կանոնի ID-ն դատարկ է կամ չի համապատասխանում ընթացիկ ID-ին</translation>
 <translation id="7508870219247277067">Ավոկադոյի կանաչ</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb
index 4ebe5a8..716ea30 100644
--- a/components/strings/components_strings_id.xtb
+++ b/components/strings/components_strings_id.xtb
@@ -933,7 +933,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">Penggunaan proxy dinonaktifkan tetapi konfigurasi proxy yang eksplisit ditentukan.</translation>
 <translation id="4464826014807964867">Situs dengan info dari organisasi Anda</translation>
-<translation id="4466881336512663640">Perubahan pada formulir akan hilang. Yakin ingin melanjutkan?</translation>
 <translation id="4476953670630786061">Formulir ini tidak aman. Isi otomatis telah dinonaktifkan.</translation>
 <translation id="4477350412780666475">Lagu Berikutnya</translation>
 <translation id="4482953324121162758">Situs ini tidak akan diterjemahkan.</translation>
@@ -1287,7 +1286,6 @@
 <translation id="5785756445106461925">Selain itu, halaman ini berisi sumber daya lainnya yang tidak aman. Sumber daya ini dapat dilihat oleh orang lain saat transit dan dapat dimodifikasi oleh penyerang untuk mengubah tampilan perangkat.</translation>
 <translation id="5786044859038896871">Ingin mengisi informasi kartu?</translation>
 <translation id="578633867165174378">Chrome menemukan sandi yang baru saja Anda gunakan dalam pelanggaran data. Sebaiknya ubah sandi ini sekarang.</translation>
-<translation id="5798290721819630480">Hapus perubahan?</translation>
 <translation id="5803412860119678065">Ingin mengisi <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Izin</translation>
 <translation id="5804427196348435412">Gunakan perangkat NFC</translation>
@@ -1448,7 +1446,6 @@
 <translation id="6428450836711225518">Verifikasi nomor telepon Anda</translation>
 <translation id="6433490469411711332">Edit info kontak</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> menolak untuk tersambung.</translation>
-<translation id="6434309073475700221">Buang</translation>
 <translation id="6440503408713884761">Diabaikan</translation>
 <translation id="6443406338865242315">Ekstensi dan plugin yang telah Anda instal</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1703,7 +1700,6 @@
 <translation id="7481312909269577407">Maju</translation>
 <translation id="7485870689360869515">Tidak ada data yang ditemukan.</translation>
 <translation id="7495528107193238112">Konten ini diblokir. Hubungi pemilik situs untuk memperbaiki masalah.</translation>
-<translation id="7498234416455752244">Lanjut mengedit</translation>
 <translation id="7503664977220660814">Anda baru saja memasukkan sandi ke situs penipuan. Chromium merekomendasikan Anda memeriksa sandi yang disimpan untuk <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />, dan situs lain tempat Anda menggunakan sandi ini sekarang.</translation>
 <translation id="7508255263130623398">ID perangkat kebijakan yang dikembalikan kosong atau tidak cocok dengan ID perangkat saat ini</translation>
 <translation id="7508870219247277067">Hijau Avokad</translation>
diff --git a/components/strings/components_strings_is.xtb b/components/strings/components_strings_is.xtb
index e2e2817..d7c6a78 100644
--- a/components/strings/components_strings_is.xtb
+++ b/components/strings/components_strings_is.xtb
@@ -944,7 +944,6 @@
 <translation id="4435702339979719576">póstkort)</translation>
 <translation id="443673843213245140">Slökkt er á notkun proxy-þjóns en sérstök proxy-stilling er tilgreind.</translation>
 <translation id="4464826014807964867">Vefsvæði með upplýsingar frá þínu fyrirtæki</translation>
-<translation id="4466881336512663640">Breytingar á eyðublaði glatast. Viltu örugglega halda áfram?</translation>
 <translation id="4476953670630786061">Þetta eyðublað er ekki öruggt. Slökkt var á sjálfvirkri útfyllingu.</translation>
 <translation id="4477350412780666475">Næsta lag</translation>
 <translation id="4482953324121162758">Þetta vefsvæði verður ekki þýtt.</translation>
@@ -1298,7 +1297,6 @@
 <translation id="5785756445106461925">Aukinheldur inniheldur þessi síða önnir tilföng sem ekki er hægt að treysta. Þessi tilföng kunna að vera skoðuð af öðrum á meðan þau eru í umferð, og tölvuþrjótur gæti breytt þeim til þess að reyna að breyta útliti síðunnar.</translation>
 <translation id="5786044859038896871">Viltu fylla út upplýsingar um kortið?</translation>
 <translation id="578633867165174378">Chrome fann aðgangsorðið sem þú varst að nota í öryggisbroti. Við mælum með að þessu aðgangsorði verði breytt núna.</translation>
-<translation id="5798290721819630480">Viltu hætta við breytingar?</translation>
 <translation id="5803412860119678065">Viltu fylla út <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Heimildir</translation>
 <translation id="5804427196348435412">Nota NFC-tæki</translation>
@@ -1459,7 +1457,6 @@
 <translation id="6428450836711225518">Staðfestu símanúmerið þitt</translation>
 <translation id="6433490469411711332">Breyta samskiptaupplýsingum</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> neitaði að koma á tengingu.</translation>
-<translation id="6434309073475700221">Fleygja</translation>
 <translation id="6440503408713884761">Hunsað</translation>
 <translation id="6443406338865242315">Hvaða viðbætur þú hefur sett upp</translation>
 <translation id="6446163441502663861">Kahu (umslag)</translation>
@@ -1716,7 +1713,6 @@
 <translation id="7481312909269577407">Áfram</translation>
 <translation id="7485870689360869515">Engin gögn fundust.</translation>
 <translation id="7495528107193238112">Þetta efni er á bannlista. Hafðu samband við eiganda vefsvæðisins til að lagfæra vandamálið.</translation>
-<translation id="7498234416455752244">Halda áfram að breyta</translation>
 <translation id="7503664977220660814">Þú gafst upp aðgangsorðið þitt á svindlsíðu. Chromium mælir með því að þú athugir vistuðu aðgangsorðin þín fyrir <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> og önnur vefsvæði þar sem þú notar þetta aðgangsorð núna.</translation>
 <translation id="7508255263130623398">Tækisauðkenni stefnu sem skilað var er autt eða stemmir ekki við núverandi tækisauðkenni</translation>
 <translation id="7508870219247277067">Lárperugrænn</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb
index 64cf3bc..6c92efa5 100644
--- a/components/strings/components_strings_it.xtb
+++ b/components/strings/components_strings_it.xtb
@@ -940,7 +940,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">L'utilizzo di un proxy è stato disattivato ma è stata specificata una configurazione proxy esplicita.</translation>
 <translation id="4464826014807964867">Siti web con informazioni della tua organizzazione</translation>
-<translation id="4466881336512663640">Le modifiche apportate al modulo andranno perse. Vuoi continuare?</translation>
 <translation id="4476953670630786061">Questo modulo non è sicuro. La compilazione automatica è stata disattivata.</translation>
 <translation id="4477350412780666475">Traccia successiva</translation>
 <translation id="4482953324121162758">Questo sito non verrà tradotto.</translation>
@@ -1294,7 +1293,6 @@
 <translation id="5785756445106461925">Inoltre, questa pagina include altre risorse che non sono sicure. Tali risorse possono essere visualizzate da altri durante il transito dei dati e possono essere modificate da un utente malintenzionato al fine di modificare l'aspetto della pagina.</translation>
 <translation id="5786044859038896871">Vuoi inserire automaticamente i dati della carta?</translation>
 <translation id="578633867165174378">Chrome ha rilevato che la password appena usata è stata esposta a una violazione dei dati. Ti consigliamo di cambiare subito questa password.</translation>
-<translation id="5798290721819630480">Vuoi annullare le modifiche?</translation>
 <translation id="5803412860119678065">Vuoi inserire automaticamente <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Autorizzazioni</translation>
 <translation id="5804427196348435412">Usare i dispositivi NFC</translation>
@@ -1454,7 +1452,6 @@
 <translation id="6428450836711225518">Verifica il numero di telefono</translation>
 <translation id="6433490469411711332">Modifica informazioni di contatto</translation>
 <translation id="6433595998831338502">Connessione negata da <ph name="HOST_NAME" />.</translation>
-<translation id="6434309073475700221">Elimina</translation>
 <translation id="6440503408713884761">Ignorata</translation>
 <translation id="6443406338865242315">Le estensioni e i plug-in che hai installato</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1711,7 +1708,6 @@
 <translation id="7481312909269577407">Avanti</translation>
 <translation id="7485870689360869515">Nessun dato trovato.</translation>
 <translation id="7495528107193238112">Questi contenuti sono bloccati. Contatta il proprietario del sito per risolvere il problema.</translation>
-<translation id="7498234416455752244">Continua modifica</translation>
 <translation id="7503664977220660814">Hai appena inserito la tua password su un sito ingannevole. Chromium ti consiglia di controllare le password salvate per <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> e altri siti su cui utilizzi questa password.</translation>
 <translation id="7508255263130623398">L'ID dispositivo della norma restituito è vuoto o non corrisponde all'ID dispositivo corrente</translation>
 <translation id="7508870219247277067">Verde pisello</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb
index 4a62a35..04cb77e 100644
--- a/components/strings/components_strings_iw.xtb
+++ b/components/strings/components_strings_iw.xtb
@@ -941,7 +941,6 @@
 <translation id="4435702339979719576">Postcard)‎</translation>
 <translation id="443673843213245140">‏השימוש בשרת Proxy הושבת, אך צוינה תצורת שרת Proxy מפורשת.</translation>
 <translation id="4464826014807964867">אתרים שקיבלו פרטים מהארגון שלך</translation>
-<translation id="4466881336512663640">השינויים בטופס יתבטלו. להמשיך?</translation>
 <translation id="4476953670630786061">הטופס הזה לא מאובטח. המילוי האוטומטי נכבה.</translation>
 <translation id="4477350412780666475">הטראק הבא</translation>
 <translation id="4482953324121162758">האתר הזה לא יתורגם.</translation>
@@ -1300,7 +1299,6 @@
 <translation id="5785756445106461925">כמו כן, דף זה כולל משאבים נוספים שאינם מאובטחים. גורמים אחרים עלולים לראות את המשאבים האלה במהלך העברתם, ותוקף עלול לשנות אותם באופן שישנה את מראה הדף.</translation>
 <translation id="5786044859038896871">האם ברצונך למלא את פרטי הכרטיס שלך?</translation>
 <translation id="578633867165174378">‏Chrome איתר את הסיסמה שבה השתמשת עכשיו בפרצה באבטחת מידע. מומלץ לשנות את הסיסמה הזו מיד.</translation>
-<translation id="5798290721819630480">לבטל את השינויים?</translation>
 <translation id="5803412860119678065">האם ברצונך למלא את פרטי הכרטיס <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">הרשאות</translation>
 <translation id="5804427196348435412">‏שימוש בהתקני NFC</translation>
@@ -1461,7 +1459,6 @@
 <translation id="6428450836711225518">אימות מספר הטלפון שלך</translation>
 <translation id="6433490469411711332">עריכת הפרטים ליצירת קשר</translation>
 <translation id="6433595998831338502">לא ניתן היה להתחבר אל <ph name="HOST_NAME" />.</translation>
-<translation id="6434309073475700221">מחיקה</translation>
 <translation id="6440503408713884761">המערכת מתעלמת מהפריט</translation>
 <translation id="6443406338865242315">אילו תוספות ויישומי פלאגין התקנת.</translation>
 <translation id="6446163441502663861">Kahu (Envelope)‎</translation>
@@ -1718,7 +1715,6 @@
 <translation id="7481312909269577407">קדימה</translation>
 <translation id="7485870689360869515">לא נמצאו נתונים.</translation>
 <translation id="7495528107193238112">התוכן הזה חסום. יש לפנות אל הבעלים של האתר כדי לפתור את הבעיה.</translation>
-<translation id="7498234416455752244">המשך העריכה</translation>
 <translation id="7503664977220660814">‏הזנת כרגע את הסיסמה שלך באתר מטעה. ההמלצה של Chromium היא לבדוק באופן מיידי את הסיסמאות השמורות של <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ואתרים אחרים שבהם הסיסמה הזו נמצאת בשימוש.</translation>
 <translation id="7508255263130623398">מזהה המכשיר במדיניות שהוחזר ריק או שאינו תואם את מזהה המכשיר הנוכחי</translation>
 <translation id="7508870219247277067">ירוק אבוקדו</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb
index e6c2f6ed..2436bb5c 100644
--- a/components/strings/components_strings_ja.xtb
+++ b/components/strings/components_strings_ja.xtb
@@ -932,7 +932,6 @@
 <translation id="4435702339979719576">ポストカード</translation>
 <translation id="443673843213245140">プロキシの使用は無効ですが、プロキシの設定が明示的に指定されています。</translation>
 <translation id="4464826014807964867">組織の情報を使用しているウェブサイト</translation>
-<translation id="4466881336512663640">フォームの変更内容は破棄されます。続行してもよろしいですか?</translation>
 <translation id="4476953670630786061">このフォームは安全ではないため、自動入力をオフにしました。</translation>
 <translation id="4477350412780666475">次の曲</translation>
 <translation id="4482953324121162758">このサイトは翻訳されません。</translation>
@@ -1286,7 +1285,6 @@
 <translation id="5785756445106461925">加えて、このページには安全でない他のリソースが含まれています。このリソースは送信中に他のユーザーから見られる可能性があります。また、悪意のあるユーザーによって改変されページの見た目が変わる可能性もあります。</translation>
 <translation id="5786044859038896871">カード情報を入力しますか?</translation>
 <translation id="578633867165174378">最近使用したパスワードがデータ侵害で検出されました。このパスワードを今すぐ変更することをおすすめします。</translation>
-<translation id="5798290721819630480">変更を破棄しますか?</translation>
 <translation id="5803412860119678065"><ph name="CARD_DETAIL" /> を入力しますか?</translation>
 <translation id="5804241973901381774">権限</translation>
 <translation id="5804427196348435412">NFC デバイスの使用</translation>
@@ -1447,7 +1445,6 @@
 <translation id="6428450836711225518">電話番号の確認</translation>
 <translation id="6433490469411711332">連絡先情報の編集</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> で接続が拒否されました。</translation>
-<translation id="6434309073475700221">破棄</translation>
 <translation id="6440503408713884761">除外されました</translation>
 <translation id="6443406338865242315">インストールした拡張機能とプラグイン</translation>
 <translation id="6446163441502663861">Kahu(封筒)</translation>
@@ -1704,7 +1701,6 @@
 <translation id="7481312909269577407">進む</translation>
 <translation id="7485870689360869515">データが見つかりません。</translation>
 <translation id="7495528107193238112">このコンテンツはブロックされました。サイト所有者に連絡して問題を解決してください。</translation>
-<translation id="7498234416455752244">編集を続ける</translation>
 <translation id="7503664977220660814">偽のサイトでパスワードを入力しました。<ph name="WEBSITE_1" />、<ph name="WEBSITE_2" /> のほか、このパスワードを使用しているサイトで、保存したパスワードを今すぐ確認することをおすすめします。</translation>
 <translation id="7508255263130623398">返されたポリシーのデバイス ID が空であるか、現在のデバイス ID と一致しません</translation>
 <translation id="7508870219247277067">アボカド グリーン</translation>
diff --git a/components/strings/components_strings_ka.xtb b/components/strings/components_strings_ka.xtb
index 1b0456f..5523178 100644
--- a/components/strings/components_strings_ka.xtb
+++ b/components/strings/components_strings_ka.xtb
@@ -932,7 +932,6 @@
 <translation id="4435702339979719576">ღია ბარათი)</translation>
 <translation id="443673843213245140">პროქსის გამოყენება გამორთულია, მაგრამ მითითებულია პროქსის დეტალური კონფიგურაცია.</translation>
 <translation id="4464826014807964867">ვებსაიტები, რომლებსაც თქვენი ორგანიზაციისგან მიღებული აქვს გარკვეული ინფორმაცია</translation>
-<translation id="4466881336512663640">ფორმაში შეტანილი ცვლილებები დაიკარგება. ნამდვილად გსურთ გაგრძელება?</translation>
 <translation id="4476953670630786061">ეს ფორმა არ არის დაცული. ავტომატური შევსება გამოირთო.</translation>
 <translation id="4477350412780666475">შემდეგი ჩანაწერი</translation>
 <translation id="4482953324121162758">ეს გვერდი არ ითარგმნება.</translation>
@@ -1286,7 +1285,6 @@
 <translation id="5785756445106461925">გარდა ამისა, ეს გვერდი შეიცავს სხვა არაუსაფრთხო რესურსებს. ამ რესურსების დათვალიერება გადაცემისას სხვა პირებს შეუძლიათ, ხოლო თავდამსხმელს მათი მოდიფიკაცია გვერდის იერის შეცვლის მიზნით შეუძლია.</translation>
 <translation id="5786044859038896871">გსურთ თქვენი ბარათის ინფორმაციის შევსება?</translation>
 <translation id="578633867165174378">თქვენ მიერ ახლახან გამოყენებული პაროლი Chrome-მა გაჟონილ მონაცემებში იპოვა. გირჩევთ, ახლავე შეცვალოთ ეს პაროლი.</translation>
-<translation id="5798290721819630480">გსურთ ცვლილებების გაუქმება?</translation>
 <translation id="5803412860119678065">გსურთ თქვენი <ph name="CARD_DETAIL" />-ის ინფორმაციის შევსება?</translation>
 <translation id="5804241973901381774">ნებართვები</translation>
 <translation id="5804427196348435412">NFC მოწყობილობების გამოყენება</translation>
@@ -1447,7 +1445,6 @@
 <translation id="6428450836711225518">დაადასტურეთ თქვენი ტელეფონის ნომერი</translation>
 <translation id="6433490469411711332">საკონტაქტო ინფორმაციის რედაქტირება</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" />-მა უარყო დაკავშირება.</translation>
-<translation id="6434309073475700221">გაუქმება</translation>
 <translation id="6440503408713884761">იგნორირებული</translation>
 <translation id="6443406338865242315">თქვენ მიერ დაინსტალირებული გაფართოებები და დანამატები</translation>
 <translation id="6446163441502663861">Kahu (კონვერტი)</translation>
@@ -1704,7 +1701,6 @@
 <translation id="7481312909269577407">გადამისამართება</translation>
 <translation id="7485870689360869515">მონაცემები ვერ მოიძებნა.</translation>
 <translation id="7495528107193238112">ეს კონტენტი დაბლოკილია. დაუკავშირდით საიტის მფლობელს ამ პრობლემის მოსაგვარებლად.</translation>
-<translation id="7498234416455752244">რედაქტირების გაგრძელება</translation>
 <translation id="7503664977220660814">თქვენ ეს-ესაა შეიყვანეთ პაროლი შეცდომაში შემყვან საიტზე. Chromium გირჩევთ, შეამოწმოთ შენახული პაროლები <ph name="WEBSITE_1" />-ისთვის, <ph name="WEBSITE_2" />-ისა და სხვა საიტებისთვის, სადაც ამჟამად იმავე პაროლს იყენებთ.</translation>
 <translation id="7508255263130623398">წესების დაბრუნებული მოწყობილობის ID ცარიელია ან ამჟამინდელ მოწყობილობის ID-ს არ ემთხვევა</translation>
 <translation id="7508870219247277067">ავოკადოსფერი</translation>
diff --git a/components/strings/components_strings_kk.xtb b/components/strings/components_strings_kk.xtb
index 954d6c3..7726591 100644
--- a/components/strings/components_strings_kk.xtb
+++ b/components/strings/components_strings_kk.xtb
@@ -942,7 +942,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">Проксиді пайдалану өшірілген, бірақ айқын прокси конфигурациясы көрсетілген.</translation>
 <translation id="4464826014807964867">Ұйымыңыздан алынған ақпарат қамтылған веб-сайттар</translation>
-<translation id="4466881336512663640">Үлгідегі өзгерістер жойылады. Шынымен жалғастырғыңыз келе ме?</translation>
 <translation id="4476953670630786061">Бұл үлгі қорғалмаған. Автотолтыру өшірілді.</translation>
 <translation id="4477350412780666475">Келесі аудиотрек</translation>
 <translation id="4482953324121162758">Бұл сайт аударылмайды.</translation>
@@ -1296,7 +1295,6 @@
 <translation id="5785756445106461925">Сонымен қатар бұл бет басқа да қауіпті ресурстарды қамтиды. Бұл ресурстарды өту кезінде басқалар көре алады және беттің көрінісіне өзгеріс енгізу мақсатында оны шабуылшы өзгерте алады.</translation>
 <translation id="5786044859038896871">Карта ақпаратын толтырғыңыз келе ме?</translation>
 <translation id="578633867165174378">Chrome деректер қолды болған кезде пайдаланылған құпия сөзді тапты. Құпия сөзді қазір өзгертуге кеңес береміз.</translation>
-<translation id="5798290721819630480">Өзгерістер сақталмасын ба?</translation>
 <translation id="5803412860119678065"><ph name="CARD_DETAIL" /> картасының мәліметтерін толтырғыңыз келе ме?</translation>
 <translation id="5804241973901381774">Рұқсаттар</translation>
 <translation id="5804427196348435412">NFC функциясы бар құрылғыларды пайдалану</translation>
@@ -1457,7 +1455,6 @@
 <translation id="6428450836711225518">Телефон нөміріңізді растаңыз</translation>
 <translation id="6433490469411711332">Байланыс ақпаратын өңдеу</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> байланыстан бас тартты.</translation>
-<translation id="6434309073475700221">Тоқтату</translation>
 <translation id="6440503408713884761">Еленбейді</translation>
 <translation id="6443406338865242315">қай кеңейтімдер мен плагиндерді орнатқаныңызды;</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1714,7 +1711,6 @@
 <translation id="7481312909269577407">Басқаға жіберу</translation>
 <translation id="7485870689360869515">Деректер табылмады.</translation>
 <translation id="7495528107193238112">Бұл мазмұн бөгелген. Мәселені шешу үшін сайт иесімен байланыс орнатыңыз.</translation>
-<translation id="7498234416455752244">Әрі қарай өзгерту</translation>
 <translation id="7503664977220660814">Жаңа ғана құпия сөзіңізді жалған сайтқа енгіздіңіз. Chromium осы құпия сөз пайдаланылатын <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> және басқа сайттар үшін сақталған құпия сөздерді тексеруді ұсынады.</translation>
 <translation id="7508255263130623398">Қайтарылған құрылғының сервердегі идентификаторы бос немесе оның ағымдағы идентификаторына сәйкес келмейді</translation>
 <translation id="7508870219247277067">Қою жасыл</translation>
diff --git a/components/strings/components_strings_km.xtb b/components/strings/components_strings_km.xtb
index 78d1b36..be323385 100644
--- a/components/strings/components_strings_km.xtb
+++ b/components/strings/components_strings_km.xtb
@@ -947,7 +947,6 @@
 <translation id="4435702339979719576">បណ្ណប្រៃសណីយ៍)</translation>
 <translation id="443673843213245140">ការប្រើប្រូកស៊ីត្រូវបានបិទដំណើរការ ប៉ុន្តែការកំណត់ប្រូកស៊ីដែលច្បាស់លាស់ត្រូវបានបញ្ជាក់។</translation>
 <translation id="4464826014807964867">គេហទំព័រដែលមានព័ត៌មានពីស្ថាប័នរបស់អ្នក</translation>
-<translation id="4466881336512663640">ការផ្លាស់ប្ដូរទម្រង់បែបបទ​នឹង​បាត់បង់។ តើអ្នកប្រាកដថា​ចង់បន្តដែរទេ?</translation>
 <translation id="4476953670630786061">ទម្រង់នេះ​មិនមានសុវត្ថិភាពទេ។ មុខងារបំពេញស្វ័យប្រវត្តិ​ត្រូវបានបិទ។</translation>
 <translation id="4477350412780666475">សំនៀង​បន្ទាប់</translation>
 <translation id="4482953324121162758">គេហទំព័រនេះ​នឹង​មិនត្រូវ​បានបកប្រែទេ។</translation>
@@ -1301,7 +1300,6 @@
 <translation id="5785756445106461925">ជាងនេះទៅទៀត ទំព័រនេះរាប់បញ្ចូលធនធានផ្សេងទៀតដែលគ្មានសុវត្ថិភាព។ ធនធានទាំងនេះអាចត្រូវបានមើលដោយអ្នកផ្សេងទៀតខណៈពេលឆ្លងកាត់ និងអាចត្រូវបានកែសម្រួលដោយអ្នកវាយប្រហារដើម្បីប្តូររូបរាងទំព័រ។</translation>
 <translation id="5786044859038896871">តើអ្នកចង់បំពេញព័ត៌មានកាតរបស់អ្នកដែរទេ?</translation>
 <translation id="578633867165174378">Chrome បានរកឃើញ​ពាក្យសម្ងាត់​ដែលអ្នកទើបតែប្រើ នៅក្នុង​ការបែកធ្លាយ​ទិន្នន័យ។ យើង​សូមណែនាំឱ្យប្ដូរ​ពាក្យសម្ងាត់នេះ​ឥឡូវនេះ។</translation>
-<translation id="5798290721819630480">លុបចោល​ការផ្លាស់ប្ដូរ?</translation>
 <translation id="5803412860119678065">តើអ្នកចង់បំពេញ <ph name="CARD_DETAIL" /> របស់អ្នកដែរទេ?</translation>
 <translation id="5804241973901381774">ការអនុញ្ញាត</translation>
 <translation id="5804427196348435412">ប្រើ​ឧបករណ៍ NFC</translation>
@@ -1462,7 +1460,6 @@
 <translation id="6428450836711225518">ផ្ទៀងផ្ទាត់​លេខ​ទូរសព្ទ​របស់​អ្នក</translation>
 <translation id="6433490469411711332">កែសម្រួលព័ត៌មានទំនាក់ទំនង</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> បានបដិសេធក្នុងការតភ្ជាប់</translation>
-<translation id="6434309073475700221">កម្ចាត់</translation>
 <translation id="6440503408713884761">មិនត្រូវបាន​អើពើ</translation>
 <translation id="6443406338865242315">ថាតើ​កម្មវិធីបន្ថែម និងកម្មវិធី​ជំនួយណាខ្លះដែលអ្នកបានដំឡើង</translation>
 <translation id="6446163441502663861">Kahu (ស្រោម​សំបុត្រ)</translation>
@@ -1719,7 +1716,6 @@
 <translation id="7481312909269577407">ទៅមុខ</translation>
 <translation id="7485870689360869515">គ្មានទិន្នន័យត្រូវបានរកឃើញទេ។</translation>
 <translation id="7495528107193238112">ខ្លឹមសារ​នេះ​ត្រូវបាន​ទប់ស្កាត់​។ សូមទាក់ទង​ម្ចាស់​គេហទំព័រ ដើម្បី​ដោះស្រាយ​បញ្ហានេះ​។</translation>
-<translation id="7498234416455752244">បន្ត​កែសម្រួល</translation>
 <translation id="7503664977220660814">អ្នកទើបតែ​បានបញ្ចូល​ពាក្យសម្ងាត់​របស់អ្នក​នៅលើ​គេហទំព័របញ្ឆោត។ Chromium សូមណែនាំឱ្យ​ពិនិត្យមើល​ពាក្យសម្ងាត់​ដែលអ្នក​បានរក្សាទុក​សម្រាប់ <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> និង​គេហទំព័រ​ផ្សេងទៀត ដែលអ្នក​ប្រើ​ពាក្យសម្ងាត់​នេះ​ឥឡូវនេះ​។</translation>
 <translation id="7508255263130623398">លេខសម្គាល់ឧបករណ៍គោលការណ៍ប្រគល់ត្រឡប់វិញគឺទទេ ឬមិនត្រូវគ្នាជាមួយលេខសម្គាល់ឧបករណ៍បច្ចុប្បន្ន</translation>
 <translation id="7508870219247277067">បៃតងខ្ចី</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb
index 845c9d26..734f113 100644
--- a/components/strings/components_strings_kn.xtb
+++ b/components/strings/components_strings_kn.xtb
@@ -931,7 +931,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">ಪ್ರಾಕ್ಸಿಯ ಬಳಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ ಆದರೆ ಬಹಿರಂಗ ಪ್ರಾಕ್ಸಿ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ.</translation>
 <translation id="4464826014807964867">ನಿಮ್ಮ ಸಂಸ್ಥೆಯಿಂದ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿರುವ ವೆಬ್‌ಸೈಟ್‌ಗಳು</translation>
-<translation id="4466881336512663640">ಫಾರ್ಮ್‌ನಲ್ಲಿ ಮಾಡಿರುವ ಬದಲಾವಣೆಗಳು ಕಳೆದು ಹೋಗುತ್ತವೆ. ನೀವು ಖಂಡಿತವಾಗಿಯೂ ಮುಂದುವರಿಯಲು ಬಯಸುತ್ತೀರಾ?</translation>
 <translation id="4476953670630786061">ಈ ಫಾರ್ಮ್ ಸುರಕ್ಷಿತವಾಗಿಲ್ಲ. ಸ್ವಯಂ ಭರ್ತಿಯನ್ನು ಆಫ್ ಮಾಡಲಾಗಿದೆ.</translation>
 <translation id="4477350412780666475">ಮುಂದಿನ ಟ್ರ್ಯಾಕ್</translation>
 <translation id="4482953324121162758">ಈ ಸೈಟ್ ಅನುವಾದಕ್ಕೆ ಒಳಪಡುವುದಿಲ್ಲ.</translation>
@@ -1285,7 +1284,6 @@
 <translation id="5785756445106461925">ಅಲ್ಲದೇ, ಸುರಕ್ಷಿತವಲ್ಲದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಈ ಪುಟ ಒಳಗೊಂಡಿದೆ. ಪ್ರಯಾಣದ ಸಂದರ್ಭದಲ್ಲಿ ಈ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಇತರರೂ ವೀಕ್ಷಿಸಬಹುದಾಗಿದೆ ಮತ್ತು ಪುಟದ ನೋಟವೇ ಬದಲಾಗುವಂತೆ ಆಕ್ರಮಣಕಾರರು ಅದನ್ನು ತಿದ್ದಬಹುದಾಗಿದೆ.</translation>
 <translation id="5786044859038896871">ನಿಮ್ಮ ಕಾರ್ಡ್ ಮಾಹಿತಿ ಭರ್ತಿ ಮಾಡಲು ನೀವು ಬಯಸುವಿರಾ?</translation>
 <translation id="578633867165174378">ಡೇಟಾ ಉಲ್ಲಂಘನೆಯಲ್ಲಿ ನೀವು ಬಳಸಿದ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು Chrome ಪತ್ತೆಹಚ್ಚಿದೆ. ಈಗಲೇ ಈ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಬದಲಾಯಿಸಲು ನಾವು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ.</translation>
-<translation id="5798290721819630480">ಬದಲಾವಣೆಗಳನ್ನು ತ್ಯಜಿಸುವುದೇ?</translation>
 <translation id="5803412860119678065">ನಿಮ್ಮ <ph name="CARD_DETAIL" /> ಭರ್ತಿ ಮಾಡಲು ನೀವು ಬಯಸುವಿರಾ?</translation>
 <translation id="5804241973901381774">ಅನುಮತಿಗಳು</translation>
 <translation id="5804427196348435412">NFC ಸಾಧನಗಳನ್ನು ಬಳಸಿ</translation>
@@ -1445,7 +1443,6 @@
 <translation id="6428450836711225518">ನಿಮ್ಮ ದೂರವಾಣಿ ಸಂಖ್ಯೆಯನ್ನು ದೃಢೀಕರಿಸಿ</translation>
 <translation id="6433490469411711332">ಸಂಪರ್ಕ ಮಾಹಿತಿ ಎಡಿಟ್ ಮಾಡಿ</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> ಸಂಪರ್ಕಗೊಳ್ಳಲು ನಿರಾಕರಿಸಿದೆ.</translation>
-<translation id="6434309073475700221">ತಿರಸ್ಕರಿಸಿ</translation>
 <translation id="6440503408713884761">ನಿರ್ಲಕ್ಷಿಸಲಾಗಿದೆ</translation>
 <translation id="6443406338865242315">ನೀವು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿರುವ ವಿಸ್ತರಣೆಗಳು ಮತ್ತು ಪ್ಲಗ್‌ಇನ್‌ಗಳು</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1701,7 +1698,6 @@
 <translation id="7481312909269577407">ಫಾರ್ವರ್ಡ್</translation>
 <translation id="7485870689360869515">ಯಾವುದೇ ಡೇಟಾ ಕಂಡುಬಂದಿಲ್ಲ.</translation>
 <translation id="7495528107193238112">ಈ ವಿಷಯವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಸೈಟ್ ಮಾಲೀಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
-<translation id="7498234416455752244">ಎಡಿಟ್‌ ಮಾಡುತ್ತಿರಿ</translation>
 <translation id="7503664977220660814">ವಂಚನೆ ಮಾಡುವ ಸೈಟ್‌ನಲ್ಲಿ, ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಈಗಷ್ಟೇ ನೀವು ನಮೂದಿಸಿದ್ದೀರಿ. <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ಮತ್ತು ಈ ಪಾಸ್‌ವರ್ಡ್ ಬಳಸುವ ಇತರ ವೆಬ್‌ಸೈಟ್‌ಗಳಲ್ಲಿ ನಿಮ್ಮ ಉಳಿಸಿದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಈಗಲೇ ಪರಿಶೀಲಿಸುವಂತೆ Chromium ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation>
 <translation id="7508255263130623398">ಹಿಂತಿರುಗಿಸಲಾದ ನೀತಿಯ ಸಾಧನ ಐಡಿ ಖಾಲಿ ಇದೆ ಅಥವಾ ಪ್ರಸ್ತುತ ಸಾಧನ ಐಡಿಗೆ ಹೊಂದಾಣಿಕೆಯಾಗುವುದಿಲ್ಲ</translation>
 <translation id="7508870219247277067">ಅವಕಾಡೊ ಹಸಿರು</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb
index 0464b32..34a6055 100644
--- a/components/strings/components_strings_ko.xtb
+++ b/components/strings/components_strings_ko.xtb
@@ -932,7 +932,6 @@
 <translation id="4435702339979719576">엽서)</translation>
 <translation id="443673843213245140">프록시 사용은 중지되었지만 명시적 프록시 설정이 지정되어 있습니다.</translation>
 <translation id="4464826014807964867">조직의 정보가 포함된 웹사이트</translation>
-<translation id="4466881336512663640">양식에서 변경한 사항이 삭제됩니다. 계속하시겠습니까?</translation>
 <translation id="4476953670630786061">안전하지 않은 양식입니다. 자동 완성이 사용 중지되었습니다.</translation>
 <translation id="4477350412780666475">다음 트랙</translation>
 <translation id="4482953324121162758">이 사이트는 번역되지 않습니다.</translation>
@@ -1286,7 +1285,6 @@
 <translation id="5785756445106461925">또한 이 페이지에는 안전하지 않은 다른 리소스가 포함되어 있습니다. 이러한 리소스는 전송 중에 다른 사람이 볼 수 있으며 페이지의 모양을 변경하기 위해 공격자가 수정할 수 있습니다.</translation>
 <translation id="5786044859038896871">카드 정보를 입력하시겠습니까?</translation>
 <translation id="578633867165174378">방금 사용한 비밀번호가 정보 유출로 인해 노출된 것으로 확인됩니다. 지금 바로 비밀번호를 변경하시기 바랍니다.</translation>
-<translation id="5798290721819630480">변경사항을 삭제하시겠습니까?</translation>
 <translation id="5803412860119678065"><ph name="CARD_DETAIL" />을(를) 입력하시겠습니까?</translation>
 <translation id="5804241973901381774">권한</translation>
 <translation id="5804427196348435412">NFC 기기 사용</translation>
@@ -1447,7 +1445,6 @@
 <translation id="6428450836711225518">전화번호 인증</translation>
 <translation id="6433490469411711332">연락처 정보 수정</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" />에서 연결을 거부했습니다.</translation>
-<translation id="6434309073475700221">삭제</translation>
 <translation id="6440503408713884761">무시됨</translation>
 <translation id="6443406338865242315">내가 설치한 확장 프로그램 및 플러그인</translation>
 <translation id="6446163441502663861">Kahu(봉투)</translation>
@@ -1703,7 +1700,6 @@
 <translation id="7481312909269577407">앞으로</translation>
 <translation id="7485870689360869515">데이터 없음</translation>
 <translation id="7495528107193238112">이 콘텐츠는 차단되어 있습니다. 문제를 해결하려면 사이트 소유자에게 문의하세요.</translation>
-<translation id="7498234416455752244">계속 수정</translation>
 <translation id="7503664977220660814">사기성 사이트에 비밀번호를 입력했습니다. 지금 바로 <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> 등 동일한 비밀번호를 사용한 사이트에 저장된 비밀번호를 확인하는 것이 좋습니다.</translation>
 <translation id="7508255263130623398">반환된 정책 기기 ID가 비었거나 현재 기기 ID와 일치하지 않음</translation>
 <translation id="7508870219247277067">아보카도 녹색</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb
index 6fa0641..d236d28 100644
--- a/components/strings/components_strings_ky.xtb
+++ b/components/strings/components_strings_ky.xtb
@@ -942,7 +942,6 @@
 <translation id="4435702339979719576">Ачык кат)</translation>
 <translation id="443673843213245140">Прокси пайдалануу мүмкүнчүлүгү өчүрүлгөнү менен, ачык-айкын прокси конфигурациясы белгиленген.</translation>
 <translation id="4464826014807964867">Уюмуңуздан маалымат алган вебсайттар</translation>
-<translation id="4466881336512663640">Формага киргизилген өзгөрүүлөр сакталбайт. Чын эле уланткыңыз келеби?</translation>
 <translation id="4476953670630786061">Бул форма кооптуу. Автоматтык түрдө толтуруу функциясы өчүрүлдү.</translation>
 <translation id="4477350412780666475">Кийинки трек</translation>
 <translation id="4482953324121162758">Бул сайт которулбайт.</translation>
@@ -1296,7 +1295,6 @@
 <translation id="5785756445106461925">Андан тышкары, бул бетте башка кооптуу булактар бар. Өткөрүү учурунда аларды башка колдонуучулар көрө алышат, ошону менен катар, беттин көрүнүшүн өзгөртүү үчүн аларды чабуулчулар бурмалап коюшу мүмкүн.</translation>
 <translation id="5786044859038896871">Карточкаңыздын маалыматын толтурасызбы?</translation>
 <translation id="578633867165174378">Chrome жаңы эле колдонгон сырсөзүңүздү кимдир бирөө билип алганын аныктады. Бул сырсөздү азыр өзгөртүүнү сунуштайбыз.</translation>
-<translation id="5798290721819630480">Өзгөрүүлөр жоюлсунбу?</translation>
 <translation id="5803412860119678065"><ph name="CARD_DETAIL" /> толтурасызбы?</translation>
 <translation id="5804241973901381774">Уруксаттар</translation>
 <translation id="5804427196348435412">NFC түзмөктөрүн колдонуу</translation>
@@ -1457,7 +1455,6 @@
 <translation id="6428450836711225518">Телефон номериңизди ырастаңыз</translation>
 <translation id="6433490469411711332">Байланыш маалыматын түзөтүү</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> сайты туташуудан баш тартты.</translation>
-<translation id="6434309073475700221">Жарактан чыгаруу</translation>
 <translation id="6440503408713884761">Этибарга алынган жок</translation>
 <translation id="6443406338865242315">Кайсы кеңейтүүлөрдү жана плагиндерди орнотуп алдыңыз</translation>
 <translation id="6446163441502663861">Kahu (Конверт)</translation>
@@ -1714,7 +1711,6 @@
 <translation id="7481312909269577407">Багыттоо</translation>
 <translation id="7485870689360869515">Дайындар табылган жок.</translation>
 <translation id="7495528107193238112">Бул мазмун бөгөттөлгөн. Көйгөйдү чечүү үчүн сайттын ээсине байланышыңыз.</translation>
-<translation id="7498234416455752244">Түзөтүүнү улантуу</translation>
 <translation id="7503664977220660814">Сырсөзүңүздү жаңы эле адаштыруучу сайтта киргиздиңиз. Chromium <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> жана башка сайттарда колдонгон ушул жана сакталган сырсөздөрүңүздү текшерүүнү сунуштайт.</translation>
 <translation id="7508255263130623398">Кайтарылган саясат түзмөгүнүн id'си бош же учурдагы түзмөктүн id'сине дал келбейт</translation>
 <translation id="7508870219247277067">Жашыл (авокадо)</translation>
diff --git a/components/strings/components_strings_lo.xtb b/components/strings/components_strings_lo.xtb
index 004c7ac4..e83de69 100644
--- a/components/strings/components_strings_lo.xtb
+++ b/components/strings/components_strings_lo.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">ໂພສກາດ)</translation>
 <translation id="443673843213245140">ການໃຊ້ພຣັອກຊີປິດໃຊ້ງານແລ້ວ ແຕ່ການປັບຕັ້ງພຣັອກຊີຈະແຈ້ງໄດ້ຮັບການລະບຸ.</translation>
 <translation id="4464826014807964867">ເວັບໄຊພ້ອມຂໍ້ມູນຈາກອົງການຂອງທ່ານ</translation>
-<translation id="4466881336512663640">ການປ່ຽນແປງໃນແບບຟອມຈະເສຍໄປ. ທ່ານແນ່ໃຈບໍ່ວ່າທ່ານຕ້ອງການສືບຕໍ່?</translation>
 <translation id="4476953670630786061">ແບບຟອມບໍ່ປອດໄພ. ລະບົບໄດ້ປິດການຕື່ມຂໍ້ມູນອັດຕະໂນມັດແລ້ວ.</translation>
 <translation id="4477350412780666475">ເພງຕໍ່ໄປ</translation>
 <translation id="4482953324121162758">ລະບົບຈະບໍ່ແປເວັບໄຊນີ້.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">ນອກ​ຈາກນັ້ນ, ໜ້ານີ້ມີຂໍ້ມູນອື່ນທີ່ບໍ່ປອດໄພນໍາ. ຜູ້ອື່ນສາມາດເບິ່ງຂໍ້ມູນນີ້ໄດ້ໃນຂະນະທີ່ສົ່ງໄປ ແລະຜູ້ໂຈມຕີສາມາດດັດແປງໄດ້ ເພື່ອປ່ຽນໜ້າ​ຕາຂອງໜ້າ.</translation>
 <translation id="5786044859038896871">ທ່ານຕ້ອງການຕື່ມຂໍ້ມູນບັດຂອງທ່ານບໍ?</translation>
 <translation id="578633867165174378">Chrome ພົບລະຫັດຜ່ານທີ່ທ່ານຫາກໍໃຊ້ໄປນັ້ນໃນການຮົ່ວໄຫຼຂໍ້ມູນ. ພວກເຮົາແນະນຳໃຫ້ປ່ຽນລະຫັດຜ່ານດຽວນີ້.</translation>
-<translation id="5798290721819630480">ຍົກເລີກການແກ້ໄຂບໍ?</translation>
 <translation id="5803412860119678065">ທ່ານຕ້ອງການຕື່ມຂໍ້ມູນ <ph name="CARD_DETAIL" /> ຂອງທ່ານບໍ?</translation>
 <translation id="5804241973901381774">ການ​ອະ​ນຸ​ຍາດ</translation>
 <translation id="5804427196348435412">ໃຊ້ອຸປະກອນ NFC</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">ຢັ້ງຢືນເບີໂທລະສັບຂອງທ່ານ</translation>
 <translation id="6433490469411711332">ແກ້ໄຂຂໍ້ມູນລາຍຊື່ຜູ້ຕິດຕໍ່</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> ໄດ້ປະຕິເສດການເຊື່ອມຕໍ່.</translation>
-<translation id="6434309073475700221">ກໍາຈັດຖິ້ມ</translation>
 <translation id="6440503408713884761">ລະເລີຍ</translation>
 <translation id="6443406338865242315">ສ່ວນຂະຫຍາຍ ແລະ ປລັກອິນທີ່ທ່ານຕິດຕັ້ງ</translation>
 <translation id="6446163441502663861">Kahu (ຊອງຈົດໝາຍ)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">ສົ່ງຕໍ່</translation>
 <translation id="7485870689360869515">ບໍ່ພົບຂໍ້​ມູນ​.</translation>
 <translation id="7495528107193238112">ເນື້ອຫານີ້ຖືກບລັອກໄວ້. ຕິດຕໍ່ເຈົ້າຂອງເວັບໄຊເພື່ອແກ້ໄຂບັນຫາ.</translation>
-<translation id="7498234416455752244">ສືບຕໍ່ແກ້ໄຂ</translation>
 <translation id="7503664977220660814">ທ່ານຫາກໍປ້ອນລະຫັດຜ່ານຂອງທ່ານໃສ່ເວັບໄຊຫຼອກລວງ. Chromium ຂໍແນະນຳໃຫ້ກວດເບິ່ງລະຫັດຜ່ານທີ່ທ່ານບັນທຶກໄວ້ສຳລັບ <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ແລະ ເວັບໄຊອື່ນໆທີ່ທ່ານໃຊ້ລະຫັດຜ່ານນີ້ໃນຕອນນີ້ເລີຍ.</translation>
 <translation id="7508255263130623398">id ອຸປະກອນນະໂຍບາຍຫວ່າງເປົ່າ ຫຼື ບໍ່ກົງກັບ id ອຸປະກອນປັດຈຸບັນ</translation>
 <translation id="7508870219247277067">ສີ​ຂຽວ​ອາ​ໂວ​ກາ​ໂດ</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb
index 84f80e97..e170829 100644
--- a/components/strings/components_strings_lt.xtb
+++ b/components/strings/components_strings_lt.xtb
@@ -944,7 +944,6 @@
 <translation id="4435702339979719576">Atvirukas</translation>
 <translation id="443673843213245140">Įgaliotojo serverio naudojimas neleidžiamas, bet nurodyta aiški įgaliotojo serverio konfigūracija.</translation>
 <translation id="4464826014807964867">Svetainės, kuriose yra informacijos iš jūsų organizacijos</translation>
-<translation id="4466881336512663640">Formos pakeitimai bus prarasti. Ar tikrai norite tęsti?</translation>
 <translation id="4476953670630786061">Ši forma nesaugi. Automatinis pildymas išjungtas.</translation>
 <translation id="4477350412780666475">Kitas takelis</translation>
 <translation id="4482953324121162758">Ši svetainė nebus verčiama.</translation>
@@ -1298,7 +1297,6 @@
 <translation id="5785756445106461925">Be to, šiame puslapyje yra kitų nesaugių išteklių. Perduodant duomenis šiuos išteklius gali peržiūrėti kiti asmenys ir keisti atakuojanti programa, siekianti pakeisti puslapio išvaizdą.</translation>
 <translation id="5786044859038896871">Ar norite, kad būtų įvesta jūsų kredito kortelės informacija?</translation>
 <translation id="578633867165174378">„Chrome“ aptiko, kad slaptažodis, kurį ką tik naudojote, buvo atskleistas įvykus duomenų saugos pažeidimui. Rekomenduojame dabar pakeisti šį slaptažodį.</translation>
-<translation id="5798290721819630480">Atmesti pakeitimus?</translation>
 <translation id="5803412860119678065">Ar norite, kad būtų įvesta <ph name="CARD_DETAIL" /> informacija?</translation>
 <translation id="5804241973901381774">Leidimai</translation>
 <translation id="5804427196348435412">Naudoti ALR įrenginius</translation>
@@ -1459,7 +1457,6 @@
 <translation id="6428450836711225518">Patvirtinkite savo telefono numerį</translation>
 <translation id="6433490469411711332">Kontaktinės informacijos redagavimas</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> atsisakė prisijungti.</translation>
-<translation id="6434309073475700221">Išmesti</translation>
 <translation id="6440503408713884761">Nepaisoma</translation>
 <translation id="6443406338865242315">Kuriuos plėtinius ir papildinius įdiegėte</translation>
 <translation id="6446163441502663861">„Kahu“ (vokas)</translation>
@@ -1716,7 +1713,6 @@
 <translation id="7481312909269577407">Persiųsti</translation>
 <translation id="7485870689360869515">Nerasta jokių duomenų.</translation>
 <translation id="7495528107193238112">Šis turinys užblokuotas. Susisiekite su svetainės savininku, kad išspręstų problemą.</translation>
-<translation id="7498234416455752244">Toliau redaguoti</translation>
 <translation id="7503664977220660814">Ką tik savo slaptažodį įvedėte apgaulingoje svetainėje. „Chromium“ rekomenduoja patikrinti išsaugotus <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ir kitų svetainių, kuriose dabar naudojate šį slaptažodį, slaptažodžius.</translation>
 <translation id="7508255263130623398">Sugrąžinto politikos įrenginio ID nenurodytas arba neatitinka dabartinio įrenginio ID</translation>
 <translation id="7508870219247277067">Avokado žalia</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb
index 21cd3bd..7c861b9 100644
--- a/components/strings/components_strings_lv.xtb
+++ b/components/strings/components_strings_lv.xtb
@@ -940,7 +940,6 @@
 <translation id="4435702339979719576">Pastkarte)</translation>
 <translation id="443673843213245140">Starpniekservera lietošana ir atspējota, bet ir norādīta atklāta starpniekservera konfigurācija.</translation>
 <translation id="4464826014807964867">Vietnes ar informāciju no jūsu organizācijas</translation>
-<translation id="4466881336512663640">Veidlapas izmaiņas tiks zaudētas. Vai tiešām vēlaties turpināt?</translation>
 <translation id="4476953670630786061">Šī veidlapa nav droša. Automātiskā aizpilde ir izslēgta.</translation>
 <translation id="4477350412780666475">Nākamais ieraksts</translation>
 <translation id="4482953324121162758">Šī vietne netiks tulkota.</translation>
@@ -1294,7 +1293,6 @@
 <translation id="5785756445106461925">Turklāt šajā lapā ir citi resursi, kas nav droši. Kamēr šie resursi tiek pārsūtīti, tos var aplūkot citi, kā arī uzbrucējs var tos pārveidot, lai mainītu lapas izskatu.</translation>
 <translation id="5786044859038896871">Vai vēlaties aizpildīt laukus ar kartes informāciju?</translation>
 <translation id="578633867165174378">Pārlūkā Chrome tika konstatēts, ka nupat izmantotā parole ir atklāta datu pārkāpuma dēļ. Ieteicams nekavējoties nomainīt šo paroli.</translation>
-<translation id="5798290721819630480">Vai atmest izmaiņas?</translation>
 <translation id="5803412860119678065">Vai vēlaties aizpildīt lauku ar informāciju “<ph name="CARD_DETAIL" />”?</translation>
 <translation id="5804241973901381774">Atļaujas</translation>
 <translation id="5804427196348435412">izmantot NFC ierīces</translation>
@@ -1455,7 +1453,6 @@
 <translation id="6428450836711225518">Verificējiet savu tālruņa numuru</translation>
 <translation id="6433490469411711332">Kontaktinformācijas rediģēšana</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> noraidīja savienojuma izveidi.</translation>
-<translation id="6434309073475700221">Atmest</translation>
 <translation id="6440503408713884761">Ignorēts</translation>
 <translation id="6443406338865242315">Kurus paplašinājumus un spraudņus esat instalējis</translation>
 <translation id="6446163441502663861">Kahu (aploksne)</translation>
@@ -1712,7 +1709,6 @@
 <translation id="7481312909269577407">Pārsūtīt</translation>
 <translation id="7485870689360869515">Dati netika atrasti.</translation>
 <translation id="7495528107193238112">Šis saturs ir bloķēts. Lai novērstu problēmu, sazinieties ar vietnes īpašnieku.</translation>
-<translation id="7498234416455752244">Turpināt rediģēšanu</translation>
 <translation id="7503664977220660814">Jūs tikko ievadījāt savu paroli maldinošā vietnē. Chromium ieteikums: tūlīt pārbaudiet saglabātās paroles vietnē <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />, kā arī citās vietnēs, kurās izmantojat šo paroli.</translation>
 <translation id="7508255263130623398">Atgrieztais politikas ierīces ID ir tukšs vai neatbilst pašreizējam ierīces ID.</translation>
 <translation id="7508870219247277067">Avokado zaļa</translation>
diff --git a/components/strings/components_strings_mk.xtb b/components/strings/components_strings_mk.xtb
index 78b844d..da4f0b65 100644
--- a/components/strings/components_strings_mk.xtb
+++ b/components/strings/components_strings_mk.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">Разгледница)</translation>
 <translation id="443673843213245140">Оневозможена е употребата на прокси, но одредена е опширна конфигурација на прокси.</translation>
 <translation id="4464826014807964867">Веб-сајтови со информации од вашата организација</translation>
-<translation id="4466881336512663640">Промените на формуларот ќе се изгубат. Сигурно сакате да продолжите?</translation>
 <translation id="4476953670630786061">Формуларов не е безбеден. Автоматското пополнување е исклучено.</translation>
 <translation id="4477350412780666475">Следна песна</translation>
 <translation id="4482953324121162758">Сајтов нема да се преведе.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">Понатаму, страницава опфаќа други ресурси што не се безбедни. Нив може да ги гледаат други лица при преносот и може да ги менува напаѓач за да го смени изгледот на страницата.</translation>
 <translation id="5786044859038896871">Дали сакате да ги пополните информациите од картичката?</translation>
 <translation id="578633867165174378">Chrome ја најде лозинката која штотуку ја употребивте меѓу лозинките откриени при упад во податоците. Ви препорачуваме веднаш да ја промените.</translation>
-<translation id="5798290721819630480">Дали да се отфрлат промените?</translation>
 <translation id="5803412860119678065">Дали сакате да пополните <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Дозволи</translation>
 <translation id="5804427196348435412">Користи NFC-уреди</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">Потврдете го телефонскиот број</translation>
 <translation id="6433490469411711332">Уредете ги информациите за контакт</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> одби да се поврзе.</translation>
-<translation id="6434309073475700221">Отфрли</translation>
 <translation id="6440503408713884761">Игнориран</translation>
 <translation id="6443406338865242315">кои екстензии и приклучоци ги имате инсталирано</translation>
 <translation id="6446163441502663861">Kahu (плик)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">Напред</translation>
 <translation id="7485870689360869515">Не се пронајдени податоци.</translation>
 <translation id="7495528107193238112">Содржинава е блокирана. Контактирајте со сопственикот на сајтот за поправка на проблемот.</translation>
-<translation id="7498234416455752244">Продолжете да изменувате</translation>
 <translation id="7503664977220660814">Тукушто ја внесовте својата лозинка на измамнички сајт. Chromium препорачува веднаш да ги проверите зачуваните лозинки за <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> и другите сајтови каде што ја користите лозинкава.</translation>
 <translation id="7508255263130623398">Вратениот id на уредот на правилото е празен или не соодветствува со тековниот id на уредот</translation>
 <translation id="7508870219247277067">Зелена како авокадо</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb
index d912a77..6af200e 100644
--- a/components/strings/components_strings_ml.xtb
+++ b/components/strings/components_strings_ml.xtb
@@ -937,7 +937,6 @@
 <translation id="4435702339979719576">പോസ്‌റ്റ്‌ കാർഡ്)</translation>
 <translation id="443673843213245140">പ്രോക്‌സി ഉപയോഗം അപ്രാപ്‌തമാക്കി പക്ഷെ ഒരു വ്യക്തമായ പ്രോക്‌സി കോൺഫിഗറേഷൻ നിർദ്ദേശിച്ചു.</translation>
 <translation id="4464826014807964867">നിങ്ങളുടെ സ്ഥാപനത്തിൽ നിന്നുള്ള വിവരങ്ങൾ അടങ്ങിയിരിക്കുന്ന വെബ്സൈറ്റുകൾ</translation>
-<translation id="4466881336512663640">ഫോം മാറ്റങ്ങൾ നഷ്‌ടമാകും. തുടരണമെന്ന് നിങ്ങൾക്ക് തീർച്ചയാണോ?</translation>
 <translation id="4476953670630786061">ഈ ഫോം സുരക്ഷിതമല്ല. സ്വയമേവ പൂരിപ്പിക്കൽ ഓഫാക്കിയിരിക്കുന്നു.</translation>
 <translation id="4477350412780666475">അടുത്ത ട്രാക്ക്</translation>
 <translation id="4482953324121162758">ഈ സൈറ്റ് വിവർത്തനം ചെയ്യപ്പെടില്ല.</translation>
@@ -1291,7 +1290,6 @@
 <translation id="5785756445106461925">കൂടാതെ, ഈ പേജിൽ സുരക്ഷിതമല്ലാത്ത മറ്റ് ഉറവിടങ്ങൾ ഉൾപ്പെടുന്നു. ഈ ഉറവിടങ്ങൾ കൈമാറുന്നതിനിടെ മറ്റുള്ളവർക്ക് കാണാനും പേജിന്റെ രൂപം മാറ്റുന്ന തരത്തിൽ ഒരു ആക്രമണകാരിയ്‌ക്ക് പരിഷ്‌ക്കരിക്കാനുമായേക്കും.</translation>
 <translation id="5786044859038896871">നിങ്ങളുടെ കാർഡ് വിവരം പൂരിപ്പിക്കണോ?</translation>
 <translation id="578633867165174378">Chrome, നിങ്ങൾ ഇപ്പോൾ ഉപയോഗിച്ച പാസ്‌വേഡ് ഡാറ്റാ ലംഘനത്തിൽ കണ്ടെത്തിയിരിക്കുന്നു. ഈ പാസ്‌വേഡ് ഇപ്പോൾ തന്നെ മാറ്റാൻ ഞങ്ങൾ നിർദ്ദേശിക്കുന്നു.</translation>
-<translation id="5798290721819630480">മാറ്റങ്ങൾ നിരസിക്കണോ?</translation>
 <translation id="5803412860119678065">നിങ്ങളുടെ <ph name="CARD_DETAIL" /> പൂരിപ്പിക്കണോ?</translation>
 <translation id="5804241973901381774">അനുമതികൾ</translation>
 <translation id="5804427196348435412">NFC ഉപകരണങ്ങൾ ഉപയോഗിക്കുക</translation>
@@ -1452,7 +1450,6 @@
 <translation id="6428450836711225518">നിങ്ങളുടെ ഫോൺ നമ്പർ പരിശോധിച്ചുറപ്പിക്കുക</translation>
 <translation id="6433490469411711332">കോൺടാക്‌റ്റ് വിവരം എഡിറ്റ് ചെയ്യുക</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> കണക്‌റ്റുചെയ്യൽ നിരസിച്ചു.</translation>
-<translation id="6434309073475700221">നിരാകരിക്കുക</translation>
 <translation id="6440503408713884761">അവഗണിച്ചു</translation>
 <translation id="6443406338865242315">ഏതൊക്കെ വിപുലീകരണങ്ങളും പ്ലഗിനുകളും നിങ്ങൾ ഇൻസ്‌റ്റാൾ ചെയ്തിട്ടുണ്ട് എന്നത്</translation>
 <translation id="6446163441502663861">കഹു (എൻവലപ്പ്)</translation>
@@ -1707,7 +1704,6 @@
 <translation id="7481312909269577407">മുന്നോട്ട്</translation>
 <translation id="7485870689360869515">ഡാറ്റകളൊന്നും കണ്ടെത്തിയില്ല.</translation>
 <translation id="7495528107193238112">ഈ ഉള്ളടക്കം ബ്ലോക്ക് ചെയ്‌തിരിക്കുന്നു. പ്രശ്‌നം പരിഹരിക്കാൻ സൈറ്റിന്റെ ഉടമയുമായി ബന്ധപ്പെടുക.</translation>
-<translation id="7498234416455752244">എഡിറ്റ് ചെയ്യുന്നത് തുടരുക</translation>
 <translation id="7503664977220660814">വഞ്ചനാപരമായ സൈറ്റിൽ നിങ്ങൾ ഇപ്പോൾ പാസ്‍വേഡ് നൽകി. <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />, കൂടാതെ നിങ്ങൾ ഇപ്പോൾ ഈ പാസ്‌വേഡ് ഉപയോഗിക്കുന്ന മറ്റ് സൈറ്റുകൾ എന്നിവയ്‌ക്കായി നിങ്ങളുടെ സംരക്ഷിച്ച പാസ്‌വേഡുകൾ പരിശോധിക്കാൻ Chromium നിർദ്ദേശിക്കുന്നു.</translation>
 <translation id="7508255263130623398">നൽകിയ നയ ഉപകരണ ഐഡി ശൂന്യമാണ് അല്ലെങ്കിൽ നിലവിലെ ഉപകരണ ഐഡിയുമായി യോജിക്കുന്നില്ല</translation>
 <translation id="7508870219247277067">അവക്കാഡോ പച്ച</translation>
diff --git a/components/strings/components_strings_mn.xtb b/components/strings/components_strings_mn.xtb
index 27602901..9a3f1cc 100644
--- a/components/strings/components_strings_mn.xtb
+++ b/components/strings/components_strings_mn.xtb
@@ -944,7 +944,6 @@
 <translation id="4435702339979719576">Ил захидал)</translation>
 <translation id="443673843213245140">Орлон ашиглах эрхийг хаасан байгаа боловч тодорхой түвшинд орлон ашиглах тохиргоог тусгасан байна.</translation>
 <translation id="4464826014807964867">Танай байгууллагын мэдээлэлтэй вебсайтууд</translation>
-<translation id="4466881336512663640">Маягтын өөрчлөлтийг хадгалахгүй. Та үргэлжлүүлэх үү?</translation>
 <translation id="4476953670630786061">Энэ маягт аюултай байна. Автоматаар бөглөх хэсгийг унтраасан байна.</translation>
 <translation id="4477350412780666475">Дараагийн бичлэг</translation>
 <translation id="4482953324121162758">Энэ сайтыг орчуулахгүй.</translation>
@@ -1298,7 +1297,6 @@
 <translation id="5785756445106461925">Цаашилбал, энэ хуудас нь аюултай бусад үүсвэрүүдийг агуулж байна. Ийм төрлийн үүсвэрүүдийг дамжуулж байх явцад бусад хүмүүс харах, мөн халдагч нар хуусанд нөлөөлөхүйц байдлаар өөрчилж болдог.</translation>
 <translation id="5786044859038896871">Картын мэдээллээ бөглөх үү?</translation>
 <translation id="578633867165174378">Chrome таны дөнгөж сая ашигласан нууц үгийг өгөгдлийн зөрчлөөс оллоо. Бид энэ нууц үгийг одоо өөрчлөхийг зөвлөж байна.</translation>
-<translation id="5798290721819630480">Өөрчлөлтийг болих уу?</translation>
 <translation id="5803412860119678065">Та <ph name="CARD_DETAIL" />-г бөглөх үү?</translation>
 <translation id="5804241973901381774">Зөвшөөрлүүд</translation>
 <translation id="5804427196348435412">NFC төхөөрөмжүүдийг ашиглах</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">Утасны дугаараа баталгаажуулах</translation>
 <translation id="6433490469411711332">Харилцагчийн мэдээллийг засах</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> нь холбогдохоос татгалзлаа.</translation>
-<translation id="6434309073475700221">Хэрэгсэхгүй байх</translation>
 <translation id="6440503408713884761">Хаагдсан</translation>
 <translation id="6443406338865242315">Таны ямар өргөтгөл болон залгаасыг суулгасан болох</translation>
 <translation id="6446163441502663861">Каху (Дугтуй)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">Forward</translation>
 <translation id="7485870689360869515">Мэдээлэл байхгүй байна.</translation>
 <translation id="7495528107193238112">Энэ контентыг блоклосон байна. Асуудлыг шийдвэрлэхийн тулд сайтын өмчлөгчтэй холбогдоно уу.</translation>
-<translation id="7498234416455752244">Үргэлжлүүлэн засах</translation>
 <translation id="7503664977220660814">Та дөнгөж сая сэжигтэй сайтад нууц үгээ орууллаа. Таны энэ нууц үгийг ашигладаг <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> болон бусад сайтын хувьд хадгалсан нууц үгсээ одоо шалгахыг Chromium зөвлөж байна.</translation>
 <translation id="7508255263130623398">Буцаасан удирдамжийн төхөөрөмжийн id хоосон, эсвэл одоогийн төхөөрөмжийн id-тай тохирохгүй байна</translation>
 <translation id="7508870219247277067">Авокадо ногоон</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb
index de2c7886..9ad2cb8a 100644
--- a/components/strings/components_strings_mr.xtb
+++ b/components/strings/components_strings_mr.xtb
@@ -218,6 +218,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706954506755087368">{1,plural, =1{हा सर्व्हर हे <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याचे सुरक्षा सर्टिफिकेट उद्यापासून मानले जाईल. हे कदाचित एका चुकीच्या कॉंफिगरेशनमुळे किंवा हल्लेखोराने तुमचे कनेक्शन इंटरसेप्ट केल्यामुळे झाले असू शकते.}other{हा सर्व्हर हे <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याचे सुरक्षा सर्टिफिकेट पुढील # दिवसांपासून मानले जाईल. हे कदाचित एका चुकीच्या कॉंफिगरेशनमुळे किंवा हल्लेखोराने तुमचे कनेक्शन इंटरसेप्ट केल्यामुळे झाले असू शकते.}}</translation>
 <translation id="1710259589646384581">OS</translation>
+<translation id="1711234383449478798"><ph name="POLICY_NAME" /> हे <ph name="VALUE" /> वर सेट न केल्यामुळे दुर्लक्षित केले.</translation>
 <translation id="1712552549805331520"><ph name="URL" /> ला तुमच्या स्थानिक काँप्युटरवर डेटा कायमचा स्टोअर करायचा आहे</translation>
 <translation id="1713628304598226412">ट्रे २</translation>
 <translation id="1715874602234207">F</translation>
@@ -941,7 +942,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">प्रॉक्सीचा वापर अक्षम करण्‍यात आला आहे पण एक सुस्पष्‍ट प्रॉक्सी कॉन्‍फिगरेशन निर्दिष्‍ट करण्‍यात आले आहे.</translation>
 <translation id="4464826014807964867">तुमच्या संस्थेची माहिती असलेल्या वेबसाइट</translation>
-<translation id="4466881336512663640">फॉर्म बदल गमावतील. तुम्हाला नक्की पुढे सुरू ठेवायचे आहे?</translation>
 <translation id="4476953670630786061">हा फॉर्म सुरक्षित नाही. ऑटोफिल बंद केले आहे.</translation>
 <translation id="4477350412780666475">पुढील ट्रॅक</translation>
 <translation id="4482953324121162758">या साइटचे भाषांतर केले जाणार नाही.</translation>
@@ -1295,7 +1295,6 @@
 <translation id="5785756445106461925">पुढे, या पृष्ठात सुरक्षित नसलेली इतर संसाधने समाविष्ट आहेत. ही संसाधने संक्रमणात असताना इतरांद्वारे पाहिली जाऊ शकतात आणि पृष्ठाचे स्वरूप बदलण्यासाठी आक्रमणकर्त्याद्वारे सुधारित केली जाऊ शकतात.</translation>
 <translation id="5786044859038896871">तुम्ही तुमची कार्ड माहिती भरू इच्छित आहात?</translation>
 <translation id="578633867165174378">Chrome ला तुम्ही नुकताच डेटा भंगामध्ये वापरलेला पासवर्ड आढळळा आहे. आम्ही हा पासवर्ड आताच बदलण्याची शिफारस करतो.</translation>
-<translation id="5798290721819630480">बदल टाकून द्यायचे?</translation>
 <translation id="5803412860119678065">तुम्ही तुमचे <ph name="CARD_DETAIL" /> भरू इच्छित आहात?</translation>
 <translation id="5804241973901381774">परवानग्या</translation>
 <translation id="5804427196348435412">NFC डिव्हाइस वापरा</translation>
@@ -1457,7 +1456,6 @@
 <translation id="6428450836711225518">तुमच्या फोन नंबरची पडताळणी करा</translation>
 <translation id="6433490469411711332">संपर्क माहिती संपादित करा</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> नी कनेक्ट करण्यास नकार दिला.</translation>
-<translation id="6434309073475700221">टाकून द्या</translation>
 <translation id="6440503408713884761">दुर्लक्ष केले</translation>
 <translation id="6443406338865242315">तुम्ही कोणती एक्स्टेंशन आणि प्लग-इन इंस्टॉल केली आहेत</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1714,7 +1712,6 @@
 <translation id="7481312909269577407">पुढील</translation>
 <translation id="7485870689360869515">डेटा आढळला नाही.</translation>
 <translation id="7495528107193238112">हा आशय ब्लॉक केला गेला आहे. समस्येचे निराकरण करण्यासाठी साइटच्या मालकाशी संपर्क साधा.</translation>
-<translation id="7498234416455752244">संपादन सुरू ठेवा</translation>
 <translation id="7503664977220660814">तुम्ही आताच एका फसव्या साइटवर तुमचा पासवर्ड एंटर केला. तुम्ही हा पासवर्ड आता जेथे वापरता अशा <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> आणि इतर साइटसाठी तुमचे सेव्ह केलेले पासवर्ड तपासण्याची Chromium शिफारस करते.</translation>
 <translation id="7508255263130623398">परत केलेला धोरण डिव्हाइस आयडी रिक्त आहे किंवा वर्तमान डिव्हाइस आयडी शी जुळत नाही</translation>
 <translation id="7508870219247277067">हिरवे पिवळे</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb
index 3b2024b..67b5044 100644
--- a/components/strings/components_strings_ms.xtb
+++ b/components/strings/components_strings_ms.xtb
@@ -944,7 +944,6 @@
 <translation id="4435702339979719576">Poskad)</translation>
 <translation id="443673843213245140">Penggunaan proksi dilumpuhkan tetapi konfigurasi proksi yang jelas dinyatakan.</translation>
 <translation id="4464826014807964867">Laman web yang mempunyai maklumat daripada organisasi anda</translation>
-<translation id="4466881336512663640">Perubahan borang akan hilang. Adakah anda pasti mahu meneruskan?</translation>
 <translation id="4476953670630786061">Borang ini tidak selamat. Autolengkap telah dimatikan.</translation>
 <translation id="4477350412780666475">Lagu Seterusnya</translation>
 <translation id="4482953324121162758">Tapak ini tidak akan diterjemah.</translation>
@@ -1298,7 +1297,6 @@
 <translation id="5785756445106461925">Selain itu, halaman ini mengandungi sumber lain yang tidak selamat. Sumber ini boleh dilihat oleh orang lain semasa dalam transit dan boleh diubah oleh penyerang untuk menukar penampilan halaman.</translation>
 <translation id="5786044859038896871">Adakah anda ingin mengisi maklumat kad anda?</translation>
 <translation id="578633867165174378">Chrome menemukan kata laluan yang baru sahaja anda gunakan dalam pelanggaran data. Chrome mengesyorkan agar anda menukar kata laluan ini sekarang.</translation>
-<translation id="5798290721819630480">Buang perubahan?</translation>
 <translation id="5803412860119678065">Adakah anda ingin mengisi <ph name="CARD_DETAIL" /> anda?</translation>
 <translation id="5804241973901381774">Kebenaran</translation>
 <translation id="5804427196348435412">Gunakan peranti NFC</translation>
@@ -1459,7 +1457,6 @@
 <translation id="6428450836711225518">Sahkan nombor telefon anda</translation>
 <translation id="6433490469411711332">Edit maklumat hubungan</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> enggan menyambung.</translation>
-<translation id="6434309073475700221">Buang</translation>
 <translation id="6440503408713884761">Diabaikan</translation>
 <translation id="6443406338865242315">Sambungan dan pemalam yang telah anda pasang</translation>
 <translation id="6446163441502663861">Kahu (Sampul Surat)</translation>
@@ -1716,7 +1713,6 @@
 <translation id="7481312909269577407">Majukan</translation>
 <translation id="7485870689360869515">Tiada data dijumpai.</translation>
 <translation id="7495528107193238112">Kandungan ini disekat. Hubungi pemilik tapak untuk menyelesaikan isu ini.</translation>
-<translation id="7498234416455752244">Teruskan mengedit</translation>
 <translation id="7503664977220660814">Anda baru sahaja memasukkan kata laluan pada tapak yang menipu. Chromium mengesyorkan penyemakan kata laluan anda yang disimpan untuk <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> dan tapak lain yang menggunakan kata laluan ini sekarang.</translation>
 <translation id="7508255263130623398">Id peranti yang dikembalikan kosong atau tidak sepadan dengan id peranti semasa</translation>
 <translation id="7508870219247277067">Hijau Avokado</translation>
diff --git a/components/strings/components_strings_my.xtb b/components/strings/components_strings_my.xtb
index 3dd71369..4bcf51b2 100644
--- a/components/strings/components_strings_my.xtb
+++ b/components/strings/components_strings_my.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">ပို့စ်ကတ်)</translation>
 <translation id="443673843213245140">ပရောက်စီ သုံးရန်ပိတ်ထားသော်လည်း တိကျသည့် ပရောက်စီ စီစဉ်ဖွဲ့စည်းမှုကို သတ်မှတ်ထားသည်။</translation>
 <translation id="4464826014807964867">သင့်အဖွဲ့အစည်းမှ အချက်အလက်ပါဝင်သော ဝဘ်ဆိုက်များ</translation>
-<translation id="4466881336512663640">ပုံစံ အပြောင်းအလဲများကို သိမ်းမည်မဟုတ်ပါ။ ရှေ့ဆက်လိုသည်မှာ သေချာသလား။</translation>
 <translation id="4476953670630786061">ဤဖောင်သည် မလုံခြုံပါ။ 'အော်တိုဖြည့်' ကို ပိတ်လိုက်ပါပြီ။</translation>
 <translation id="4477350412780666475">နောက်တစ်ပုဒ်</translation>
 <translation id="4482953324121162758">ဤဝဘ်ဆိုက်ကို ဘာသာပြန်မည် မဟုတ်ပါ။</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">ထပ်မံ၍၊ ဤစာမျက်နှာတွင် လုံခြုံမှု မရှိသော အခြားမှီငြမ်းထားမှုများ ပါဝင်သည်။ ဤမှီငြမ်းထားမှုများအား ကြားကာလတွင် အခြားသူများမှ ကြည့်နိုင်ပြီး စာမျက်နှာ၏ အသွင်အပြင်ကို ပြောင်းလဲရန် တိုက်ခိုက်သူမှ ပြုပြင်နိုင်သည်။</translation>
 <translation id="5786044859038896871">သင့်ကဒ်အချက်အလက်ကို ဖြည့်သွင်းလိုပါသလား။</translation>
 <translation id="578633867165174378">သင်သုံးလိုက်သောစကားဝှက်ကို ဒေတာကျိုးပေါက်မှုတွင် Chrome က တွေ့ရှိထားသည်။ ဤစကားဝှက်ကို ယခုပြောင်းရန် အကြံပြုပါသည်။</translation>
-<translation id="5798290721819630480">အပြောင်းအလဲများ ဖယ်ပစ်မလား။</translation>
 <translation id="5803412860119678065">သင့် <ph name="CARD_DETAIL" /> ကို ဖြည့်သွင်းလိုပါသလား။</translation>
 <translation id="5804241973901381774">ခွင့်ပြုချက်များ</translation>
 <translation id="5804427196348435412">NFC စက်များ အသုံးပြုပါ</translation>
@@ -1457,7 +1455,6 @@
 <translation id="6428450836711225518">သင်၏ဖုန်းနံပါတ်ကို အတည်ပြုပါ</translation>
 <translation id="6433490469411711332">အဆက်အသွယ်အချက်အလက်ကို တည်းဖြတ်ပါ</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> သည်ချိတ်ဆက်ရန် ငြင်းပယ်ခဲ့သည်။</translation>
-<translation id="6434309073475700221">စွန့်ပစ်ရန်</translation>
 <translation id="6440503408713884761">လျစ်လျူရှုထားသည်</translation>
 <translation id="6443406338865242315">သင်ထည့်သွင်းထားသည့် နောက်ဆက်တွဲနှင့် ပလတ်အင်များ</translation>
 <translation id="6446163441502663861">Kahu (စာအိတ်)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">ရှေ့သို့</translation>
 <translation id="7485870689360869515">ဒေတာ မတွေ့ရပါ။</translation>
 <translation id="7495528107193238112">ဤအကြောင်းအရာကို ပိတ်ထားသည်။ ပြဿနာကို ဖြေရှင်းရန် ဝဘ်ဆိုက်ပိုင်ရှင်ကို ဆက်သွယ်ပါ။</translation>
-<translation id="7498234416455752244">ဆက်လက်တည်းဖြတ်ရန်</translation>
 <translation id="7503664977220660814">လှည့်ဖြားတတ်သော ဝဘ်ဆိုက်တစ်ခုတွင် သင့်စကားဝှက်ကို ထည့်လိုက်ပါသည်။ ယခု ဤစကားဝှက်ကို သင်အသုံးပြုထားသည့် <ph name="WEBSITE_1" />၊ <ph name="WEBSITE_2" /> နှင့် အခြားသောဝဘ်ဆိုက်များအတွက် သင်သိမ်းဆည်းထားသည့် စကားဝှက်များကို စစ်ဆေးရန် Chromium က အကြံပြုသည်။</translation>
 <translation id="7508255263130623398">ပစ္စည်းပြန်ပို့နိုင်သည့် မူဝါဒဆိုင်ရာကိရိယာအိုင်ဒီသည် ကွက်လပ်ဖြစ်နေပါသည် သို့မဟုတ် လက်ရှိကိရိယာအိုင်ဒီနှင့် ကိုက်ညီမှုမရှိပါ</translation>
 <translation id="7508870219247277067">ထောပတ်သီးစိမ်း</translation>
diff --git a/components/strings/components_strings_ne.xtb b/components/strings/components_strings_ne.xtb
index 9bb2ccf7..9735be6 100644
--- a/components/strings/components_strings_ne.xtb
+++ b/components/strings/components_strings_ne.xtb
@@ -938,7 +938,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">प्रोक्सीको प्रयोग असक्षम गरिएको छ तर एक सुस्पष्ट प्रोक्सी विन्यास तोकिएको छ।</translation>
 <translation id="4464826014807964867">तपाईंको सङ्गठनले प्रदान गरेको जानकारी भएका वेबसाइटहरू</translation>
-<translation id="4466881336512663640">फारममा गरिएका परिवर्तनहरू हराउने छन्। तपाईंले जारी राख्न खोज्नुभएकै हो?</translation>
 <translation id="4476953670630786061">यो फारम सुरक्षित छैन। अटोफिल सुविधा अफ गरिएको छ।</translation>
 <translation id="4477350412780666475">अर्को ट्र्याक</translation>
 <translation id="4482953324121162758">यो साइटको अनुवाद गरिने छैन।</translation>
@@ -1292,7 +1291,6 @@
 <translation id="5785756445106461925">यसबाहेक, यस पृष्ठले सुरक्षित नभएका अन्य संसाधनहरू समावेश गर्छ। यी स्रोतहरू ट्रान्जिटमा भएको बेला अन्यले हेर्न सक्छन्, र पृष्ठको दृश्य परिवर्तन गर्न कुनै आक्रमणकारीद्वारा परिमार्जन गर्न सकिन्छ।</translation>
 <translation id="5786044859038896871">तपाईं आफ्नो कार्ड सम्बन्धी जानकारी भर्न चाहनुहुन्छ?</translation>
 <translation id="578633867165174378">Chrome ले तपाईंले भर्खरै प्रयोग गर्नुभएको पासवर्ड डेटा चोरीको घटनामा खुलासा गरिएको पत्ता लगायो। हामी तपाईंलाई अहिले नै यो पासवर्ड बदल्न सिफारिस गर्छौँ।</translation>
-<translation id="5798290721819630480">परिवर्तनहरू खारेज गर्ने हो?</translation>
 <translation id="5803412860119678065">तपाईं आफ्नो <ph name="CARD_DETAIL" /> सम्बन्धी जानकारी भर्न चाहनुहुन्छ?</translation>
 <translation id="5804241973901381774">अनुमतिहरू</translation>
 <translation id="5804427196348435412">NFC यन्त्रहरू प्रयोग गर्नुहोस्</translation>
@@ -1453,7 +1451,6 @@
 <translation id="6428450836711225518">आफ्नो फोन नम्बरको पुष्टि गर्नुहोस्</translation>
 <translation id="6433490469411711332">सम्पर्क सम्बन्धी जानकारीलाई सम्पादन गर्नुहोस्</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> ले जडान गर्न अस्वीकार गर्यो।</translation>
-<translation id="6434309073475700221">त्याग्नुहोस्</translation>
 <translation id="6440503408713884761">उपेक्षित</translation>
 <translation id="6443406338865242315">तपाईंले स्थापना गर्नुभएका विस्तार र प्लगइनहरू</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1710,7 +1707,6 @@
 <translation id="7481312909269577407">अगाडि</translation>
 <translation id="7485870689360869515">कुनैपनि डाटा भेटिएन।</translation>
 <translation id="7495528107193238112">यो सामग्रीलाई रोक लगाइएको छ। यो समस्या समाधान गर्न उक्त साइटका मालिकसँग सम्पर्क गर्नुहोस्।</translation>
-<translation id="7498234416455752244">सम्पादन गरिरहनुहोस्</translation>
 <translation id="7503664977220660814">तपाईंले भर्खरै कुनै भ्रामक साइटमा आफ्नो पासवर्ड प्रविष्टि गर्नुभएको छ। Chromium तपाईंलाई अहिले नै <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> र तपाईंले हाल यो पासवर्ड प्रयोग गर्ने अन्य साइटका सुरक्षित गरिएका पासवर्डहरूको जाँच गर्न सिफारिस गर्छ।</translation>
 <translation id="7508255263130623398">फिर्ता गरिएको नीति सम्बन्धी यन्त्र खाली छ वा हालको यन्त्रको id सँग मेल खाँदैन</translation>
 <translation id="7508870219247277067">गाढा हरियो</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb
index 9aa7e7cd..08999387 100644
--- a/components/strings/components_strings_nl.xtb
+++ b/components/strings/components_strings_nl.xtb
@@ -931,7 +931,6 @@
 <translation id="4435702339979719576">Briefkaart</translation>
 <translation id="443673843213245140">Er kan geen proxy worden gebruikt, maar er is wel een expliciete proxyconfiguratie opgegeven.</translation>
 <translation id="4464826014807964867">Websites met gegevens van je organisatie</translation>
-<translation id="4466881336512663640">Hiermee gaan formulierwijzigingen verloren. Weet je zeker dat je wilt doorgaan?</translation>
 <translation id="4476953670630786061">Dit formulier is niet beveiligd. Automatisch invullen staat uit.</translation>
 <translation id="4477350412780666475">Volgend nummer</translation>
 <translation id="4482953324121162758">Deze site wordt niet vertaald.</translation>
@@ -1283,7 +1282,6 @@
 <translation id="5785756445106461925">Bovendien bevat deze pagina bronnen die niet beveiligd zijn. Deze bronnen kunnen tijdens verzending door anderen worden bekeken en kunnen door een aanvaller worden gewijzigd om het uiterlijk van de pagina aan te passen.</translation>
 <translation id="5786044859038896871">Wil je de gegevens van je creditcard laten invullen?</translation>
 <translation id="578633867165174378">Chrome heeft het wachtwoord dat je net hebt gebruikt, gevonden bij een gegevenslek. We raden je aan dit wachtwoord nu te wijzigen.</translation>
-<translation id="5798290721819630480">Wijzigingen niet opslaan?</translation>
 <translation id="5803412860119678065">Wil je de gegevens van je <ph name="CARD_DETAIL" /> laten invullen?</translation>
 <translation id="5804241973901381774">Rechten</translation>
 <translation id="5804427196348435412">NFC-apparaten gebruiken</translation>
@@ -1443,7 +1441,6 @@
 <translation id="6428450836711225518">Je telefoonnummer verifiëren</translation>
 <translation id="6433490469411711332">Contactgegevens bewerken</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> heeft de verbinding geweigerd.</translation>
-<translation id="6434309073475700221">Verwijderen</translation>
 <translation id="6440503408713884761">Genegeerd</translation>
 <translation id="6443406338865242315">Welke extensies en plug-ins je hebt geïnstalleerd</translation>
 <translation id="6446163441502663861">Kahu (envelop)</translation>
@@ -1700,7 +1697,6 @@
 <translation id="7481312909269577407">Vooruit</translation>
 <translation id="7485870689360869515">Geen gegevens gevonden.</translation>
 <translation id="7495528107193238112">Deze content is geblokkeerd. Neem contact op met de site-eigenaar om het probleem op te lossen.</translation>
-<translation id="7498234416455752244">Doorgaan met bewerken</translation>
 <translation id="7503664977220660814">Je hebt zojuist je wachtwoord opgegeven op een misleidende site. Chromium raadt je aan je opgeslagen wachtwoorden voor <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> en andere sites waarop je dit wachtwoord gebruikt, nu te checken.</translation>
 <translation id="7508255263130623398">Geretourneerde apparaat-ID voor beleid is leeg of komt niet overeen met de huidige apparaat-ID</translation>
 <translation id="7508870219247277067">Avocadogroen</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb
index fdee02a7..3b411b3 100644
--- a/components/strings/components_strings_no.xtb
+++ b/components/strings/components_strings_no.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">postkort)</translation>
 <translation id="443673843213245140">Bruk av proxy-tjener er deaktivert, men det er angitt en uttrykkelig proxy-tjenerkonfigurasjon.</translation>
 <translation id="4464826014807964867">Nettsteder med informasjon fra organisasjonen din</translation>
-<translation id="4466881336512663640">Endringer i skjemaet går tapt. Er du sikker på at du vil fortsette?</translation>
 <translation id="4476953670630786061">Dette skjemaet er ikke sikkert. Autofyll er slått av.</translation>
 <translation id="4477350412780666475">Neste spor</translation>
 <translation id="4482953324121162758">Dette nettstedet oversettes ikke.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">Denne siden inneholder i tillegg andre ressurser som ikke er sikre. Disse ressursene er synlige for andre mens de sendes frem og tilbake, og eventuelle angripere kan modifisere dem for å endre på utseendet til siden.</translation>
 <translation id="5786044859038896871">Vil du fylle ut kortinformasjonen?</translation>
 <translation id="578633867165174378">Chrome har funnet passordet du nettopp brukte, i et databrudd. Vi anbefaler at du endrer dette passordet nå.</translation>
-<translation id="5798290721819630480">Vil du forkaste endringene?</translation>
 <translation id="5803412860119678065">Vil du fylle ut informasjonen knyttet til <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Tillatelser</translation>
 <translation id="5804427196348435412">Bruk NFC-enheter</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">Bekreft telefonnummeret ditt</translation>
 <translation id="6433490469411711332">Endre kontaktinformasjonen</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> avviste tilkoblingsforsøket.</translation>
-<translation id="6434309073475700221">Forkast</translation>
 <translation id="6440503408713884761">Ignorert</translation>
 <translation id="6443406338865242315">hvilke utvidelser og programtillegg du har installert</translation>
 <translation id="6446163441502663861">Kahu (konvolutt)</translation>
@@ -1714,7 +1711,6 @@
 <translation id="7481312909269577407">Frem</translation>
 <translation id="7485870689360869515">Ingen data ble funnet.</translation>
 <translation id="7495528107193238112">Dette innholdet er blokkert. Kontakt nettstedseieren for å løse problemet.</translation>
-<translation id="7498234416455752244">Fortsett å endre</translation>
 <translation id="7503664977220660814">Du har nettopp skrevet inn passordet ditt på et villedende nettsted. Chromium anbefaler at du sjekker de lagrede passordene dine for <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> og andre nettsteder der du bruker dette passordet, nå.</translation>
 <translation id="7508255263130623398">Den returnerte enhets-ID-en for regelen er tom eller samsvarer ikke med den faktiske enhets-ID-en</translation>
 <translation id="7508870219247277067">Avokadogrønn</translation>
diff --git a/components/strings/components_strings_or.xtb b/components/strings/components_strings_or.xtb
index 25978d1..e88bb92 100644
--- a/components/strings/components_strings_or.xtb
+++ b/components/strings/components_strings_or.xtb
@@ -218,6 +218,7 @@
 <translation id="1703835215927279855">ଲେଟର୍</translation>
 <translation id="1706954506755087368">{1,plural, =1{ଏହି ସର୍ଭର୍‌ ପ୍ରମାଣ କରିପାରିଲା ନାହିଁ ଯେ ଏହା <ph name="DOMAIN" /> ଅଟେ; ଏହାର ସୁରକ୍ଷା ସର୍ଟିଫିକେଟ୍‍ ଆସନ୍ତାକାଲିଠାରୁ ସ୍ୱୀକାର କରାଯିବ। ଏହା ହୁଏତ ଏକ ଭୁଲ୍ କନଫିଗ୍‍‍ରେସନ୍ କିମ୍ବା ଜଣେ ଆକ୍ରମଣକାରୀ ଆପଣଙ୍କର ସଂଯୋଗକୁ ପ୍ରତିରୋଧ କରୁଥିବା କାରଣରୁ ହୋଇପାରେ।}other{ଏହି ସର୍ଭର୍‌ ପ୍ରମାଣ କରିପାରିଲା ନାହିଁ ଯେ ଏହା <ph name="DOMAIN" /> ଅଟେ; ଏହାର ସୁରକ୍ଷା ସର୍ଟିଫିକେଟ୍‍ ଭବିଷ୍ୟତରେ # ଦିନଠାରୁ ସ୍ୱୀକାର କରାଯିବ। ଏହା ହୁଏତ ଏକ ଭୁଲ୍ କନଫିଗ୍‍‍ରେସନ୍ କିମ୍ବା ଜଣେ ଆକ୍ରମଣକାରୀ ଆପଣଙ୍କର ସଂଯୋଗକୁ ପ୍ରତିରୋଧ କରୁଥିବା କାରଣରୁ ହୋଇପାରେ।}}</translation>
 <translation id="1710259589646384581">OS</translation>
+<translation id="1711234383449478798"><ph name="POLICY_NAME" /> <ph name="VALUE" />ରେ ସେଟ୍ ହୋଇନଥିବା ଯୋଗୁଁ ଅଣଦେଖା କରାଯାଇଛି।</translation>
 <translation id="1712552549805331520"><ph name="URL" /> ସ୍ଥାୟୀରୂପେ ଆପଣଙ୍କର ସ୍ଥାନୀୟ କମ୍ପ୍ୟୁଟର୍‌ରେ ଡାଟା ଷ୍ଟୋର୍ କରିବାକୁ ଚାହୁଁଛି</translation>
 <translation id="1713628304598226412">ଟ୍ରେ 2</translation>
 <translation id="1715874602234207">F</translation>
@@ -928,7 +929,6 @@
 <translation id="4435702339979719576">ପୋଷ୍ଟକାର୍ଡ)</translation>
 <translation id="443673843213245140">ଏକ ପ୍ରୋକ୍ସିର ବ୍ୟବହାର ଅକ୍ଷମ କରାଯାଇଛି କିନ୍ତୁ ଏକ ସୁନିର୍ଦ୍ଦିଷ୍ଟ ପ୍ରକ୍ସି କନ୍‌ଫିଗ୍‌ରେସନ୍ ନିର୍ଦ୍ଦିଷ୍ଟ କରାଯାଇଛି।</translation>
 <translation id="4464826014807964867">ଆପଣଙ୍କ ସଂସ୍ଥା ଦ୍ୱାରା ପ୍ରଦାନ କରାଯାଇଥିବା ସୂଚନା ଥିବା ୱେବସାଇଟଗୁଡ଼ିକ</translation>
-<translation id="4466881336512663640">ଫର୍ମରେ ହେଉଥିବା ପରିବର୍ତ୍ତନଗୁଡ଼ିକ ରହିବ ନାହିଁ। ଆପଣ କ’ଣ ନିଶ୍ଚିତ ଯେ ଆପଣ ଜାରି ରଖିବାକୁ ଚାହୁଁଛନ୍ତି?</translation>
 <translation id="4476953670630786061">ଏହି ଫର୍ମ ସୁରକ୍ଷିତ ନୁହେଁ। ସ୍ୱତଃପୂରଣକୁ ବନ୍ଦ କରାଯାଇଛି।</translation>
 <translation id="4477350412780666475">ପରବର୍ତ୍ତୀ ଟ୍ରାକ୍</translation>
 <translation id="4482953324121162758">ଏହି ସାଇଟ୍‌କୁ ଅନୁବାଦ କରାଯିବ ନାହିଁ।</translation>
@@ -1282,7 +1282,6 @@
 <translation id="5785756445106461925">ସେ ଯାହା ହେଉ, ଏହି ପୃଷ୍ଠା ସେହି ଅନ୍ୟ ଉତ୍ସଗୁଡିକ ଅନ୍ତର୍ଭୂକ୍ତ କରେ ଯେଉଁଗୁଡିକ ସୁରକ୍ଷିତ ନୁହେଁ । ପରିବହନରେ ଥିବାବେଳେ ଏହି ଉତ୍ସଗୁଡିକୁ ଅନ୍ୟମାନେ ଦେଖିପାରିବେ, ତଥା ପୃଷ୍ଠାଟିର ରୂପ ବା ଆଚରଣ ପରିବର୍ତ୍ତନ କରିବା ଲାଗି ଏକ ଆକ୍ରମଣକାରୀଙ୍କ ଦ୍ଵାରା ରୂପାନ୍ତରିତ କରାଯାଇପାରିବ।</translation>
 <translation id="5786044859038896871">ଆପଣଙ୍କର କାର୍ଡ ସୂଚନାକୁ ଆପଣ ପୁରଣ କରିବାକୁ ଚାହାନ୍ତି କି?</translation>
 <translation id="578633867165174378">ଆପଣ ଏକ ଡାଟା ଉଲ୍ଲଙ୍ଘନରେ ଏବେ ବ୍ୟବହାର କରିଥିବା ପାସୱାର୍ଡ Chromeକୁ ମିଳିଛି। ଏହି ପାସୱାର୍ଡକୁ ବର୍ତ୍ତମାନ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ ଆମେ ସୁପାରିଶ କରୁଛୁ।</translation>
-<translation id="5798290721819630480">ପରିବର୍ତ୍ତନଗୁଡ଼ିକୁ ଖାରଜ କରିବେ?</translation>
 <translation id="5803412860119678065">ଆପଣ ନିଜର <ph name="CARD_DETAIL" />କୁ ପୁରଣ କରିବାକୁ ଚାହାନ୍ତି କି?</translation>
 <translation id="5804241973901381774">ଅନୁମତିଗୁଡ଼ିକ</translation>
 <translation id="5804427196348435412">NFC ଡିଭାଇସ୍‌ଗୁଡ଼ିକୁ ବ୍ୟବହାର କରନ୍ତୁ</translation>
@@ -1442,7 +1441,6 @@
 <translation id="6428450836711225518">ଆପଣଙ୍କ ଫୋନ୍ ନମ୍ବର ଯାଞ୍ଚ କରନ୍ତୁ</translation>
 <translation id="6433490469411711332">ଯୋଗାଯୋଗ ସୂଚନା ଏଡିଟ୍‍ କରନ୍ତୁ</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> ସଂଯୋଗ କରିବାକୁ ଅସ୍ୱୀକାର କରିଛନ୍ତି।</translation>
-<translation id="6434309073475700221">ବର୍ଜିତ କରନ୍ତୁ</translation>
 <translation id="6440503408713884761">ଅଣଦେଖା କରାଗଲା</translation>
 <translation id="6443406338865242315">ଆପଣ କେଉଁ ଏକ୍ସଟେନସନ୍ ଏବଂ ପ୍ଲଗଇନଗୁଡ଼ିକ ଇନଷ୍ଟଲ୍ କରିଛନ୍ତି</translation>
 <translation id="6446163441502663861">କାହୁ (ଏନଭଲପ୍)</translation>
@@ -1699,7 +1697,6 @@
 <translation id="7481312909269577407">ଅଗ୍ରଗତି</translation>
 <translation id="7485870689360869515">କୌଣସି ଡାଟା ମିଳିଲା ନାହିଁ।</translation>
 <translation id="7495528107193238112">ଏହି ବିଷୟବସ୍ତୁକୁ ବ୍ଲକ୍ କରାଯାଇଛି। ସମସ୍ୟାର ସମାଧାନ କରିବାକୁ ସାଇଟର ମାଲିକଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation>
-<translation id="7498234416455752244">ଏଡିଟିଂ ଜାରି ରଖନ୍ତୁ</translation>
 <translation id="7503664977220660814">ଆପଣ ଏବେ ଏକ ପ୍ରତାରଣାମୂଳକ ସାଇଟରେ ଆପଣଙ୍କ ପାସୱାର୍ଡ ଲେଖିଛନ୍ତି। <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ଏବଂ ଆପଣ ବର୍ତ୍ତମାନ ଏହି ପାସୱାର୍ଡ ବ୍ୟବହାର କରିଥିବା ଅନ୍ୟ ସାଇଟଗୁଡ଼ିକ ପାଇଁ Chromium ଆପଣଙ୍କର ସେଭ୍ କରାଯାଇଥିବା ପାସୱାର୍ଡଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରିବାକୁ ସୁପାରିଶ କରେ।</translation>
 <translation id="7508255263130623398">ଫେରସ୍ତ ନୀତି ଡିଭାଇସ୍ id ଖାଲି ଅଛି କିମ୍ବା ବର୍ତ୍ତମାନର ଡିଭାଇସ୍ id ସହିତ ମେଳ ହେଉନାହିଁ</translation>
 <translation id="7508870219247277067">ଆଭୋକାଡୋ ସବୁଜ</translation>
diff --git a/components/strings/components_strings_pa.xtb b/components/strings/components_strings_pa.xtb
index 3a1df92..7ae96fc 100644
--- a/components/strings/components_strings_pa.xtb
+++ b/components/strings/components_strings_pa.xtb
@@ -930,7 +930,6 @@
 <translation id="4435702339979719576">ਪੋਸਟਕਾਰਡ)</translation>
 <translation id="443673843213245140">ਇੱਕ ਪ੍ਰੌਕਸੀ ਦੀ ਵਰਤੋਂ ਅਸਮਰਥਿਤ ਹੈ ਪਰੰਤੂ ਇੱਕ ਸਪਸ਼ਟ ਪ੍ਰੌਕਸੀ ਕੌਂਫਿਗਰੇਸ਼ਨ ਨਿਸ਼ਚਿਤ ਹੈ।</translation>
 <translation id="4464826014807964867">ਵੈੱਬਸਾਈਟਾਂ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਤੁਹਾਡੀ ਸੰਸਥਾ ਵੱਲੋਂ ਜਾਣਕਾਰੀ ਮੁਹੱਈਆ ਕਰਵਾਈ ਗਈ ਹੈ</translation>
-<translation id="4466881336512663640">ਫ਼ਾਰਮ ਤਬਦੀਲੀਆਂ ਗੁਆਚ ਜਾਣਗੀਆਂ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?</translation>
 <translation id="4476953670630786061">ਇਹ ਫ਼ਾਰਮ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਹੈ। ਆਟੋਫਿਲ ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ ਹੈ।</translation>
 <translation id="4477350412780666475">ਅਗਲਾ ਟਰੈਕ</translation>
 <translation id="4482953324121162758">ਇਸ ਸਾਈਟ ਦਾ ਅਨੁਵਾਦ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ।</translation>
@@ -1284,7 +1283,6 @@
 <translation id="5785756445106461925">ਅੱਗੇ, ਇਸ ਸਫ਼ੇ ਵਿੱਚ ਦੂਜੇ ਸ੍ਰੋਤ ਸ਼ਾਮਲ ਹਨ, ਜੋ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਹਨ। ਇਹ ਸ੍ਰੋਤ ਟ੍ਰਾਂਜਿਟ ਵਿੱਚ ਹੋਣ ਵੇਲੇ ਦੂਜਿਆਂ ਵੱਲੋਂ ਦੇਖੇ ਜਾ ਸਕਦੇ ਹਨ ਅਤੇ ਸਫ਼ੇ ਦੇ ਰੂਪ ਨੂੰ ਬਦਲਣ ਲਈ ਇੱਕ ਹਮਲਾਵਰ ਵੱਲੋਂ ਸੰਸ਼ੋਧਿਤ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ।</translation>
 <translation id="5786044859038896871">ਕੀ ਤੁਸੀਂ ਆਪਣੀ ਕਾਰਡ ਜਾਣਕਾਰੀ ਭਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?</translation>
 <translation id="578633867165174378">Chrome ਨੂੰ ਉਹ ਪਾਸਵਰਡ ਮਿਲਿਆ ਹੈ ਜਿਸਦੀ ਵਰਤੋਂ ਤੁਸੀਂ ਹੁਣੇ-ਹੁਣੇ ਡਾਟਾ ਉਲੰਘਣਾ ਵਿੱਚ ਕੀਤੀ ਹੈ। ਅਸੀਂ ਇਸ ਪਾਸਵਰਡ ਨੂੰ ਹੁਣੇ ਬਦਲਣ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕਰਦੇ ਹਾਂ।</translation>
-<translation id="5798290721819630480">ਕੀ ਤਬਦੀਲੀਆਂ ਨੂੰ ਖਾਰਜ ਕਰਨਾ ਹੈ?</translation>
 <translation id="5803412860119678065">ਕੀ ਤੁਸੀਂ ਆਪਣਾ <ph name="CARD_DETAIL" /> ਭਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?</translation>
 <translation id="5804241973901381774">ਅਨੁਮਤੀਆਂ</translation>
 <translation id="5804427196348435412">NFC ਡੀਵਾਈਸ ਵਰਤੋ</translation>
@@ -1444,7 +1442,6 @@
 <translation id="6428450836711225518">ਆਪਣੇ ਫ਼ੋਨ ਨੰਬਰ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ</translation>
 <translation id="6433490469411711332">ਸੰਪਰਕ ਜਾਣਕਾਰੀ ਦਾ ਸੰਪਾਦਨ ਕਰੋ</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> ਨੇ ਕਨੈਕਟ ਹੋਣ ਤੋਂ ਇਨਕਾਰ ਕੀਤਾ।</translation>
-<translation id="6434309073475700221">ਬਰਖਾਸਤ</translation>
 <translation id="6440503408713884761">ਅਣਡਿੱਠ ਕੀਤਾ ਗਿਆ</translation>
 <translation id="6443406338865242315">ਤੁਸੀਂ ਕਿਹੜੀਆਂ ਐਕਸਟੈਂਸ਼ਨਾਂ ਅਤੇ ਪਲੱਗਇਨ ਸਥਾਪਤ ਕੀਤੇ ਹੋਏ ਹਨ</translation>
 <translation id="6446163441502663861">Kahu (ਲਿਫ਼ਾਫ਼ਾ)</translation>
@@ -1701,7 +1698,6 @@
 <translation id="7481312909269577407">ਅੱਗੇ ਭੇਜੋ</translation>
 <translation id="7485870689360869515">ਕੋਈ ਡਾਟਾ ਨਹੀਂ ਮਿਲਿਆ।</translation>
 <translation id="7495528107193238112">ਇਹ ਸਮੱਗਰੀ ਬਲਾਕ ਕੀਤੀ ਗਈ ਹੈ। ਸਮੱਸਿਆ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਸਾਈਟ ਦੇ ਮਾਲਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।</translation>
-<translation id="7498234416455752244">ਸੰਪਾਦਨ ਕਰਦੇ ਰਹੋ</translation>
 <translation id="7503664977220660814">ਤੁਸੀਂ ਹੁਣੇ-ਹੁਣੇ ਕਿਸੇ ਭਰਮਪੂਰਨ ਸਾਈਟ 'ਤੇ ਆਪਣਾ ਪਾਸਵਰਡ ਦਾਖਲ ਕੀਤਾ ਹੈ। Chromium ਵੱਲੋਂ <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ਅਤੇ ਉਹਨਾਂ ਹੋਰ ਸਾਈਟਾਂ 'ਤੇ ਆਪਣੇ ਰੱਖਿਅਤ ਪਾਸਵਰਡਾਂ ਨੂੰ ਜਾਂਚਣ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜਿੱਥੇ ਹੁਣ ਤੁਸੀਂ ਇਹ ਪਾਸਵਰਡ ਵਰਤਦੇ ਹੋ।</translation>
 <translation id="7508255263130623398">ਵਾਪਸੀ ਸੰਬੰਧੀ ਨੀਤੀ ਡੀਵਾਈਸ ਆਈ.ਡੀ. ਖਾਲੀ ਹੈ ਜਾਂ ਵਰਤਮਾਨ ਡੀਵਾਈਸ ਆਈ.ਡੀ. ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦੀ ਹੈ</translation>
 <translation id="7508870219247277067">ਐਵੋਕਾਡੋ ਹਰਾ</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb
index f3fde8fb..18601de 100644
--- a/components/strings/components_strings_pl.xtb
+++ b/components/strings/components_strings_pl.xtb
@@ -934,7 +934,6 @@
 <translation id="4435702339979719576">pocztówka)</translation>
 <translation id="443673843213245140">Korzystanie z serwera proxy jest wyłączone, ale podano konfigurację proxy.</translation>
 <translation id="4464826014807964867">Witryny z informacjami od Twojej organizacji</translation>
-<translation id="4466881336512663640">Zmiany w formularzu zostaną utracone. Na pewno chcesz kontynuować?</translation>
 <translation id="4476953670630786061">Ten formularz nie jest bezpieczny. Autouzupełnianie zostało wyłączone.</translation>
 <translation id="4477350412780666475">Następny utwór</translation>
 <translation id="4482953324121162758">Ta strona nie będzie tłumaczona.</translation>
@@ -1288,7 +1287,6 @@
 <translation id="5785756445106461925">Ta strona zawiera także niezabezpieczone zasoby. Podczas przesyłania mogą je wyświetlić inni użytkownicy, a osoby atakujące mogą je zmodyfikować, by zmienić wygląd strony.</translation>
 <translation id="5786044859038896871">Chcesz wpisać dane swojej karty?</translation>
 <translation id="578633867165174378">Przeglądarka Chrome znalazła użyte właśnie hasło w naruszeniu bezpieczeństwa danych. Zalecamy jak najszybszą zmianę tego hasła.</translation>
-<translation id="5798290721819630480">Odrzucić zmiany?</translation>
 <translation id="5803412860119678065">Chcesz wpisać dane swojej karty (<ph name="CARD_DETAIL" />)?</translation>
 <translation id="5804241973901381774">Uprawnienia</translation>
 <translation id="5804427196348435412">Korzystać z urządzeń NFC</translation>
@@ -1449,7 +1447,6 @@
 <translation id="6428450836711225518">Weryfikowanie numeru telefonu</translation>
 <translation id="6433490469411711332">Edytuj dane kontaktowe</translation>
 <translation id="6433595998831338502">Serwer <ph name="HOST_NAME" /> odrzucił połączenie.</translation>
-<translation id="6434309073475700221">Odrzuć</translation>
 <translation id="6440503408713884761">Ignorowany</translation>
 <translation id="6443406338865242315">Zainstalowane przez Ciebie rozszerzenia i wtyczki</translation>
 <translation id="6446163441502663861">Kahu (koperta)</translation>
@@ -1706,7 +1703,6 @@
 <translation id="7481312909269577407">Dalej</translation>
 <translation id="7485870689360869515">Nie znaleziono danych.</translation>
 <translation id="7495528107193238112">Ta zawartość jest zablokowana. Aby rozwiązać problem, skontaktuj się z właścicielem witryny.</translation>
-<translation id="7498234416455752244">Edytuj dalej</translation>
 <translation id="7503664977220660814">Przed chwilą wpisano hasło na stronie wprowadzającej w błąd. Chromium zaleca, by sprawdzić zapisane hasła do witryn <ph name="WEBSITE_1" /> i <ph name="WEBSITE_2" /> oraz do innych stron, na których używasz tego hasła.</translation>
 <translation id="7508255263130623398">Zwrócony identyfikator urządzenia dla zasad jest pusty lub nie pasuje do bieżącego identyfikatora urządzenia</translation>
 <translation id="7508870219247277067">Zielony awokado</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb
index c2319e4..ad1f5edb 100644
--- a/components/strings/components_strings_pt-BR.xtb
+++ b/components/strings/components_strings_pt-BR.xtb
@@ -932,7 +932,6 @@
 <translation id="4435702339979719576">Postal</translation>
 <translation id="443673843213245140">O uso de um proxy está desativado, mas uma configuração explícita de proxy é especificada.</translation>
 <translation id="4464826014807964867">Sites com informações da sua organização</translation>
-<translation id="4466881336512663640">As alterações no formulário serão perdidas. Tem certeza de que quer continuar?</translation>
 <translation id="4476953670630786061">Este formulário não é seguro. O preenchimento automático foi desativado.</translation>
 <translation id="4477350412780666475">Próxima faixa</translation>
 <translation id="4482953324121162758">Este site não será traduzido.</translation>
@@ -1286,7 +1285,6 @@
 <translation id="5785756445106461925">Além disso, esta página inclui outros recursos que não são seguros. Esses recursos podem ser visualizados por outros usuários enquanto eles navegam e podem ser modificados por um invasor para alterar o comportamento da página.</translation>
 <translation id="5786044859038896871">Quer preencher as informações do cartão?</translation>
 <translation id="578633867165174378">A senha que você acabou de usar foi encontrada pelo Chrome em uma violação de dados. Recomendamos mudá-la agora mesmo.</translation>
-<translation id="5798290721819630480">Descartar alterações?</translation>
 <translation id="5803412860119678065">Quer preencher as informações do seu cartão <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Permissões</translation>
 <translation id="5804427196348435412">Usar dispositivos NFC</translation>
@@ -1447,7 +1445,6 @@
 <translation id="6428450836711225518">Verificar seu número de telefone</translation>
 <translation id="6433490469411711332">Editar informações de contato</translation>
 <translation id="6433595998831338502">A conexão com <ph name="HOST_NAME" /> foi recusada.</translation>
-<translation id="6434309073475700221">Descartar</translation>
 <translation id="6440503408713884761">Ignorada</translation>
 <translation id="6443406338865242315">quais extensões e plug-ins você instalou;</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1704,7 +1701,6 @@
 <translation id="7481312909269577407">Avançar</translation>
 <translation id="7485870689360869515">Nenhum dado encontrado</translation>
 <translation id="7495528107193238112">Este conteúdo está bloqueado. Entre em contato com o proprietário do site para corrigir o problema.</translation>
-<translation id="7498234416455752244">Continuar editando</translation>
 <translation id="7503664977220660814">Você acabou de digitar sua senha em um site suspeito. O Chromium recomenda que você verifique agora suas senhas salvas para <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> e outros sites em que você usa essa senha.</translation>
 <translation id="7508255263130623398">O código do dispositivo da política retornado está em branco ou não corresponde ao código do dispositivo atual</translation>
 <translation id="7508870219247277067">Verde-abacate</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb
index 2732808..377a8ce 100644
--- a/components/strings/components_strings_pt-PT.xtb
+++ b/components/strings/components_strings_pt-PT.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">A utilização de um proxy está desativada, mas existe uma configuração de proxy explícita especificada.</translation>
 <translation id="4464826014807964867">Websites com informações sobre a sua entidade</translation>
-<translation id="4466881336512663640">As alterações ao formulário serão perdidas. Tem a certeza de que pretende continuar?</translation>
 <translation id="4476953670630786061">Este formulário não é seguro. O preenchimento automático foi desativado.</translation>
 <translation id="4477350412780666475">Faixa seguinte</translation>
 <translation id="4482953324121162758">Este site não será traduzido.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">Além disso, esta página inclui outros recursos que não são seguros. Estes recursos podem ser vistos por outros utilizadores em trânsito e modificados por um utilizador mal intencionado com o intuito de alterar o aspeto da página.</translation>
 <translation id="5786044859038896871">Pretende preencher as informações do cartão?</translation>
 <translation id="578633867165174378">O Chrome encontrou a palavra-passe que acabou de utilizar numa violação de dados. Recomendamos que altere agora esta palavra-passe.</translation>
-<translation id="5798290721819630480">Pretende rejeitar as alterações?</translation>
 <translation id="5803412860119678065">Pretende preencher o seu cartão <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Permissões</translation>
 <translation id="5804427196348435412">Utilizar dispositivos NFC</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">Valide o seu número de telefone</translation>
 <translation id="6433490469411711332">Editar informações de contacto</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> recusou estabelecer ligação.</translation>
-<translation id="6434309073475700221">Rejeitar</translation>
 <translation id="6440503408713884761">Ignorado</translation>
 <translation id="6443406338865242315">As extensões e os plug-ins que instalou.</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1714,7 +1711,6 @@
 <translation id="7481312909269577407">Avançar</translation>
 <translation id="7485870689360869515">Não foram encontrados dados.</translation>
 <translation id="7495528107193238112">Este conteúdo está bloqueado. Contacte o proprietário do site para corrigir o problema.</translation>
-<translation id="7498234416455752244">Continuar a editar</translation>
 <translation id="7503664977220660814">Acabou de introduzir a sua palavra-passe num site fraudulento. O Chromium recomenda que verifique agora as palavras-passe guardadas para <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> e outros sites em que utilize esta palavra-passe.</translation>
 <translation id="7508255263130623398">O ID do dispositivo da política devolvido está vazio ou não corresponde ao ID do dispositivo atual</translation>
 <translation id="7508870219247277067">Verde abacate</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb
index 6d042be..2183265e 100644
--- a/components/strings/components_strings_ro.xtb
+++ b/components/strings/components_strings_ro.xtb
@@ -941,7 +941,6 @@
 <translation id="4435702339979719576">Carte poștală)</translation>
 <translation id="443673843213245140">Utilizarea unui proxy este dezactivată, dar o configurare proxy este specificată în mod explicit.</translation>
 <translation id="4464826014807964867">Site-uri cu informații de la organizația ta</translation>
-<translation id="4466881336512663640">Modificările aduse formularului se vor pierde. Sigur dorești să continui?</translation>
 <translation id="4476953670630786061">Acest formular nu este sigur. Completarea automată a fost dezactivată.</translation>
 <translation id="4477350412780666475">Melodia următoare</translation>
 <translation id="4482953324121162758">Acest site nu va fi tradus.</translation>
@@ -1295,7 +1294,6 @@
 <translation id="5785756445106461925">În plus, această pagină include alte resurse care nu sunt securizate. Aceste resurse sunt vizibile pentru alți utilizatori în cursul transferului și pot fi modificate de un atacator pentru a schimba aspectul paginii.</translation>
 <translation id="5786044859038896871">Dorești să completezi datele cardului de credit?</translation>
 <translation id="578633867165174378">Chrome a găsit parola pe care tocmai ai folosit-o într-o încălcare a securității datelor. Îți recomandăm să schimbi acum parola.</translation>
-<translation id="5798290721819630480">Renunți la modificări?</translation>
 <translation id="5803412860119678065">Dorești să completezi datele <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Permisiuni</translation>
 <translation id="5804427196348435412">Folosește dispozitive NFC</translation>
@@ -1456,7 +1454,6 @@
 <translation id="6428450836711225518">Confirmă numărul de telefon</translation>
 <translation id="6433490469411711332">Editează informațiile de contact</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> a refuzat conexiunea.</translation>
-<translation id="6434309073475700221">Renunță</translation>
 <translation id="6440503408713884761">Ignorat</translation>
 <translation id="6443406338865242315">extensiile și pluginurile instalate,</translation>
 <translation id="6446163441502663861">Kahu (Plic)</translation>
@@ -1713,7 +1710,6 @@
 <translation id="7481312909269577407">Înainte</translation>
 <translation id="7485870689360869515">Nu s-au găsit date.</translation>
 <translation id="7495528107193238112">Acest conținut este blocat. Contactează proprietarul site-ului pentru a remedia problema.</translation>
-<translation id="7498234416455752244">Continuați editarea</translation>
 <translation id="7503664977220660814">Ai introdus parola pe un site înșelător. Chromium recomandă să verifici acum parolele salvate pentru <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> și alte site-uri pe care folosești această parolă.</translation>
 <translation id="7508255263130623398">ID-ul de dispozitiv returnat pentru politică este gol sau nu corespunde cu ID-ul de dispozitiv actual</translation>
 <translation id="7508870219247277067">Verde avocado</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb
index 762a3a8..f8302e6 100644
--- a/components/strings/components_strings_ru.xtb
+++ b/components/strings/components_strings_ru.xtb
@@ -931,7 +931,6 @@
 <translation id="4435702339979719576">Открытка</translation>
 <translation id="443673843213245140">Прокси-сервер отключен, но при этом его конфигурация задана явным образом.</translation>
 <translation id="4464826014807964867">Веб-сайты со сведениями от вашей организации</translation>
-<translation id="4466881336512663640">Внесенные в форму изменения не сохранятся. Продолжить?</translation>
 <translation id="4476953670630786061">Это незащищенная форма. Автозаполнение отключено.</translation>
 <translation id="4477350412780666475">Следующий трек</translation>
 <translation id="4482953324121162758">Этот сайт не будет переводиться автоматически.</translation>
@@ -1285,7 +1284,6 @@
 <translation id="5785756445106461925">Обратите внимание, что на странице обнаружен небезопасный контент. Возможно, при передаче ресурсы просматриваются третьими лицами, а злоумышленники могут получить доступ к странице и изменить ее поведение или внешний вид.</translation>
 <translation id="5786044859038896871">Заполнить данные банковской карты?</translation>
 <translation id="578633867165174378">Пароль, который вы только что использовали, был раскрыт в результате утечки данных. Советуем изменить его прямо сейчас.</translation>
-<translation id="5798290721819630480">Отменить изменения?</translation>
 <translation id="5803412860119678065">Заполнить данные банковской карты <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Разрешения</translation>
 <translation id="5804427196348435412">Использование устройств с функцией NFC</translation>
@@ -1446,7 +1444,6 @@
 <translation id="6428450836711225518">Подтвердите номер телефона</translation>
 <translation id="6433490469411711332">Изменить контактную информацию</translation>
 <translation id="6433595998831338502">Сайт <ph name="HOST_NAME" /> не позволяет установить соединение.</translation>
-<translation id="6434309073475700221">Закрыть</translation>
 <translation id="6440503408713884761">Пропускается</translation>
 <translation id="6443406338865242315">Установленные расширения и плагины.</translation>
 <translation id="6446163441502663861">Kahu (конверт)</translation>
@@ -1703,7 +1700,6 @@
 <translation id="7481312909269577407">Вперед</translation>
 <translation id="7485870689360869515">Данные не найдены.</translation>
 <translation id="7495528107193238112">Этот контент заблокирован. Чтобы устранить неполадку, свяжитесь с владельцем сайта.</translation>
-<translation id="7498234416455752244">Продолжить редактирование</translation>
 <translation id="7503664977220660814">Вы только что ввели пароль на поддельном сайте. Рекомендуем проверить сохраненные пароли для <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> и других сайтов, на которых вы используете этот пароль.</translation>
 <translation id="7508255263130623398">Возвращенный идентификатор устройства пуст или не соответствует имеющемуся</translation>
 <translation id="7508870219247277067">Зеленый (авокадо)</translation>
diff --git a/components/strings/components_strings_si.xtb b/components/strings/components_strings_si.xtb
index ccc1a6e98..324c384 100644
--- a/components/strings/components_strings_si.xtb
+++ b/components/strings/components_strings_si.xtb
@@ -938,7 +938,6 @@
 <translation id="4435702339979719576">තැපැල් පත)</translation>
 <translation id="443673843213245140">ප්‍රොක්සියක භාවිතය අබල කර ඇති නමුත් ප්‍රකාශිත ප්‍රොක්සි වින්‍යාසකරණයක් නිශ්චය කර ඇත.</translation>
 <translation id="4464826014807964867">ඔබේ සංවිධානය වෙතින් වන තොරතුරු සහිත වෙබ් අඩවි</translation>
-<translation id="4466881336512663640">පෝරමයේ වෙනස්කම් අහිමි වෙයි. ඔබට ඉදිරියට යායුතු බව ඔබට තහවුරුද?</translation>
 <translation id="4476953670630786061">මෙම පෝරමය ආරක්ෂිත නොවේ. ස්වයං පිරවුම ක්‍රියාවිරහිත කර ඇත.</translation>
 <translation id="4477350412780666475">ඊළඟ ඛණ්ඩය</translation>
 <translation id="4482953324121162758">මෙම වෙබ් අඩවිය පරිවර්තන නොකෙරේ.</translation>
@@ -1292,7 +1291,6 @@
 <translation id="5785756445106461925">තවද, මෙම පිටුවේ ආරක්ෂිත නොවන වෙනත් සම්පත් ඇත. එම සම්පත් හුවමාරුව අතරතුර ‍අනෙක් අයටත් බැලිය හැකි අතර, පිටුවේ පෙනුම වෙනස් වන අයුරින් වෙනස් කිරීමට වෙබ් ප්‍රහාරකයෙකුට හැකිය.</translation>
 <translation id="5786044859038896871">ඔබට ඔබේ කාඩ්පත් තොරතුරු පිරවීමට අවශ්‍යද?</translation>
 <translation id="578633867165174378">කඩ කිරීමකදී ඔබ භාවිත කළ මුරපදය Chrome හට හමු විය. මෙම මුරපදය දැන් වෙනස් කිරීමට අපි නිර්දේශ කරමු.</translation>
-<translation id="5798290721819630480">වෙනස් කිරීම් ඉවත ලන්නද?</translation>
 <translation id="5803412860119678065">ඔබට ඔබේ <ph name="CARD_DETAIL" /> පිරවීමට අවශ්‍යද?</translation>
 <translation id="5804241973901381774">අවසර</translation>
 <translation id="5804427196348435412">NFC උපාංග භාවිත කරන්න</translation>
@@ -1453,7 +1451,6 @@
 <translation id="6428450836711225518">ඔබේ දුරකථන අංකය සත්‍යාපන කරන්න</translation>
 <translation id="6433490469411711332">සම්බන්ධතා තොරතුරු සංස්කරණය</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> සබැඳීම ප්‍රතික්ෂේප කරන ලදී.</translation>
-<translation id="6434309073475700221">ඉවත ලන්න</translation>
 <translation id="6440503408713884761">නොතැකූ</translation>
 <translation id="6443406338865242315">ඔබ ස්ථාපන කර ඇති දිගු සහ පේනු මෘදුකාංග</translation>
 <translation id="6446163441502663861">Kahu (ලියුම් කවරය)</translation>
@@ -1710,7 +1707,6 @@
 <translation id="7481312909269577407">ඉදිරියට යන්න</translation>
 <translation id="7485870689360869515">දත්ත කිසිවක් හමු නොවිනි</translation>
 <translation id="7495528107193238112">මෙම අන්තර්ගතය අවහිර කර ඇත. ගැටලුව නිවැරදි කිරීමට අඩවි හිමිකරු අමතන්න</translation>
-<translation id="7498234416455752244">දිගටම සංස්කරණ කරන්න</translation>
 <translation id="7503664977220660814">ඔබ මේ දැන් වංචනික අඩවියක ඔබේ මුරපදය ඇතුළු කළා. Chromium <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />, සහ ඔබ දැනට මෙම මුරපදය භාවිත කරන වෙනත් වෙබ් අඩවි සඳහා ඔබේ සුරැකි මුරපද පරීක්‍ෂා කිරීම නිර්දේශ කරයි.</translation>
 <translation id="7508255263130623398">ආපසු ලබා දුන් ප්‍රතිපත්ති උපාංග id හිස් හෝ වත්මන් උපාංග id හා නොගැළපෙයි</translation>
 <translation id="7508870219247277067">අලිගැට පේර කොළ</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb
index beb4ae3d..03d3e82 100644
--- a/components/strings/components_strings_sk.xtb
+++ b/components/strings/components_strings_sk.xtb
@@ -928,7 +928,6 @@
 <translation id="4435702339979719576">pohľadnica)</translation>
 <translation id="443673843213245140">Použitie servera proxy je zakázané, ale je určená explicitná konfigurácia servera proxy.</translation>
 <translation id="4464826014807964867">Weby s informáciami od vašej organizácie</translation>
-<translation id="4466881336512663640">Zmeny formulára sa odstránia. Naozaj chcete pokračovať?</translation>
 <translation id="4476953670630786061">Tento formulár nie je zabezpečený. Automatické dopĺňanie bolo vypnuté.</translation>
 <translation id="4477350412780666475">Ďalšia stopa</translation>
 <translation id="4482953324121162758">Tento web nebude preložený.</translation>
@@ -1282,7 +1281,6 @@
 <translation id="5785756445106461925">Táto stránka obsahuje aj iné zdroje, ktoré nie sú zabezpečené. Tieto zdroje môžu pri prenose vidieť ostatní používatelia a útočník ich môže upraviť tak, aby zmenil vzhľad stránky.</translation>
 <translation id="5786044859038896871">Chcete vyplniť informácie o karte?</translation>
 <translation id="578633867165174378">Chrome našiel heslo, ktoré ste práve použili, v zozname hesiel odhalených pri porušení ochrany údajov. Odporúčame, aby ste si ho okamžite zmenili.</translation>
-<translation id="5798290721819630480">Chcete zahodiť zmeny?</translation>
 <translation id="5803412860119678065">Chcete vyplniť informácie o karte <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Povolenia</translation>
 <translation id="5804427196348435412">Používať zariadenia s technológiou NFC</translation>
@@ -1442,7 +1440,6 @@
 <translation id="6428450836711225518">Overenie telefónneho čísla</translation>
 <translation id="6433490469411711332">Úprava kontaktných informácií</translation>
 <translation id="6433595998831338502">Web <ph name="HOST_NAME" /> zamietol pripojenie.</translation>
-<translation id="6434309073475700221">Zahodiť</translation>
 <translation id="6440503408713884761">Ignorované</translation>
 <translation id="6443406338865242315">Ktoré rozšírenia a doplnky máte nainštalované</translation>
 <translation id="6446163441502663861">Kahu (obálka)</translation>
@@ -1699,7 +1696,6 @@
 <translation id="7481312909269577407">Dopredu</translation>
 <translation id="7485870689360869515">Nenašli sa žiadne údaje.</translation>
 <translation id="7495528107193238112">Tento obsah je blokovaný. Kontaktujte vlastníka webu a požiadajte ho odstránenie daného problému.</translation>
-<translation id="7498234416455752244">Pokračovať v úprave</translation>
 <translation id="7503664977220660814">Práve ste zadali svoje heslo na podvodnom webe. Chromium odporúča, aby ste skontrolovali svoje uložené heslá pre <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> a ďalšie weby, na ktorých ho momentálne používate.</translation>
 <translation id="7508255263130623398">Identifikátor zariadenia vráteného v rámci záruky je prázdny alebo sa nezhoduje s identifikátorom aktuálneho zariadenia</translation>
 <translation id="7508870219247277067">Žltozelená</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb
index f587f7d..e4967d2 100644
--- a/components/strings/components_strings_sl.xtb
+++ b/components/strings/components_strings_sl.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">Uporaba strežnika proxy je onemogočena, vendar je njegova konfiguracija izrecno določena.</translation>
 <translation id="4464826014807964867">Spletna mesta s podatki vaše organizacije</translation>
-<translation id="4466881336512663640">Spremembe obrazca bodo izgubljene. Ali ste prepričani, da želite nadaljevati?</translation>
 <translation id="4476953670630786061">Ta obrazec ni varen. Samodejno izpolnjevanje je izklopljeno.</translation>
 <translation id="4477350412780666475">Naslednja skladba</translation>
 <translation id="4482953324121162758">To spletno mesto ne bo prevedeno.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">Poleg tega so na tej strani druga sredstva, ki niso varna. Ta sredstva lahko med prenosom pregledujejo drugi, morebitni napadalec pa jih lahko spremeni, tako da se spremeni videz strani.</translation>
 <translation id="5786044859038896871">Ali želite izpolniti podatke kreditne kartice?</translation>
 <translation id="578633867165174378">Chrome je geslo, ki ste ga pravkar uporabili, našel v podatkovni kršitvi. Priporočamo, da ga takoj spremenite.</translation>
-<translation id="5798290721819630480">Želite zavreči spremembe?</translation>
 <translation id="5803412860119678065">Ali želite izpolniti podatke za kartico <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Dovoljenja</translation>
 <translation id="5804427196348435412">Uporaba naprav s tehnologijo NFC</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">Preverjanje telefonske številke</translation>
 <translation id="6433490469411711332">Uredi informacije o stiku</translation>
 <translation id="6433595998831338502">Spletno mesto <ph name="HOST_NAME" /> ni dovolilo povezave.</translation>
-<translation id="6434309073475700221">Zavrzi</translation>
 <translation id="6440503408713884761">Prezrto</translation>
 <translation id="6443406338865242315">Katere razširitve in vtičnike ste namestili</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">Naprej</translation>
 <translation id="7485870689360869515">Ni podatkov.</translation>
 <translation id="7495528107193238112">Ta vsebina je blokirana. Obrnite se na lastnika spletnega mesta, da odpravi težavo.</translation>
-<translation id="7498234416455752244">Nadaljuj urejanje</translation>
 <translation id="7503664977220660814">Pravkar ste vnesli geslo na zavajajočem spletnem mestu. Chromium priporoča, da takoj preverite shranjena gesla za <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> in druga spletna mesta, na katerih uporabljate to geslo.</translation>
 <translation id="7508255263130623398">Vrnjen ID naprave pravilnika je prazen ali se ne ujema s trenutnim ID-jem naprave</translation>
 <translation id="7508870219247277067">Avokadovo zelena</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb
index 648aed5..9713bf4d 100644
--- a/components/strings/components_strings_sq.xtb
+++ b/components/strings/components_strings_sq.xtb
@@ -938,7 +938,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">Përdorimi i një përfaqësuesi është i çaktivizuar, por është specifikuar një konfigurim i qartë përfaqësuesi.</translation>
 <translation id="4464826014807964867">Sajtet e uebit me informacione nga organizata jote</translation>
-<translation id="4466881336512663640">Ndryshimet në formular do të humbasin. Je i sigurt se dëshiron të vazhdosh?</translation>
 <translation id="4476953670630786061">Ky formular nuk është i sigurt. Plotësimi automatik është çaktivizuar.</translation>
 <translation id="4477350412780666475">Kënga tjetër</translation>
 <translation id="4482953324121162758">Ky sajt nuk do të përkthehet.</translation>
@@ -1292,7 +1291,6 @@
 <translation id="5785756445106461925">Për më tepër, kjo faqe përfshin burime të tjera që nuk janë të sigurta. Këto burime mund të shikohen nga të tjerët kur janë në procesin e kalimit dhe mund të modifikohen nga ndonjë sulmues për të ndryshuar pamjen e faqes.</translation>
 <translation id="5786044859038896871">Dëshiron që të plotësosh informacionet e kartës?</translation>
 <translation id="578633867165174378">Chrome e gjeti fjalëkalimin që sapo përdore në një nxjerrje të paautorizuar të të dhënave. Ne rekomandojmë ta ndryshosh këtë fjalëkalim tani.</translation>
-<translation id="5798290721819630480">Të injorohen ndryshimet?</translation>
 <translation id="5803412860119678065">Dëshiron që të plotësosh informacionet për <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Lejet</translation>
 <translation id="5804427196348435412">Përdor pajisjet me NFC</translation>
@@ -1452,7 +1450,6 @@
 <translation id="6428450836711225518">Verifiko numrin e telefonit</translation>
 <translation id="6433490469411711332">Redakto informacionin e kontaktit</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> e refuzoi lidhjen.</translation>
-<translation id="6434309073475700221">Hidhe</translation>
 <translation id="6440503408713884761">Shpërfillur</translation>
 <translation id="6443406338865242315">Cilat shtesa dhe përbërës shtesë ke instaluar</translation>
 <translation id="6446163441502663861">Kahu (Zarf)</translation>
@@ -1709,7 +1706,6 @@
 <translation id="7481312909269577407">Përpara</translation>
 <translation id="7485870689360869515">Nuk u gjetën të dhëna.</translation>
 <translation id="7495528107193238112">Kjo përmbajtje është bllokuar. Kontakto me zotëruesin e sajtit për të rregulluar problemin.</translation>
-<translation id="7498234416455752244">Vazhdo redaktimin</translation>
 <translation id="7503664977220660814">Sapo e fute fjalëkalimin tënd në një sajt mashtrues. Chromium të rekomandon t'i kontrollosh fjalëkalimet e tua të ruajtura për <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> dhe sajte të tjera ku e përdor këtë fjalëkalim tani.</translation>
 <translation id="7508255263130623398">ID-ja e kthyer e pajisjes së politikës është bosh ose nuk përputhet me ID-në e pajisjes aktuale</translation>
 <translation id="7508870219247277067">Jeshile avokadoje</translation>
diff --git a/components/strings/components_strings_sr-Latn.xtb b/components/strings/components_strings_sr-Latn.xtb
index a10d5623..fe083df 100644
--- a/components/strings/components_strings_sr-Latn.xtb
+++ b/components/strings/components_strings_sr-Latn.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">razglednica)</translation>
 <translation id="443673843213245140">Korišćenje proksija je onemogućeno, ali je navedena eksplicitna konfiguracija proksija.</translation>
 <translation id="4464826014807964867">Veb-sajtovi sa podacima iz vaše organizacije</translation>
-<translation id="4466881336512663640">Promene obrasca se neće sačuvati. Želite li stvarno da nastavite?</translation>
 <translation id="4476953670630786061">Ovaj obrazac nije bezbedan. Automatsko popunjavanje je isključeno.</translation>
 <translation id="4477350412780666475">Sledeća pesma</translation>
 <translation id="4482953324121162758">Ovaj sajt neće biti preveden.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">Pored toga, ova stranica sadrži i druge resurse koji nisu bezbedni. Ove resurse mogu da vide i drugi dok su u prolazu i napadač može da ih izmeni kako bi promenio izgled stranice.</translation>
 <translation id="5786044859038896871">Želite li da popunite informacije o kartici?</translation>
 <translation id="578633867165174378">Chrome je pronašao lozinku koju ste upravo koristili pri povredi podataka. Preporučujemo vam da odmah promenite tu lozinku.</translation>
-<translation id="5798290721819630480">Želite li da odbacite promene?</translation>
 <translation id="5803412860119678065">Želite li da popunite podacima <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Dozvole</translation>
 <translation id="5804427196348435412">koristi NFC uređaje</translation>
@@ -1457,7 +1455,6 @@
 <translation id="6428450836711225518">Verifikujte broj telefona</translation>
 <translation id="6433490469411711332">Izmenite kontakt informacije</translation>
 <translation id="6433595998831338502">Host <ph name="HOST_NAME" /> je odbio povezivanje.</translation>
-<translation id="6434309073475700221">Odbaci</translation>
 <translation id="6440503408713884761">Zanemareno</translation>
 <translation id="6443406338865242315">dodatke i dodatne komponenta koje ste instalirali</translation>
 <translation id="6446163441502663861">Kahu (koverat)</translation>
@@ -1714,7 +1711,6 @@
 <translation id="7481312909269577407">Prosledi</translation>
 <translation id="7485870689360869515">Nisu pronađeni podaci.</translation>
 <translation id="7495528107193238112">Ovaj sadržaj je blokiran. Obratite se vlasniku sajta da biste rešili problem.</translation>
-<translation id="7498234416455752244">Nastavite sa izmenama</translation>
 <translation id="7503664977220660814">Upravo ste uneli lozinku na obmanjujućem sajtu. Chromium vam preporučuje da proverite sačuvane lozinke za <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> i druge sajtove na kojima trenutno koristite ovu lozinku.</translation>
 <translation id="7508255263130623398">Vraćeni ID uređaja za smernice je prazan ili se ne podudara sa aktuelnim ID-om uređaja</translation>
 <translation id="7508870219247277067">Zelenožuta</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb
index 427f782..2bb0636 100644
--- a/components/strings/components_strings_sr.xtb
+++ b/components/strings/components_strings_sr.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">разгледница)</translation>
 <translation id="443673843213245140">Коришћење проксија је онемогућено, али је наведена експлицитна конфигурација проксија.</translation>
 <translation id="4464826014807964867">Веб-сајтови са подацима из ваше организације</translation>
-<translation id="4466881336512663640">Промене обрасца се неће сачувати. Желите ли стварно да наставите?</translation>
 <translation id="4476953670630786061">Овај образац није безбедан. Аутоматско попуњавање је искључено.</translation>
 <translation id="4477350412780666475">Следећа песма</translation>
 <translation id="4482953324121162758">Овај сајт неће бити преведен.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">Поред тога, ова страница садржи и друге ресурсе који нису безбедни. Ове ресурсе могу да виде и други док су у пролазу и нападач може да их измени како би променио изглед странице.</translation>
 <translation id="5786044859038896871">Желите ли да попуните информације о картици?</translation>
 <translation id="578633867165174378">Chrome је пронашао лозинку коју сте управо користили при повреди података. Препоручујемо вам да одмах промените ту лозинку.</translation>
-<translation id="5798290721819630480">Желите ли да одбаците промене?</translation>
 <translation id="5803412860119678065">Желите ли да попуните подацима <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Дозволе</translation>
 <translation id="5804427196348435412">користи NFC уређаје</translation>
@@ -1457,7 +1455,6 @@
 <translation id="6428450836711225518">Верификујте број телефона</translation>
 <translation id="6433490469411711332">Измените контакт информације</translation>
 <translation id="6433595998831338502">Хост <ph name="HOST_NAME" /> је одбио повезивање.</translation>
-<translation id="6434309073475700221">Одбаци</translation>
 <translation id="6440503408713884761">Занемарено</translation>
 <translation id="6443406338865242315">додатке и додатне компонента које сте инсталирали</translation>
 <translation id="6446163441502663861">Kahu (коверат)</translation>
@@ -1714,7 +1711,6 @@
 <translation id="7481312909269577407">Проследи</translation>
 <translation id="7485870689360869515">Нису пронађени подаци.</translation>
 <translation id="7495528107193238112">Овај садржај је блокиран. Обратите се власнику сајта да бисте решили проблем.</translation>
-<translation id="7498234416455752244">Наставите са изменама</translation>
 <translation id="7503664977220660814">Управо сте унели лозинку на обмањујућем сајту. Chromium вам препоручује да проверите сачуване лозинке за <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> и друге сајтове на којима тренутно користите ову лозинку.</translation>
 <translation id="7508255263130623398">Враћени ИД уређаја за смернице је празан или се не подудара са актуелним ИД-ом уређаја</translation>
 <translation id="7508870219247277067">Зеленожута</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb
index babf8fb..084c47d 100644
--- a/components/strings/components_strings_sv.xtb
+++ b/components/strings/components_strings_sv.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">vykort)</translation>
 <translation id="443673843213245140">Användning av proxy är inaktiverad men en explicit proxykonfiguration har angetts.</translation>
 <translation id="4464826014807964867">Webbplatser med information från organisationen</translation>
-<translation id="4466881336512663640">Ändringar i formuläret ändras inte. Vill du fortsätta?</translation>
 <translation id="4476953670630786061">Det här formuläret är inte säkert. Autofyll har inaktiverats.</translation>
 <translation id="4477350412780666475">Nästa spår</translation>
 <translation id="4482953324121162758">Den här webbplatsen översätts inte.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">Den här sidan innehåller emellertid andra resurser som inte är säkra. Andra kan se resurserna när de överförs och hackare kan ändra resurserna så att sidan får ett annat utseende.</translation>
 <translation id="5786044859038896871">Vill du att kortuppgifterna ska fyllas i?</translation>
 <translation id="578633867165174378">Chrome upptäckte att lösenordet som du precis använde har läckt ut vid ett dataintrång. Vi rekommenderar att du byter det här lösenordet nu.</translation>
-<translation id="5798290721819630480">Vill du ignorera ändringarna?</translation>
 <translation id="5803412860119678065">Vill du att uppgifterna om <ph name="CARD_DETAIL" /> ska fyllas i?</translation>
 <translation id="5804241973901381774">Behörigheter</translation>
 <translation id="5804427196348435412">Använd NFC-enheter</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">Bekräfta ditt telefonnummer</translation>
 <translation id="6433490469411711332">Redigera kontaktuppgifter</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> avvisade anslutningen.</translation>
-<translation id="6434309073475700221">Släng</translation>
 <translation id="6440503408713884761">Ignoreras</translation>
 <translation id="6443406338865242315">Vilka tillägg och pluginprogram som du har installerat</translation>
 <translation id="6446163441502663861">Kahu (kuvert)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">Framåt</translation>
 <translation id="7485870689360869515">Ingen data hittades.</translation>
 <translation id="7495528107193238112">Det här innehållet har blockerats. Kontakta webbplatsägaren om du vill åtgärda problemet.</translation>
-<translation id="7498234416455752244">Fortsätt redigera</translation>
 <translation id="7503664977220660814">Du angav just ditt lösenord på en bedräglig webbplats. Chromium rekommenderar att du kontrollerar dina sparade lösenord för <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> och andra webbplatser där du använder lösenordet nu.</translation>
 <translation id="7508255263130623398">Enhets-id för returnerad princip är tomt eller matchar inte nuvarande enhets-id</translation>
 <translation id="7508870219247277067">Avokadogrön</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb
index f25abdc..22c4b2e8 100644
--- a/components/strings/components_strings_sw.xtb
+++ b/components/strings/components_strings_sw.xtb
@@ -942,7 +942,6 @@
 <translation id="4435702339979719576">Kad ya Posta)</translation>
 <translation id="443673843213245140">Matumizi ya proksi yamelemazwa lakini usanidi wa proksi wazi umebainishwa.</translation>
 <translation id="4464826014807964867">Tovuti zenye maelezo kutoka kwa shirika lako</translation>
-<translation id="4466881336512663640">Haitahifadhi mabadiliko uliyofanya kwenye fomu. Je, una uhakika unataka kuendelea?</translation>
 <translation id="4476953670630786061">Fomu hii si salama. Kipengele cha kujaza kiotomatiki kimezimwa.</translation>
 <translation id="4477350412780666475">Wimbo Unaofuata</translation>
 <translation id="4482953324121162758">Haitatafsiri tovuti hii.</translation>
@@ -1296,7 +1295,6 @@
 <translation id="5785756445106461925">Mbali na hayo, ukurasa huu una rasilimali nyingine zisizo salama. Rasilimali hizi zinaweza kuangaliwa na watu wengine wanaosafiri, na zinaweza kurekebishwa na mvamizi kubadilisha mwonekano wa ukurasa.</translation>
 <translation id="5786044859038896871">Ungependa kujaza maelezo ya kadi yako?</translation>
 <translation id="578633867165174378">Chrome imepata nenosiri ambalo umeweka sasa hivi kwenye tukio la ufichuzi haramu wa data. Tunapendekeza ubadilishe nenosiri hili sasa.</translation>
-<translation id="5798290721819630480">Ungependa kufuta mabadiliko uliyoyafanya?</translation>
 <translation id="5803412860119678065">Ungependa kujaza maelezo ya <ph name="CARD_DETAIL" /> yako?</translation>
 <translation id="5804241973901381774">Idhini</translation>
 <translation id="5804427196348435412">Kutumia vifaa vya NFC</translation>
@@ -1457,7 +1455,6 @@
 <translation id="6428450836711225518">Thibitisha nambari yako ya simu</translation>
 <translation id="6433490469411711332">Badilisha maelezo ya mawasiliano</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> imekataa kuunganisha.</translation>
-<translation id="6434309073475700221">Tupa</translation>
 <translation id="6440503408713884761">Imepuuzwa</translation>
 <translation id="6443406338865242315">Viendelezi au programu jalizi ulizosakinisha</translation>
 <translation id="6446163441502663861">Kahu (Bahasha)</translation>
@@ -1712,7 +1709,6 @@
 <translation id="7481312909269577407">Mbele</translation>
 <translation id="7485870689360869515">Hakuna data iliyopatikana.</translation>
 <translation id="7495528107193238112">Maudhui haya yamezuiwa. Wasiliana na mmiliki wa tovuti ili asuluhishe tatizo.</translation>
-<translation id="7498234416455752244">Endelea kubadilisha</translation>
 <translation id="7503664977220660814">Umeweka nenosiri lako kwenye tovuti inayotiliwa shaka. Chromium inapendekeza ukague manenosiri uliyohifadhi kwenye <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> na tovuti nyingine unakotumia nenosiri hili kwa sasa.</translation>
 <translation id="7508255263130623398">Kitambulisho cha sera ya kifaa kilichorejeshwa hakina kitu au hakilingani na kitambulisho cha kifaa kilichopo</translation>
 <translation id="7508870219247277067">Kijani cha Parachichi</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb
index bf0d75fe..13a8895 100644
--- a/components/strings/components_strings_ta.xtb
+++ b/components/strings/components_strings_ta.xtb
@@ -218,6 +218,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706954506755087368">{1,plural, =1{இந்தச் சேவையகம் தான் <ph name="DOMAIN" /> என்பதை நிரூபிக்க முடியவில்லை; இதன் பாதுகாப்புச் சான்றிதழ் நாளை முதலே செல்லுபடியாகும். இது தவறான உள்ளமைவால் ஏற்பட்டிருக்கலாம் அல்லது தீங்கிழைப்பவர் உங்கள் இணைப்பில் குறுக்கிட்டிருக்கலாம்.}other{இந்தச் சேவையகம் தான் <ph name="DOMAIN" /> என்பதை நிரூபிக்க முடியவில்லை; இதன் பாதுகாப்புச் சான்றிதழ் எதிர்காலத்தில் # நாட்களில் ஏற்றுக்கொள்ளப்படும். இது தவறான உள்ளமைவால் ஏற்பட்டிருக்கலாம் அல்லது தீங்கிழைப்பவர் உங்கள் இணைப்பில் குறுக்கிட்டிருக்கலாம்.}}</translation>
 <translation id="1710259589646384581">OS</translation>
+<translation id="1711234383449478798"><ph name="VALUE" /> என <ph name="POLICY_NAME" /> அமைக்கப்படாததால் நிராகரிக்கப்பட்டது.</translation>
 <translation id="1712552549805331520">உங்கள் கம்ப்யூட்டரில் தரவை நிரந்தரமாகச் சேமிக்க <ph name="URL" /> விரும்புகிறது</translation>
 <translation id="1713628304598226412">தட்டு 2</translation>
 <translation id="1715874602234207">F</translation>
@@ -936,7 +937,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">ப்ராக்ஸி பயன்பாடு முடக்கப்பட்டுள்ளது. ஆனால் வெளிப்படையான ப்ராக்ஸி உள்ளமைவு குறிப்பிடப்பட்டுள்ளது.</translation>
 <translation id="4464826014807964867">உங்கள் நிறுவனம் வழங்கிய தகவல்களைக் கொண்ட இணையதளங்கள்</translation>
-<translation id="4466881336512663640">படிவத்தில் செய்த மாற்றங்கள் சேமிக்கப்படாது. நிச்சயமாகத் தொடர விரும்புகிறீர்களா?</translation>
 <translation id="4476953670630786061">இந்தப் படிவம் பாதுகாப்பானதல்ல. ’தன்னிரப்பி’ அம்சம் முடக்கப்பட்டுள்ளது.</translation>
 <translation id="4477350412780666475">அடுத்த டிராக்</translation>
 <translation id="4482953324121162758">இந்தத் தளம் மொழிபெயர்க்கப்படாது.</translation>
@@ -1290,7 +1290,6 @@
 <translation id="5785756445106461925">மேலும், பாதுகாப்பற்ற பிற ஆதாரங்கள் இந்தப் பக்கத்தில் உள்ளன. இந்த ஆதாரங்களை ட்ரான்ஸிட்டில் இருக்கும்போதும் பிறர் பார்வையிடலாம், மேலும் பக்கத்தின் தோற்றத்தை மாற்ற, தீங்கிழைப்பவர் அதை மாற்றியமைக்கலாம்.</translation>
 <translation id="5786044859038896871">கார்டு தகவலை நிரப்ப விரும்புகிறீர்களா?</translation>
 <translation id="578633867165174378">நீங்கள் தற்போது பயன்படுத்திய கடவுச்சொல், தரவு மீறலுக்கு உட்பட்டது என Chrome கண்டறிந்துள்ளது. இந்தக் கடவுச்சொல்லை இப்போதே மாற்றவும்.</translation>
-<translation id="5798290721819630480">மாற்றங்களை நிராகரிக்கவா?</translation>
 <translation id="5803412860119678065"><ph name="CARD_DETAIL" />ஐ நிரப்ப விரும்புகிறீர்களா?</translation>
 <translation id="5804241973901381774">அனுமதிகள்</translation>
 <translation id="5804427196348435412">NFC சாதனங்களைப் பயன்படுத்துவதற்கான அனுமதி</translation>
@@ -1450,7 +1449,6 @@
 <translation id="6428450836711225518">மொபைல் எண்ணைச் சரிபார்த்தல்</translation>
 <translation id="6433490469411711332">தொடர்புத் தகவலை மாற்று</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> இணைக்க மறுத்தது.</translation>
-<translation id="6434309073475700221">நிராகரி</translation>
 <translation id="6440503408713884761">புறக்கணிக்கப்பட்டது</translation>
 <translation id="6443406338865242315">நீங்கள் நிறுவியுள்ள நீட்டிப்புகளும் செருகுநிரல்களும்</translation>
 <translation id="6446163441502663861">Kahu (என்வலப்)</translation>
@@ -1707,7 +1705,6 @@
 <translation id="7481312909269577407">அடுத்த பக்கம்</translation>
 <translation id="7485870689360869515">தரவு எதுவும் இல்லை.</translation>
 <translation id="7495528107193238112">இந்த உள்ளடக்கம் தடுக்கப்பட்டுள்ளது. இந்தச் சிக்கலைச் சரிசெய்ய, தளத்தின் உரிமையாளரைத் தொடர்புகொள்ளவும்.</translation>
-<translation id="7498234416455752244">திருத்துவதைத் தொடர்க</translation>
 <translation id="7503664977220660814">மோசடி செய்யும் தளத்தில் உங்கள் கடவுச்சொல்லை உள்ளிட்டுள்ளீர்கள். இந்தக் கடவுச்சொல்லைப் பயன்படுத்தும் <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />மற்றும் பிற தளங்களுக்குச் சென்று அங்கு சேமித்துள்ள கடவுச்சொற்களைச் சரிபார்க்கும்படி Chromium பரிந்துரைக்கிறது.</translation>
 <translation id="7508255263130623398">கிடைத்த பாலிசி சாதன ஐடி காலியாக உள்ளது அல்லது தற்போதைய சாதன ஐடியுடன் பொருந்தவில்லை</translation>
 <translation id="7508870219247277067">அவகாடோ பச்சை</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb
index 9ef9dd7..0061123 100644
--- a/components/strings/components_strings_te.xtb
+++ b/components/strings/components_strings_te.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">పోస్ట్‌కార్డ్)</translation>
 <translation id="443673843213245140">ప్రాక్సీని ఉపయోగించడం ఆపివేయబడింది కానీ స్పష్టమైన ప్రాక్సీ కాన్ఫిగరేషన్ పేర్కొనబడింది.</translation>
 <translation id="4464826014807964867">మీ సంస్థకు సంబంధించిన సమాచారం ఉన్న వెబ్‌సైట్‌లు</translation>
-<translation id="4466881336512663640">ఫారమ్‌లో చేసిన మార్పులను కోల్పోతారు. మీరు ఖచ్చితంగా కొనసాగాలనుకుంటున్నారా?</translation>
 <translation id="4476953670630786061">ఈ ఫారమ్ సురక్షితమైనది కాదు. ఆటోఫిల్ ఆఫ్ చేయబడింది.</translation>
 <translation id="4477350412780666475">తర్వాతి ట్రాక్</translation>
 <translation id="4482953324121162758">ఈ సైట్ అనువదించబడదు.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">అలాగే, ఈ పేజీలో సురక్షితం కాని ఇతర వనరులు ఉన్నాయి. ఈ వనరులను బదిలీ చేస్తున్నప్పుడు ఇతరులు చూడగలరు మరియు దాడికి పాల్పడేవారు పేజీ రూపాన్ని మార్చేలా వీటిని సవరించగలరు.</translation>
 <translation id="5786044859038896871">మీరు మీ కార్డ్ సమాచారం పూరించాలనుకుంటున్నారా?</translation>
 <translation id="578633867165174378">డేటా ఉల్లంఘనలో మీరు ఇప్పుడే ఉపయోగించిన పాస్‌వర్డ్‌ను Chrome కనుగొనింది. ఇప్పుడే ఈ పాస్‌వర్డ్‌ను మార్చమని మేము సిఫార్సు చేస్తున్నాము.</translation>
-<translation id="5798290721819630480">మార్పులను విస్మరించాలా?</translation>
 <translation id="5803412860119678065">మీరు మీ <ph name="CARD_DETAIL" /> కార్డ్ సమాచారం పూరించాలనుకుంటున్నారా?</translation>
 <translation id="5804241973901381774">అనుమతులు</translation>
 <translation id="5804427196348435412">NFC పరికరాలను ఉపయోగించండి</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">మీ ఫోన్ నంబర్‌ను ధృవీకరించండి</translation>
 <translation id="6433490469411711332">సంప్రదింపు సమాచారాన్ని సవరించండి</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> కనెక్ట్ కావడానికి నిరాకరించింది.</translation>
-<translation id="6434309073475700221">తొలగించు</translation>
 <translation id="6440503408713884761">విస్మరించబడింది</translation>
 <translation id="6443406338865242315">ఏ ఎక్స్‌టెన్షన్‌లు మరియు ప్లగిన్‌లను మీరు ఇన్‌స్టాల్ చేశారు</translation>
 <translation id="6446163441502663861">Kahu (ఎన్వలప్)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">ఫార్వర్డ్</translation>
 <translation id="7485870689360869515">డేటా కనుగొనబడలేదు.</translation>
 <translation id="7495528107193238112">ఈ కంటెంట్ బ్లాక్ అయింది. ఈ సమస్య పరిష్కారం కోసం సైట్ ఓనర్‌ను సంప్రదించండి.</translation>
-<translation id="7498234416455752244">సవరణను కొనసాగించు</translation>
 <translation id="7503664977220660814">మీరు మోసపూరితమైన సైట్‌లో మీ పాస్‌వర్డ్‌ను ఎంటర్ చేశారు. <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />, ఇతర సైట్‌లలో ప్రస్తుతం మీరు ఎక్కడైతే ఈ పాస్‌వర్డ్‌ను ఉపయోగిస్తారో, అక్కడ మీ సేవ్ చేసిన పాస్‌వర్డ్‌లను తనిఖీ చేసుకోమని Chromium సిఫార్సు చేస్తోంది.</translation>
 <translation id="7508255263130623398">అందించబడిన విధాన పరికర id ఖాళీగా ఉంది లేదా ప్రస్తుత పరికర idకి సరిపోలలేదు</translation>
 <translation id="7508870219247277067">వెన్నపండు ఆకుపచ్చ</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb
index 804bec7..5def00c 100644
--- a/components/strings/components_strings_th.xtb
+++ b/components/strings/components_strings_th.xtb
@@ -931,7 +931,6 @@
 <translation id="4435702339979719576">โปสการ์ด)</translation>
 <translation id="443673843213245140">การใช้พร็อกซีถูกปิดใช้งาน แต่มีการระบุการกำหนดค่าพร็อกซีอย่างชัดเจน</translation>
 <translation id="4464826014807964867">เว็บไซต์ที่มีข้อมูลจากองค์กรของคุณ</translation>
-<translation id="4466881336512663640">การเปลี่ยนแปลงในฟอร์มจะหายไป คุณแน่ใจไหมว่าต้องการดำเนินการต่อ</translation>
 <translation id="4476953670630786061">ฟอร์มนี้ไม่ปลอดภัย ปิดการป้อนข้อความอัตโนมัติแล้ว</translation>
 <translation id="4477350412780666475">แทร็กถัดไป</translation>
 <translation id="4482953324121162758">ระบบจะไม่แปลเว็บไซต์นี้</translation>
@@ -1285,7 +1284,6 @@
 <translation id="5785756445106461925">นอกจากนี้ หน้านี้ประกอบด้วยทรัพยากรอื่นๆ ซึ่งไม่ปลอดภัย ผู้อื่นสามารถดูทรัพยากรเหล่านี้ขณะถ่ายโอน และผู้บุกรุกสามารถแก้ไขเพื่อเปลี่ยนรูปลักษณ์ของหน้าได้</translation>
 <translation id="5786044859038896871">คุณต้องการกรอกข้อมูลบัตรไหม</translation>
 <translation id="578633867165174378">Chrome พบว่ารหัสผ่านที่คุณเพิ่งใช้รั่วไหลในการละเมิดข้อมูลครั้งหนึ่ง เราขอแนะนำให้เปลี่ยนรหัสผ่านนี้ทันที</translation>
-<translation id="5798290721819630480">ทิ้งการเปลี่ยนแปลงไหม</translation>
 <translation id="5803412860119678065">คุณต้องการกรอกข้อมูล <ph name="CARD_DETAIL" /> ไหม</translation>
 <translation id="5804241973901381774">การอนุญาต</translation>
 <translation id="5804427196348435412">ใช้อุปกรณ์ NFC</translation>
@@ -1446,7 +1444,6 @@
 <translation id="6428450836711225518">ยืนยันเบอร์โทรศัพท์</translation>
 <translation id="6433490469411711332">แก้ไขข้อมูลติดต่อ</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> ปฏิเสธการเชื่อมต่อ</translation>
-<translation id="6434309073475700221">ทิ้ง</translation>
 <translation id="6440503408713884761">ละเว้น</translation>
 <translation id="6443406338865242315">ส่วนขยายและปลั๊กอินที่คุณติดตั้ง</translation>
 <translation id="6446163441502663861">Kahu (ซองจดหมาย)</translation>
@@ -1703,7 +1700,6 @@
 <translation id="7481312909269577407">ส่งต่อ</translation>
 <translation id="7485870689360869515">ไม่พบข้อมูล</translation>
 <translation id="7495528107193238112">เนื้อหานี้ถูกบล็อก โปรดติดต่อเจ้าของเว็บไซต์เพื่อให้แก้ปัญหา</translation>
-<translation id="7498234416455752244">แก้ไขต่อ</translation>
 <translation id="7503664977220660814">คุณเพิ่งใส่รหัสผ่านในเว็บไซต์ที่มีการหลอกลวง Chromium ขอแนะนำให้ตรวจสอบรหัสผ่านที่บันทึกไว้สำหรับ <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> และเว็บไซต์อื่นๆ ที่คุณใช้รหัสผ่านนี้ทันที</translation>
 <translation id="7508255263130623398">รหัสอุปกรณ์นโยบายที่ส่งกลับว่างเปล่าหรือไม่ตรงกับรหัสอุปกรณ์ปัจจุบัน</translation>
 <translation id="7508870219247277067">เขียวอะโวคาโด</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb
index 783ab2d..7a3d0be 100644
--- a/components/strings/components_strings_tr.xtb
+++ b/components/strings/components_strings_tr.xtb
@@ -934,7 +934,6 @@
 <translation id="4435702339979719576">Kartpostal)</translation>
 <translation id="443673843213245140">Proxy kullanımı devre dışı, ancak açık bir proxy yapılandırması belirtildi.</translation>
 <translation id="4464826014807964867">Kuruluşunuzun gönderdiği bilgilerin olduğu web siteleri</translation>
-<translation id="4466881336512663640">Formda yaptığınız değişiklikler kaybolacak. Devam etmek istediğinizden emin misiniz?</translation>
 <translation id="4476953670630786061">Bu form güvenli değil. Otomatik doldurma kapatıldı.</translation>
 <translation id="4477350412780666475">Sonraki Parça</translation>
 <translation id="4482953324121162758">Bu site çevrilmeyecek.</translation>
@@ -1288,7 +1287,6 @@
 <translation id="5785756445106461925">Ayrıca, bu sayfa güvenli olmayan başka kaynaklar içeriyor. Bu kaynaklar, aktarım sırasında başkaları tarafından görülebilir ve bir saldırgan tarafından sayfanın görünüşünü değiştirmek üzere kullanılabilir.</translation>
 <translation id="5786044859038896871">Kart bilgilerinizin doldurulmasını istiyor musunuz?</translation>
 <translation id="578633867165174378">Chrome, az önce kullandığınız şifrenin bir veri ihlali sonucunda açığa çıktığını belirledi. Bu şifreyi hemen değiştirmenizi öneriyoruz.</translation>
-<translation id="5798290721819630480">Değişiklikler silinsin mi?</translation>
 <translation id="5803412860119678065"><ph name="CARD_DETAIL" /> kartınıza ait bilgilerin doldurulmasını istiyor musunuz?</translation>
 <translation id="5804241973901381774">İzinler</translation>
 <translation id="5804427196348435412">NFC cihazlarını kullanma</translation>
@@ -1449,7 +1447,6 @@
 <translation id="6428450836711225518">Telefon numaranızı doğrulayın</translation>
 <translation id="6433490469411711332">İletişim bilgilerini düzenle</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> bağlanmayı reddetti.</translation>
-<translation id="6434309073475700221">Kapat</translation>
 <translation id="6440503408713884761">Yoksayıldı</translation>
 <translation id="6443406338865242315">Hangi uzantıları ve eklentileri yüklediğiniz</translation>
 <translation id="6446163441502663861">Kahu (Zarf)</translation>
@@ -1706,7 +1703,6 @@
 <translation id="7481312909269577407">İleri</translation>
 <translation id="7485870689360869515">Hiçbir veri bulunamadı.</translation>
 <translation id="7495528107193238112">Bu içerik engellenmiştir. Sorunu gidermek için site sahibiyle iletişime geçin.</translation>
-<translation id="7498234416455752244">Düzenlemeye devam et</translation>
 <translation id="7503664977220660814">Az önce şifrenizi yanıltıcı bir sitede girdiniz. Chromium, <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ve bu şifreyi kullandığınız diğer sitelerdeki kayıtlı şifrelerinizi hemen kontrol etmenizi öneriyor.</translation>
 <translation id="7508255263130623398">Döndürülen politika cihaz kimliği boş veya mevcut cihaz kimliğiyle eşleşmiyor</translation>
 <translation id="7508870219247277067">Avokado Yeşili</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb
index 947dfdc..9d2f4c9 100644
--- a/components/strings/components_strings_uk.xtb
+++ b/components/strings/components_strings_uk.xtb
@@ -941,7 +941,6 @@
 <translation id="4435702339979719576">Листівка)</translation>
 <translation id="443673843213245140">Використання проксі-сервера вимкнено, але чітко вказано налаштування проксі-сервера.</translation>
 <translation id="4464826014807964867">Веб-сайти, які отримали інформацію від вашої організації</translation>
-<translation id="4466881336512663640">Зміни форми не буде збережено. Продовжити?</translation>
 <translation id="4476953670630786061">Ця форма незахищена. Автозаповнення вимкнено.</translation>
 <translation id="4477350412780666475">Наступна композиція</translation>
 <translation id="4482953324121162758">Цей сайт не перекладатиметься.</translation>
@@ -1295,7 +1294,6 @@
 <translation id="5785756445106461925">Окрім цього, сторінка містить незахищені ресурси. Інші особи можуть переглядати їх під час передавання даних, а зловмисники можуть змінювати вигляд сторінки.</translation>
 <translation id="5786044859038896871">Ввести дані кредитної картки?</translation>
 <translation id="578633867165174378">Веб-переглядач Chrome виявив, що введений пароль розкрито через порушення безпеки даних. Радимо негайно змінити його.</translation>
-<translation id="5798290721819630480">Відхилити зміни?</translation>
 <translation id="5803412860119678065">Ввести дані кредитної картки <ph name="CARD_DETAIL" />?</translation>
 <translation id="5804241973901381774">Дозволи</translation>
 <translation id="5804427196348435412">Використовувати пристрої NFC</translation>
@@ -1456,7 +1454,6 @@
 <translation id="6428450836711225518">Підтвердьте номер телефону</translation>
 <translation id="6433490469411711332">Змінити контактні дані</translation>
 <translation id="6433595998831338502">Хост <ph name="HOST_NAME" /> відхилив запит на з’єднання.</translation>
-<translation id="6434309073475700221">Відхилити</translation>
 <translation id="6440503408713884761">Ігнорується</translation>
 <translation id="6443406338865242315">встановлені розширення та плагіни;</translation>
 <translation id="6446163441502663861">Kahu (конверт)</translation>
@@ -1713,7 +1710,6 @@
 <translation id="7481312909269577407">Переслати</translation>
 <translation id="7485870689360869515">Даних не знайдено.</translation>
 <translation id="7495528107193238112">Підключення заблоковано. Щоб вирішити проблему, зв'яжіться з власником сайту.</translation>
-<translation id="7498234416455752244">Продовжити редагування</translation>
 <translation id="7503664977220660814">Щойно ви ввели пароль на оманливому сайті. Chromium радить перевірити збережені паролі для <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> та інших сайтів, де використовується цей пароль.</translation>
 <translation id="7508255263130623398">Отриманий ідентифікатор правил пристрою порожній або не збігається з поточним ідентифікатором пристрою</translation>
 <translation id="7508870219247277067">Світло-зелений</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb
index 11c991d0..1082a0f 100644
--- a/components/strings/components_strings_ur.xtb
+++ b/components/strings/components_strings_ur.xtb
@@ -219,6 +219,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706954506755087368">{1,plural, =1{یہ سرور ثابت نہیں کر سکا کہ یہ <ph name="DOMAIN" /> ہے؛ اس کے سیکیورٹی سرٹیفکیٹ کی میعاد ممکنہ طور پر کل سے ہے۔ یہ غلط کنفیگریشن یا آپ کے کنکشن کو قطع کرنے والے کسی حملہ آور کی وجہ سے ہو سکتا ہے۔}other{یہ سرور ثابت نہیں کر سکا کہ یہ <ph name="DOMAIN" /> ہے؛ اس کے سیکیورٹی سرٹیفکیٹ کی میعاد ممکنہ طور پر مستقبل میں  # دن بعد سے ہے۔ یہ غلط کنفیگریشن یا آپ کے کنکشن کو قطع کرنے والے کسی حملہ آور کی وجہ سے ہو سکتا ہے۔}}</translation>
 <translation id="1710259589646384581">OS</translation>
+<translation id="1711234383449478798">نظر انداز کیا گیا کیونکہ <ph name="POLICY_NAME" /> <ph name="VALUE" /> پر سیٹ نہیں ہے۔</translation>
 <translation id="1712552549805331520"><ph name="URL" /> آپ کے مقامی کمپیوٹر پر مستقل طور پر ڈیٹا اسٹور کرنا چاہتا ہے</translation>
 <translation id="1713628304598226412">ٹرے 2</translation>
 <translation id="1715874602234207">F</translation>
@@ -945,7 +946,6 @@
 <translation id="4435702339979719576">Postcard)‎</translation>
 <translation id="443673843213245140">پراکسی کا استعمال غیر فعال کر دیا گیا ہے لیکن ایک واضح پراکسی کنفیگریشن متعین کی گئی ہے۔</translation>
 <translation id="4464826014807964867">آپ کی تنظیم کے ذریعے دی گئی معلومات والی ویب سائٹس</translation>
-<translation id="4466881336512663640">فارم میں کی گئی تبدیلیاں ضائع ہو جائیں گی۔ کیا آپ واقعی جاری رکھنا چاہتے ہیں؟</translation>
 <translation id="4476953670630786061">یہ فارم محفوظ نہیں ہے۔ آٹو فل کو آف کر دیا گیا ہے۔</translation>
 <translation id="4477350412780666475">اگلا ٹریک</translation>
 <translation id="4482953324121162758">اس سائٹ کا ترجمہ نہیں کیا جائے گا۔</translation>
@@ -1299,7 +1299,6 @@
 <translation id="5785756445106461925">اس کے علاوہ، اس صفحہ میں دیگر ایسے وسائل شامل ہیں جو محفوظ نہیں ہیں۔ ان وسائل کو ٹرانزٹ کے دوران دیگر لوگ دیکھ سکتے ہیں اور صفحہ کی ہیئت تبدیل کرنے کیلئے حملہ آور اس میں ترمیم کر سکتے ہیں۔</translation>
 <translation id="5786044859038896871">کیا آپ اپنے کارڈ کی معلومات پُر کرنا چاہتے ہیں؟</translation>
 <translation id="578633867165174378">‏Chrome کو وہ پاس ورڈ مل گیا جو آپ نے ابھی ڈیٹا کی خلاف ورزی میں استعمال کیا ہے۔ ہم اس پاس ورڈ کو ابھی تبدیل کرنے کی تجویز کرتے ہیں۔</translation>
-<translation id="5798290721819630480">تبدیلیاں مسترد کریں؟</translation>
 <translation id="5803412860119678065">کیا آپ اپنے <ph name="CARD_DETAIL" /> کو پُر کرنا چاہتے ہیں؟</translation>
 <translation id="5804241973901381774">اجازتیں</translation>
 <translation id="5804427196348435412">‏NFC آلات استعمال کریں</translation>
@@ -1461,7 +1460,6 @@
 <translation id="6428450836711225518">اپنے فون نمبر کی توثیق کریں</translation>
 <translation id="6433490469411711332">رابطہ کی معلومات میں ترمیم کریں</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> نے منسلک ہونے سے منع کر دیا۔</translation>
-<translation id="6434309073475700221">مسترد کریں</translation>
 <translation id="6440503408713884761">نظر انداز کردہ</translation>
 <translation id="6443406338865242315">آپ نے کن ایکسٹینشنز اور پلگ انز کو انسٹال کیا ہے</translation>
 <translation id="6446163441502663861">Kahu ‎(Envelope‎)‎</translation>
@@ -1718,7 +1716,6 @@
 <translation id="7481312909269577407">فارورڈ کریں</translation>
 <translation id="7485870689360869515">کوئی ڈیٹا نہیں ملا۔</translation>
 <translation id="7495528107193238112">یہ مواد مسدود ہے۔ مسئلے کو حل کرنے کے لیے سائٹ کے مالک سے رابطہ کریں۔</translation>
-<translation id="7498234416455752244">ترمیم جاری رکھیں</translation>
 <translation id="7503664977220660814">‏آپ نے ابھی ایک پُرفریب سائٹ پر اپنا پاس ورڈ درج کیا ہے۔ Chromium <ph name="WEBSITE_1" />، <ph name="WEBSITE_2" /> اور دیگر ایسی سائٹس کے لیے اپنے محفوظ کردہ پاس ورڈز کو ابھی چیک کرنے کی تجویز کرتا ہے جہاں آپ اس پاس ورڈ کا استعمال کرتے ہیں۔</translation>
 <translation id="7508255263130623398">‏واپس کردہ پالیسی آلہ id خالی ہے یا موجودہ آلہ id سے مماثل نہیں ہے</translation>
 <translation id="7508870219247277067">مَگَر ناشپاتی سبز</translation>
diff --git a/components/strings/components_strings_uz.xtb b/components/strings/components_strings_uz.xtb
index 39f5b48..7e4bdf0 100644
--- a/components/strings/components_strings_uz.xtb
+++ b/components/strings/components_strings_uz.xtb
@@ -938,7 +938,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">Proksi-server o‘chiq, lekin uning sozlamalari aniq belgilangan.</translation>
 <translation id="4464826014807964867">Tashkilotingiz axborot yuborgan saytlar</translation>
-<translation id="4466881336512663640">Toʻldirilgan shakl tozalanadi. Davom ettirilsinmi?</translation>
 <translation id="4476953670630786061">Bu shakl xavfsiz emas. Avtomatik kiritish faolsizlantirildi.</translation>
 <translation id="4477350412780666475">Keyingi trek</translation>
 <translation id="4482953324121162758">Bu sayt tarjima qilinmaydi</translation>
@@ -1292,7 +1291,6 @@
 <translation id="5785756445106461925">Bundan tashqari, ushbu sahifada xavfli kontent ham aniqlandi. Ma’lumotlarni uzatishda uchinchi tomon resurslarni ko‘rishi mumkin. Yovuz niyatli odamlar esa sahifaga kirishi va uning ko‘rinishini o‘zgartirishi mumkin.</translation>
 <translation id="5786044859038896871">Bank karta ma’lumotlari to‘ldirilsinmi?</translation>
 <translation id="578633867165174378">Chrome hozirgina oshkor qilingan parol ishlatganini aniqladi. Parolingizni hoziroq yangilashni tavsiya qilamiz.</translation>
-<translation id="5798290721819630480">Oʻzgarishlar bekor qilinsinmi?</translation>
 <translation id="5803412860119678065"><ph name="CARD_DETAIL" /> kartangiz ma’lumotlari to‘ldirilsinmi?</translation>
 <translation id="5804241973901381774">Ruxsatlar</translation>
 <translation id="5804427196348435412">NFC qurilmalarni ishlatish</translation>
@@ -1452,7 +1450,6 @@
 <translation id="6428450836711225518">Telefon raqamingizni tasdiqlang</translation>
 <translation id="6433490469411711332">Aloqa ma’lumotini tahrirlash</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> serveri ulanish so‘rovini rad etdi.</translation>
-<translation id="6434309073475700221">Bekor qilish</translation>
 <translation id="6440503408713884761">Rad etilgan</translation>
 <translation id="6443406338865242315">Oʻrnatilgan kengaytma va plaginlar</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1709,7 +1706,6 @@
 <translation id="7481312909269577407">Oldinga</translation>
 <translation id="7485870689360869515">Ma‘lumotlar topilmadi.</translation>
 <translation id="7495528107193238112">Bu kontent bloklandi. Muammoni yechish uchun sayt egasiga murojaat qiling.</translation>
-<translation id="7498234416455752244">Tahrirlashda davom etish</translation>
 <translation id="7503664977220660814">Hozirgina shubhali saytda parol kiritdingiz. Chromium hoziroq <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> va boshqa saytlardagi shu parolingizni tekshirishni tavsiya qiladi.</translation>
 <translation id="7508255263130623398">Qurilmaning qaytarilgan identifikatori bo‘sh yoki joriy qurilma identifikatoriga mos kelmaydi</translation>
 <translation id="7508870219247277067">Yashil avokado</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb
index c62baf4..b64bfff5 100644
--- a/components/strings/components_strings_vi.xtb
+++ b/components/strings/components_strings_vi.xtb
@@ -943,7 +943,6 @@
 <translation id="4435702339979719576">Bưu thiếp)</translation>
 <translation id="443673843213245140">Đã tắt sử dụng proxy nhưng cấu hình proxy rõ ràng được chỉ định.</translation>
 <translation id="4464826014807964867">Các trang web có thông tin của tổ chức bạn</translation>
-<translation id="4466881336512663640">Các thay đổi đối với biểu mẫu sẽ bị mất. Bạn có chắc chắn muốn tiếp tục không?</translation>
 <translation id="4476953670630786061">Biểu mẫu này không an toàn. Do đó, tính năng tự động điền đã bị tắt.</translation>
 <translation id="4477350412780666475">Bản nhạc tiếp theo</translation>
 <translation id="4482953324121162758">Trang web này sẽ không được dịch.</translation>
@@ -1297,7 +1296,6 @@
 <translation id="5785756445106461925">Ngoài ra, trang này bao gồm các tài nguyên khác không an toàn. Những tài nguyên này có thể bị người khác xem khi đang gửi và có thể bị kẻ tấn công sửa đổi nhằm thay đổi giao diện của trang.</translation>
 <translation id="5786044859038896871">Bạn có muốn điền thông tin thẻ của mình không?</translation>
 <translation id="578633867165174378">Chrome phát hiện thấy mật khẩu bạn vừa sử dụng bị lộ trong một sự cố rò rỉ dữ liệu. Bạn nên đổi mật khẩu này ngay.</translation>
-<translation id="5798290721819630480">Hủy thay đổi?</translation>
 <translation id="5803412860119678065">Bạn có muốn điền <ph name="CARD_DETAIL" /> của mình không?</translation>
 <translation id="5804241973901381774">Quyền</translation>
 <translation id="5804427196348435412">Sử dụng các thiết bị dùng công nghệ NFC</translation>
@@ -1458,7 +1456,6 @@
 <translation id="6428450836711225518">Xác minh số điện thoại của bạn</translation>
 <translation id="6433490469411711332">Chỉnh sửa thông tin liên hệ</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> đã từ chối kết nối.</translation>
-<translation id="6434309073475700221">Hủy</translation>
 <translation id="6440503408713884761">Bị bỏ qua</translation>
 <translation id="6443406338865242315">Các tiện ích và plugin bạn đã cài đặt</translation>
 <translation id="6446163441502663861">Kahu (Phong bì)</translation>
@@ -1715,7 +1712,6 @@
 <translation id="7481312909269577407">Chuyển tiếp</translation>
 <translation id="7485870689360869515">Không tìm thấy dữ liệu.</translation>
 <translation id="7495528107193238112">Nội dung này bị chặn. Hãy liên hệ với chủ sở hữu trang web để khắc phục sự cố.</translation>
-<translation id="7498234416455752244">Tiếp tục chỉnh sửa</translation>
 <translation id="7503664977220660814">Bạn vừa nhập mật khẩu vào một trang web lừa đảo. Chromium khuyên bạn nên kiểm tra ngay những mật khẩu bạn đã lưu cho <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> và các trang web khác mà bạn sử dụng mật khẩu này.</translation>
 <translation id="7508255263130623398">ID thiết bị thuộc chính sách trả lại trống hoặc không khớp với ID của thiết bị hiện tại</translation>
 <translation id="7508870219247277067">Xanh quả bơ</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb
index 78c369a3..11a5b066 100644
--- a/components/strings/components_strings_zh-CN.xtb
+++ b/components/strings/components_strings_zh-CN.xtb
@@ -928,7 +928,6 @@
 <translation id="4435702339979719576">Postcard)</translation>
 <translation id="443673843213245140">已停用代理,但是指定了明确的代理配置。</translation>
 <translation id="4464826014807964867">包含来自贵组织的信息的网站</translation>
-<translation id="4466881336512663640">对表单所做的更改将会丢失。确定要继续吗?</translation>
 <translation id="4476953670630786061">此表单不安全。因此,系统已关闭自动填充功能。</translation>
 <translation id="4477350412780666475">下一曲</translation>
 <translation id="4482953324121162758">系统不会翻译此网站。</translation>
@@ -1282,7 +1281,6 @@
 <translation id="5785756445106461925">而且,此页中包含其他不安全的资源。他人能在这些资源传输过程中进行查看,攻击者也可以修改这些资源,从而改变此页的外观。</translation>
 <translation id="5786044859038896871">要填充您的信用卡信息吗?</translation>
 <translation id="578633867165174378">Chrome 发现您刚才使用的密码已遭遇数据泄露。建议您立即更改此密码。</translation>
-<translation id="5798290721819630480">舍弃更改?</translation>
 <translation id="5803412860119678065">要填充您的“<ph name="CARD_DETAIL" />”吗?</translation>
 <translation id="5804241973901381774">权限</translation>
 <translation id="5804427196348435412">使用 NFC 设备</translation>
@@ -1442,7 +1440,6 @@
 <translation id="6428450836711225518">验证您的手机号码</translation>
 <translation id="6433490469411711332">修改联系信息</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> 拒绝了我们的连接请求。</translation>
-<translation id="6434309073475700221">舍弃</translation>
 <translation id="6440503408713884761">已忽略</translation>
 <translation id="6443406338865242315">您已安装的扩展程序和插件</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1699,7 +1696,6 @@
 <translation id="7481312909269577407">前进</translation>
 <translation id="7485870689360869515">找不到数据。</translation>
 <translation id="7495528107193238112">该内容被屏蔽了。请联系网站所有者以解决此问题。</translation>
-<translation id="7498234416455752244">继续修改</translation>
 <translation id="7503664977220660814">您刚刚在一个诈骗网站中输入了密码。Chromium 建议您立即前往 <ph name="WEBSITE_1" />、<ph name="WEBSITE_2" /> 以及使用此密码的其他网站检查您保存的密码。</translation>
 <translation id="7508255263130623398">返回的政策设备 ID 为空,或与当前的设备 ID 不一致</translation>
 <translation id="7508870219247277067">黄绿色</translation>
diff --git a/components/strings/components_strings_zh-HK.xtb b/components/strings/components_strings_zh-HK.xtb
index 5e6c3cf..7fad7d4 100644
--- a/components/strings/components_strings_zh-HK.xtb
+++ b/components/strings/components_strings_zh-HK.xtb
@@ -931,7 +931,6 @@
 <translation id="4435702339979719576">明信片</translation>
 <translation id="443673843213245140">雖然已停用 Proxy,不過已明確指定了 Proxy 設定。</translation>
 <translation id="4464826014807964867">有來自您機構資料的網站</translation>
-<translation id="4466881336512663640">您對表單所作的變更將會遺失。您確定要繼續嗎?</translation>
 <translation id="4476953670630786061">此表格不安全,自動填入功能已關閉。</translation>
 <translation id="4477350412780666475">下一首曲目</translation>
 <translation id="4482953324121162758">系統不會翻譯此網站。</translation>
@@ -1285,7 +1284,6 @@
 <translation id="5785756445106461925">而且,這個網頁含有其他不安全的資源。其他人可能會在資源傳輸期間檢視這些資源,攻擊者也可能會修改這些資源,繼而變更網頁外觀。</translation>
 <translation id="5786044859038896871">要填寫您的信用卡資料嗎?</translation>
 <translation id="578633867165174378">Chrome 發現您剛才使用的密碼因資料外洩而被洩露。建議您立即變更密碼。</translation>
-<translation id="5798290721819630480">要捨棄變更嗎?</translation>
 <translation id="5803412860119678065">要填寫 <ph name="CARD_DETAIL" /> 的資料嗎?</translation>
 <translation id="5804241973901381774">權限</translation>
 <translation id="5804427196348435412">使用 NFC 裝置</translation>
@@ -1446,7 +1444,6 @@
 <translation id="6428450836711225518">請驗證您的電話號碼</translation>
 <translation id="6433490469411711332">編輯聯絡人資料</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> 已拒絕連線。</translation>
-<translation id="6434309073475700221">捨棄</translation>
 <translation id="6440503408713884761">已略過</translation>
 <translation id="6443406338865242315">您已安裝的擴充程式和外掛程式</translation>
 <translation id="6446163441502663861">Kahu (信封)</translation>
@@ -1703,7 +1700,6 @@
 <translation id="7481312909269577407">向前</translation>
 <translation id="7485870689360869515">找不到任何數據。</translation>
 <translation id="7495528107193238112">此內容已被封鎖。如要修正問題,請聯絡網站擁有者。</translation>
-<translation id="7498234416455752244">繼續編輯</translation>
 <translation id="7503664977220660814">您剛才在欺詐網站上輸入了密碼。Chromium 建議您立即檢查已儲存在 <ph name="WEBSITE_1" />、<ph name="WEBSITE_2" /> 以及其他您使用此密碼的網站。</translation>
 <translation id="7508255263130623398">傳回的政策裝置識別碼為空白或與目前裝置識別碼不符</translation>
 <translation id="7508870219247277067">牛油果色</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb
index 1cb4aa99..4657ebd 100644
--- a/components/strings/components_strings_zh-TW.xtb
+++ b/components/strings/components_strings_zh-TW.xtb
@@ -932,7 +932,6 @@
 <translation id="4435702339979719576">明信片)</translation>
 <translation id="443673843213245140">雖然已停用 Proxy,不過已指定明確 Proxy 設定。</translation>
 <translation id="4464826014807964867">有貴機構資訊的網站</translation>
-<translation id="4466881336512663640">你對表單所做變更將會遺失。確定要繼續嗎?</translation>
 <translation id="4476953670630786061">這個表單不安全,因此系統已停用自動填入功能。</translation>
 <translation id="4477350412780666475">下一首曲目</translation>
 <translation id="4482953324121162758">系統不會翻譯這個網站。</translation>
@@ -1286,7 +1285,6 @@
 <translation id="5785756445106461925">此外,這個網頁含有其他不安全的資源。其他人可能會在資源傳輸期間檢視這些資源,攻擊者也可能會修改這些資源,進而變更網頁外觀。</translation>
 <translation id="5786044859038896871">要填入你的信用卡資訊嗎?</translation>
 <translation id="578633867165174378">Chrome 發現你剛才使用的密碼因為資料侵害事件而遭到外洩。建議你立即變更密碼。</translation>
-<translation id="5798290721819630480">要捨棄變更嗎?</translation>
 <translation id="5803412860119678065">要填入你的 <ph name="CARD_DETAIL" /> 資訊嗎?</translation>
 <translation id="5804241973901381774">權限</translation>
 <translation id="5804427196348435412">使用 NFC 裝置</translation>
@@ -1447,7 +1445,6 @@
 <translation id="6428450836711225518">驗證你的電話號碼</translation>
 <translation id="6433490469411711332">編輯聯絡資訊</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> 拒絕連線。</translation>
-<translation id="6434309073475700221">捨棄</translation>
 <translation id="6440503408713884761">已忽略</translation>
 <translation id="6443406338865242315">你安裝的擴充功能和外掛程式</translation>
 <translation id="6446163441502663861">Kahu (信封)</translation>
@@ -1704,7 +1701,6 @@
 <translation id="7481312909269577407">往前</translation>
 <translation id="7485870689360869515">找不到任何資料。</translation>
 <translation id="7495528107193238112">這項內容已遭到封鎖,請聯絡網站擁有者以修正問題。</translation>
-<translation id="7498234416455752244">繼續編輯</translation>
 <translation id="7503664977220660814">你剛才在詐騙網站上輸入了密碼。Chromium 建議你立即檢查為以下網站儲存的密碼:<ph name="WEBSITE_1" />、<ph name="WEBSITE_2" />,以及使用這組密碼的其他網站。</translation>
 <translation id="7508255263130623398">傳回的政策裝置 ID 沒有任何內容,或是與目前的裝置 ID 不符</translation>
 <translation id="7508870219247277067">酪梨綠</translation>
diff --git a/components/strings/components_strings_zu.xtb b/components/strings/components_strings_zu.xtb
index d5beb7a..e267085 100644
--- a/components/strings/components_strings_zu.xtb
+++ b/components/strings/components_strings_zu.xtb
@@ -940,7 +940,6 @@
 <translation id="4435702339979719576">Ikhadi lokuposa)</translation>
 <translation id="443673843213245140">Ukusetshenziswa ummeleli kukhitshaziwe kodwa ukulungiselelwa okubekelwe obala kommeleli kucacisiwe.</translation>
 <translation id="4464826014807964867">Amawebhusayithi anolwazi oluvela enhlanganweni yakho</translation>
-<translation id="4466881336512663640">Izinguquko zefomu zizolahleka. Ingabe uqinisekile ukuthi ufuna ukuqhubeka?</translation>
 <translation id="4476953670630786061">Leli fomu alivikelekile. Ukugcwalisa okuzenzakalelayo kuvaliwe.</translation>
 <translation id="4477350412780666475">Ithrekhi elandelayo</translation>
 <translation id="4482953324121162758">Leli sayithi ngeke lihunyushwe.</translation>
@@ -1294,7 +1293,6 @@
 <translation id="5785756445106461925">Ngokuqhubekayo, leli khasi lifaka ezinye izisetshenziswa ezingavikelekile. Lezi zisetshenziswa zingabukwa ngabanye ngenkathi ikwezokuthutha, futhi zingalungiswa yisihlaseli ukuze kuguqulwe ukubukeka kwekhasi.</translation>
 <translation id="5786044859038896871">Ingabe ufuna ukugcwalisa ulwazi lwekhadi lakho?</translation>
 <translation id="578633867165174378">I-Chrome ithole iphasiwedi osanda kuyisebenzisa ekwephuleni idatha. Sincoma ukuba ushintshe le phasiwedi manje.</translation>
-<translation id="5798290721819630480">Lahla izinguquko?</translation>
 <translation id="5803412860119678065">Ingabe ufuna ukugcwalisa i-<ph name="CARD_DETAIL" /> yakho?</translation>
 <translation id="5804241973901381774">Izimvume</translation>
 <translation id="5804427196348435412">Sebenzisa amadivayisi e-NFC</translation>
@@ -1455,7 +1453,6 @@
 <translation id="6428450836711225518">Iqinisekisa inombolo yakho yefoni</translation>
 <translation id="6433490469411711332">Hlela ulwazi loxhumana naye</translation>
 <translation id="6433595998831338502">I-<ph name="HOST_NAME" /> inqabe ukuxhumeka.</translation>
-<translation id="6434309073475700221">Lahla</translation>
 <translation id="6440503408713884761">Izitshiwe</translation>
 <translation id="6443406338865242315">Iziphi izandiso nama-plugins owafakile</translation>
 <translation id="6446163441502663861">Kahu (Envelope)</translation>
@@ -1712,7 +1709,6 @@
 <translation id="7481312909269577407">Dlulisela</translation>
 <translation id="7485870689360869515">Ayikho idatha etholiwe.</translation>
 <translation id="7495528107193238112">Lokhu okuqukethwe kuvinjelwe. Xhumana nomnikazi wesayithi ukulungisa inkinga.</translation>
-<translation id="7498234416455752244">Qhubeka nokuhlela</translation>
 <translation id="7503664977220660814">Usanda kufaka iphasiwedi yakho kusayithi elikhohlisayo. I-Chromium incoma ukuhlola amaphasiwedi akho alondoloziwe we-<ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />, namanye amasayithi lapho usebenzisa khona le phasiwedi manje.</translation>
 <translation id="7508255263130623398">Inqubogomo yokubuyisa idivayisi ayinalutho noma ayifani ne-id yedivayisi yamanje</translation>
 <translation id="7508870219247277067">I-Avocado Green</translation>
diff --git a/components/sync/driver/glue/sync_engine_backend.cc b/components/sync/driver/glue/sync_engine_backend.cc
index f70e968..317993d8 100644
--- a/components/sync/driver/glue/sync_engine_backend.cc
+++ b/components/sync/driver/glue/sync_engine_backend.cc
@@ -117,17 +117,9 @@
 
 void SyncEngineBackend::OnInitializationComplete(
     const WeakHandle<JsBackend>& js_backend,
-    const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener,
-    bool success) {
+    const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
-  if (!success) {
-    DoDestroySyncManager();
-    host_.Call(FROM_HERE,
-               &SyncEngineImpl::HandleInitializationFailureOnFrontendLoop);
-    return;
-  }
-
   // Hang on to these for a while longer.  We're not ready to hand them back to
   // the UI thread yet.
   js_backend_ = js_backend;
@@ -384,15 +376,18 @@
 void SyncEngineBackend::DoShutdown(ShutdownReason reason) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
-  // Having no |sync_manager_| means that initialization was failed and NIGORI
-  // wasn't connected and started.
-  // TODO(crbug.com/922900): this logic seems fragile, maybe initialization and
-  // connecting of NIGORI needs refactoring.
-  if (nigori_controller_ && sync_manager_) {
+  // |nigori_controller_| and |sync_manager_| might be null if DoInitialize()
+  // wasn't called.
+  if (nigori_controller_) {
+    DCHECK(sync_manager_);
     sync_manager_->GetModelTypeConnector()->DisconnectDataType(NIGORI);
     nigori_controller_->Stop(reason, base::DoNothing());
   }
-  DoDestroySyncManager();
+  if (sync_manager_) {
+    sync_manager_->RemoveObserver(this);
+    sync_manager_->ShutdownOnSyncThread();
+    sync_manager_.reset();
+  }
 
   if (reason == DISABLE_SYNC) {
     DeleteLegacyDirectoryFilesAndNigoriStorage(sync_data_folder_);
@@ -402,16 +397,6 @@
   weak_ptr_factory_.InvalidateWeakPtrs();
 }
 
-void SyncEngineBackend::DoDestroySyncManager() {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-
-  if (sync_manager_) {
-    sync_manager_->RemoveObserver(this);
-    sync_manager_->ShutdownOnSyncThread();
-    sync_manager_.reset();
-  }
-}
-
 void SyncEngineBackend::DoPurgeDisabledTypes(const ModelTypeSet& to_purge) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (to_purge.Has(NIGORI)) {
diff --git a/components/sync/driver/glue/sync_engine_backend.h b/components/sync/driver/glue/sync_engine_backend.h
index 00cc29c9e..bad595c 100644
--- a/components/sync/driver/glue/sync_engine_backend.h
+++ b/components/sync/driver/glue/sync_engine_backend.h
@@ -72,10 +72,9 @@
   // traffic controller here, forwarding incoming messages to appropriate
   // landing threads.
   void OnSyncCycleCompleted(const SyncCycleSnapshot& snapshot) override;
-  void OnInitializationComplete(
-      const WeakHandle<JsBackend>& js_backend,
-      const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener,
-      bool success) override;
+  void OnInitializationComplete(const WeakHandle<JsBackend>& js_backend,
+                                const WeakHandle<DataTypeDebugInfoListener>&
+                                    debug_info_listener) override;
   void OnConnectionStatusChange(ConnectionStatus status) override;
   void OnActionableError(const SyncProtocolError& sync_error) override;
   void OnMigrationRequested(ModelTypeSet types) override;
@@ -143,7 +142,6 @@
   //    sync manager.
   void ShutdownOnUIThread();
   void DoShutdown(ShutdownReason reason);
-  void DoDestroySyncManager();
 
   // Configuration methods that must execute on sync loop.
   void DoPurgeDisabledTypes(const ModelTypeSet& to_purge);
diff --git a/components/sync/driver/glue/sync_engine_impl_unittest.cc b/components/sync/driver/glue/sync_engine_impl_unittest.cc
index 88c58b19..491dabf 100644
--- a/components/sync/driver/glue/sync_engine_impl_unittest.cc
+++ b/components/sync/driver/glue/sync_engine_impl_unittest.cc
@@ -101,7 +101,6 @@
       FakeSyncManager** fake_manager,
       network::NetworkConnectionTracker* network_connection_tracker)
       : SyncManagerFactory(network_connection_tracker),
-        should_fail_on_init_(false),
         fake_manager_(fake_manager) {
     *fake_manager_ = nullptr;
   }
@@ -112,7 +111,7 @@
       const std::string& /* name */) override {
     *fake_manager_ =
         new FakeSyncManager(initial_sync_ended_types_, progress_marker_types_,
-                            configure_fail_types_, should_fail_on_init_);
+                            configure_fail_types_);
     return std::unique_ptr<SyncManager>(*fake_manager_);
   }
 
@@ -128,15 +127,10 @@
     configure_fail_types_ = types;
   }
 
-  void set_should_fail_on_init(bool should_fail_on_init) {
-    should_fail_on_init_ = should_fail_on_init;
-  }
-
  private:
   ModelTypeSet initial_sync_ended_types_;
   ModelTypeSet progress_marker_types_;
   ModelTypeSet configure_fail_types_;
-  bool should_fail_on_init_;
   FakeSyncManager** fake_manager_;
 };
 
@@ -690,22 +684,6 @@
   ShutdownBackend(STOP_SYNC);
 }
 
-// Regression test for crbug.com/1019956.
-TEST_F(SyncEngineImplTest, ShouldDestroyAfterInitFailure) {
-  fake_manager_factory_->set_should_fail_on_init(true);
-  // Sync manager will report initialization failure and gets destroyed during
-  // the error handling.
-  InitializeBackend(/*expect_success=*/false);
-
-  backend_->StopSyncingForShutdown();
-  // This line would post the task causing the crash before the fix, because
-  // sync manager was used during the shutdown handling.
-  backend_->Shutdown(STOP_SYNC);
-  backend_.reset();
-
-  base::RunLoop().RunUntilIdle();
-}
-
 TEST_F(SyncEngineImplWithSyncInvalidationsTest,
        ShouldInvalidateDataTypesOnIncomingInvalidation) {
   EXPECT_CALL(mock_instance_id_driver_, AddListener(backend_.get()));
diff --git a/components/sync/driver/profile_sync_service.cc b/components/sync/driver/profile_sync_service.cc
index 121e468..b021577 100644
--- a/components/sync/driver/profile_sync_service.cc
+++ b/components/sync/driver/profile_sync_service.cc
@@ -146,14 +146,7 @@
       debug_identifier_(init_params.debug_identifier),
       sync_service_url_(
           GetSyncServiceURL(*base::CommandLine::ForCurrentProcess(), channel_)),
-      crypto_(
-          base::BindRepeating(&ProfileSyncService::NotifyObservers,
-                              base::Unretained(this)),
-          base::BindRepeating(&ProfileSyncService::OnRequiredUserActionChanged,
-                              base::Unretained(this)),
-          base::BindRepeating(&ProfileSyncService::ReconfigureDueToPassphrase,
-                              base::Unretained(this)),
-          sync_client_->GetTrustedVaultClient()),
+      crypto_(this, sync_client_->GetTrustedVaultClient()),
       network_time_update_callback_(
           std::move(init_params.network_time_update_callback)),
       url_loader_factory_(std::move(init_params.url_loader_factory)),
@@ -975,6 +968,40 @@
   NotifyObservers();
 }
 
+void ProfileSyncService::CryptoStateChanged() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  NotifyObservers();
+}
+
+void ProfileSyncService::CryptoRequiredUserActionChanged() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  if (should_record_trusted_vault_error_shown_on_startup_ &&
+      crypto_.IsTrustedVaultKeyRequiredStateKnown() && IsSyncFeatureEnabled()) {
+    should_record_trusted_vault_error_shown_on_startup_ = false;
+    if (crypto_.GetPassphraseType() ==
+        PassphraseType::kTrustedVaultPassphrase) {
+      base::UmaHistogramBoolean(
+          "Sync.TrustedVaultErrorShownOnStartup",
+          user_settings_->IsTrustedVaultKeyRequiredForPreferredDataTypes());
+    }
+  }
+}
+
+void ProfileSyncService::ReconfigureDataTypesDueToCrypto() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  if (CanConfigureDataTypes(/*bypass_setup_in_progress_check=*/false)) {
+    ConfigureDataTypeManager(CONFIGURE_REASON_CRYPTO);
+  }
+
+  // Notify observers that the passphrase status may have changed, regardless of
+  // whether we triggered configuration or not. This is needed for the
+  // IsSetupInProgress() case where the UI needs to be updated to reflect that
+  // the passphrase was accepted (https://crbug.com/870256).
+  NotifyObservers();
+}
+
 bool ProfileSyncService::IsSetupInProgress() const {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   return outstanding_setup_in_progress_handles_ > 0;
@@ -1835,28 +1862,4 @@
   NotifyObservers();
 }
 
-void ProfileSyncService::ReconfigureDueToPassphrase(ConfigureReason reason) {
-  if (CanConfigureDataTypes(/*bypass_setup_in_progress_check=*/false)) {
-    ConfigureDataTypeManager(reason);
-  }
-  // Notify observers that the passphrase status may have changed, regardless of
-  // whether we triggered configuration or not. This is needed for the
-  // IsSetupInProgress() case where the UI needs to be updated to reflect that
-  // the passphrase was accepted (https://crbug.com/870256).
-  NotifyObservers();
-}
-
-void ProfileSyncService::OnRequiredUserActionChanged() {
-  if (should_record_trusted_vault_error_shown_on_startup_ &&
-      crypto_.IsTrustedVaultKeyRequiredStateKnown() && IsSyncFeatureEnabled()) {
-    should_record_trusted_vault_error_shown_on_startup_ = false;
-    if (crypto_.GetPassphraseType() ==
-        PassphraseType::kTrustedVaultPassphrase) {
-      base::UmaHistogramBoolean(
-          "Sync.TrustedVaultErrorShownOnStartup",
-          user_settings_->IsTrustedVaultKeyRequiredForPreferredDataTypes());
-    }
-  }
-}
-
 }  // namespace syncer
diff --git a/components/sync/driver/profile_sync_service.h b/components/sync/driver/profile_sync_service.h
index f914eac..bf74cf0bd 100644
--- a/components/sync/driver/profile_sync_service.h
+++ b/components/sync/driver/profile_sync_service.h
@@ -63,6 +63,7 @@
                            public SyncEngineHost,
                            public SyncPrefObserver,
                            public DataTypeManagerObserver,
+                           public SyncServiceCrypto::Delegate,
                            public signin::IdentityManager::Observer {
  public:
   // If AUTO_START, sync will set IsFirstSetupComplete() automatically and sync
@@ -175,6 +176,11 @@
   void OnConfigureDone(const DataTypeManager::ConfigureResult& result) override;
   void OnConfigureStart() override;
 
+  // SyncServiceCrypto::Delegate implementation.
+  void CryptoStateChanged() override;
+  void CryptoRequiredUserActionChanged() override;
+  void ReconfigureDataTypesDueToCrypto() override;
+
   // IdentityManager::Observer implementation.
   void OnAccountsInCookieUpdated(
       const signin::AccountsInCookieJarInfo& accounts_in_cookie_jar_info,
@@ -356,12 +362,6 @@
   // Called when a SetupInProgressHandle issued by this instance is destroyed.
   void OnSetupInProgressHandleDestroyed();
 
-  // Called by SyncServiceCrypto when a passphrase is required or accepted.
-  void ReconfigureDueToPassphrase(ConfigureReason reason);
-
-  // Called by SyncServiceCrypto when its required user action changes.
-  void OnRequiredUserActionChanged();
-
   // This profile's SyncClient, which abstracts away non-Sync dependencies and
   // the Sync API component factory.
   const std::unique_ptr<SyncClient> sync_client_;
diff --git a/components/sync/driver/sync_service_crypto.cc b/components/sync/driver/sync_service_crypto.cc
index 4ee4ce6..740e33c 100644
--- a/components/sync/driver/sync_service_crypto.cc
+++ b/components/sync/driver/sync_service_crypto.cc
@@ -201,17 +201,11 @@
 
 SyncServiceCrypto::State::~State() = default;
 
-SyncServiceCrypto::SyncServiceCrypto(
-    const base::RepeatingClosure& notify_observers,
-    const base::RepeatingClosure& notify_required_user_action_changed,
-    const base::RepeatingCallback<void(ConfigureReason)>& reconfigure,
-    TrustedVaultClient* trusted_vault_client)
-    : notify_observers_(notify_observers),
-      notify_required_user_action_changed_(notify_required_user_action_changed),
-      reconfigure_(reconfigure),
+SyncServiceCrypto::SyncServiceCrypto(Delegate* delegate,
+                                     TrustedVaultClient* trusted_vault_client)
+    : delegate_(delegate),
       trusted_vault_client_(ResoveNullClient(trusted_vault_client)) {
-  DCHECK(notify_observers_);
-  DCHECK(reconfigure_);
+  DCHECK(delegate_);
   DCHECK(trusted_vault_client_);
 
   trusted_vault_client_->AddObserver(this);
@@ -445,7 +439,7 @@
 
   // Reconfigure without the encrypted types (excluded implicitly via the
   // failed datatypes handler).
-  reconfigure_.Run(CONFIGURE_REASON_CRYPTO);
+  delegate_->ReconfigureDataTypesDueToCrypto();
 }
 
 void SyncServiceCrypto::OnPassphraseAccepted() {
@@ -460,7 +454,7 @@
 
   // Make sure the data types that depend on the passphrase are started at
   // this time.
-  reconfigure_.Run(CONFIGURE_REASON_CRYPTO);
+  delegate_->ReconfigureDataTypesDueToCrypto();
 }
 
 void SyncServiceCrypto::OnTrustedVaultKeyRequired() {
@@ -508,7 +502,7 @@
 
   // Make sure the data types that depend on the decryption key are started at
   // this time.
-  reconfigure_.Run(CONFIGURE_REASON_CRYPTO);
+  delegate_->ReconfigureDataTypesDueToCrypto();
 }
 
 void SyncServiceCrypto::OnBootstrapTokenUpdated(
@@ -535,7 +529,7 @@
   DCHECK(state_.encrypted_types.Has(PASSWORDS));
   DCHECK(state_.encrypted_types.Has(WIFI_CONFIGURATIONS));
 
-  notify_observers_.Run();
+  delegate_->CryptoStateChanged();
 }
 
 void SyncServiceCrypto::OnCryptographerStateChanged(
@@ -561,7 +555,7 @@
     UpdateRequiredUserActionAndNotify(RequiredUserAction::kNone);
   }
 
-  notify_observers_.Run();
+  delegate_->CryptoStateChanged();
 }
 
 void SyncServiceCrypto::OnTrustedVaultKeysChanged() {
@@ -709,7 +703,7 @@
 
   // Reconfigure without the encrypted types (excluded implicitly via the failed
   // datatypes handler).
-  reconfigure_.Run(CONFIGURE_REASON_CRYPTO);
+  delegate_->ReconfigureDataTypesDueToCrypto();
 }
 
 void SyncServiceCrypto::UpdateRequiredUserActionAndNotify(
@@ -722,7 +716,7 @@
   }
 
   state_.required_user_action = new_required_user_action;
-  notify_required_user_action_changed_.Run();
+  delegate_->CryptoRequiredUserActionChanged();
 
   RefreshIsRecoverabilityDegraded();
 }
@@ -766,7 +760,7 @@
       state_.required_user_action == RequiredUserAction::kNone) {
     UpdateRequiredUserActionAndNotify(
         RequiredUserAction::kTrustedVaultRecoverabilityDegraded);
-    notify_observers_.Run();
+    delegate_->CryptoStateChanged();
   }
 
   // Transition from degraded to non-degraded recoverability.
@@ -774,7 +768,7 @@
       state_.required_user_action ==
           RequiredUserAction::kTrustedVaultRecoverabilityDegraded) {
     UpdateRequiredUserActionAndNotify(RequiredUserAction::kNone);
-    notify_observers_.Run();
+    delegate_->CryptoStateChanged();
   }
 }
 
diff --git a/components/sync/driver/sync_service_crypto.h b/components/sync/driver/sync_service_crypto.h
index 9294d38..10e2aa9 100644
--- a/components/sync/driver/sync_service_crypto.h
+++ b/components/sync/driver/sync_service_crypto.h
@@ -9,14 +9,12 @@
 #include <string>
 #include <vector>
 
-#include "base/callback.h"
 #include "base/memory/weak_ptr.h"
 #include "base/sequence_checker.h"
 #include "components/signin/public/identity_manager/account_info.h"
 #include "components/sync/base/model_type.h"
 #include "components/sync/driver/data_type_encryption_handler.h"
 #include "components/sync/driver/trusted_vault_client.h"
-#include "components/sync/engine/configure_reason.h"
 #include "components/sync/engine/sync_encryption_handler.h"
 #include "components/sync/engine/sync_engine.h"
 
@@ -29,13 +27,19 @@
                           public DataTypeEncryptionHandler,
                           public TrustedVaultClient::Observer {
  public:
+  class Delegate {
+   public:
+    virtual ~Delegate() = default;
+    virtual void CryptoStateChanged() = 0;
+    virtual void CryptoRequiredUserActionChanged() = 0;
+    virtual void ReconfigureDataTypesDueToCrypto() = 0;
+  };
+
+  // |delegate| must not be null and must outlive this object.
   // |trusted_vault_client| may be null, but if non-null, the pointee must
   // outlive this object.
-  SyncServiceCrypto(
-      const base::RepeatingClosure& notify_observers,
-      const base::RepeatingClosure& notify_required_user_action_changed,
-      const base::RepeatingCallback<void(ConfigureReason)>& reconfigure,
-      TrustedVaultClient* trusted_vault_client);
+  SyncServiceCrypto(Delegate* delegate,
+                    TrustedVaultClient* trusted_vault_client);
   ~SyncServiceCrypto() override;
 
   void Reset();
@@ -136,12 +140,7 @@
   // TrustedVaultClient::GetIsRecoverabilityDegraded().
   void GetIsRecoverabilityDegradedCompleted(bool is_recoverability_degraded);
 
-  // Calls SyncServiceBase::NotifyObservers(). Never null.
-  const base::RepeatingClosure notify_observers_;
-
-  const base::RepeatingClosure notify_required_user_action_changed_;
-
-  const base::RepeatingCallback<void(ConfigureReason)> reconfigure_;
+  Delegate* const delegate_;
 
   // Never null and guaranteed to outlive us.
   TrustedVaultClient* const trusted_vault_client_;
diff --git a/components/sync/driver/sync_service_crypto_unittest.cc b/components/sync/driver/sync_service_crypto_unittest.cc
index 8e0c442..5b75e34d 100644
--- a/components/sync/driver/sync_service_crypto_unittest.cc
+++ b/components/sync/driver/sync_service_crypto_unittest.cc
@@ -54,6 +54,16 @@
   return result;
 }
 
+class MockDelegate : public SyncServiceCrypto::Delegate {
+ public:
+  MockDelegate() = default;
+  ~MockDelegate() override = default;
+
+  MOCK_METHOD(void, CryptoStateChanged, (), (override));
+  MOCK_METHOD(void, CryptoRequiredUserActionChanged, (), (override));
+  MOCK_METHOD(void, ReconfigureDataTypesDueToCrypto, (), (override));
+};
+
 // Object representing a server that contains the authoritative trusted vault
 // keys, and TestTrustedVaultClient reads from.
 class TestTrustedVaultServer {
@@ -274,10 +284,7 @@
 
   SyncServiceCryptoTest()
       : trusted_vault_client_(&trusted_vault_server_),
-        crypto_(notify_observers_cb_.Get(),
-                /*notify_required_user_action_changed=*/base::DoNothing(),
-                reconfigure_cb_.Get(),
-                &trusted_vault_client_) {
+        crypto_(&delegate_, &trusted_vault_client_) {
     trusted_vault_server_.StoreKeysOnServer(kSyncingAccount.gaia,
                                             kInitialTrustedVaultKeys);
   }
@@ -285,8 +292,7 @@
   ~SyncServiceCryptoTest() override = default;
 
   bool VerifyAndClearExpectations() {
-    return testing::Mock::VerifyAndClearExpectations(&notify_observers_cb_) &&
-           testing::Mock::VerifyAndClearExpectations(&reconfigure_cb_) &&
+    return testing::Mock::VerifyAndClearExpectations(&delegate_) &&
            testing::Mock::VerifyAndClearExpectations(&trusted_vault_client_) &&
            testing::Mock::VerifyAndClearExpectations(&engine_);
   }
@@ -296,11 +302,7 @@
                                                   &trusted_vault_client_);
   }
 
-  testing::NiceMock<base::MockCallback<base::RepeatingClosure>>
-      notify_observers_cb_;
-  testing::NiceMock<
-      base::MockCallback<base::RepeatingCallback<void(ConfigureReason)>>>
-      reconfigure_cb_;
+  testing::NiceMock<MockDelegate> delegate_;
   TestTrustedVaultServer trusted_vault_server_;
   TestTrustedVaultClient trusted_vault_client_;
   testing::NiceMock<MockSyncEngine> engine_;
@@ -330,15 +332,15 @@
   crypto_.SetEncryptionPassphrase(kTestPassphrase);
 
   // Mimic completion of the procedure in the sync engine.
-  EXPECT_CALL(notify_observers_cb_, Run());
+  EXPECT_CALL(delegate_, CryptoStateChanged());
   crypto_.OnPassphraseTypeChanged(PassphraseType::kCustomPassphrase,
                                   base::Time::Now());
   // The current implementation notifies observers again upon
   // crypto_.OnEncryptedTypesChanged(). This may change in the future.
-  EXPECT_CALL(notify_observers_cb_, Run());
+  EXPECT_CALL(delegate_, CryptoStateChanged());
   crypto_.OnEncryptedTypesChanged(syncer::EncryptableUserTypes(),
                                   /*encrypt_everything=*/true);
-  EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO));
+  EXPECT_CALL(delegate_, ReconfigureDataTypesDueToCrypto());
   crypto_.OnPassphraseAccepted();
 
   EXPECT_FALSE(crypto_.IsPassphraseRequired());
@@ -356,7 +358,7 @@
   ASSERT_THAT(trusted_vault_client_.fetch_count(), Eq(0));
 
   // Mimic the engine determining that a passphrase is required.
-  EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO));
+  EXPECT_CALL(delegate_, ReconfigureDataTypesDueToCrypto());
   crypto_.OnPassphraseRequired(
       KeyDerivationParams::CreateForPbkdf2(),
       MakeEncryptedData(kTestPassphrase,
@@ -365,7 +367,7 @@
   VerifyAndClearExpectations();
 
   // Entering the wrong passphrase should be rejected.
-  EXPECT_CALL(reconfigure_cb_, Run).Times(0);
+  EXPECT_CALL(delegate_, ReconfigureDataTypesDueToCrypto()).Times(0);
   EXPECT_CALL(engine_, SetDecryptionPassphrase).Times(0);
   EXPECT_FALSE(crypto_.SetDecryptionPassphrase("wrongpassphrase"));
   EXPECT_TRUE(crypto_.IsPassphraseRequired());
@@ -376,7 +378,7 @@
   // The current implementation issues two reconfigurations: one immediately
   // after checking the passphrase in the UI thread and a second time later when
   // the engine confirms with OnPassphraseAccepted().
-  EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO)).Times(2);
+  EXPECT_CALL(delegate_, ReconfigureDataTypesDueToCrypto()).Times(2);
   EXPECT_TRUE(crypto_.SetDecryptionPassphrase(kTestPassphrase));
   EXPECT_FALSE(crypto_.IsPassphraseRequired());
 }
@@ -387,7 +389,7 @@
   // engine initialization.
   MimicKeyRetrievalByUser();
 
-  EXPECT_CALL(reconfigure_cb_, Run).Times(0);
+  EXPECT_CALL(delegate_, ReconfigureDataTypesDueToCrypto()).Times(0);
   ASSERT_FALSE(crypto_.IsTrustedVaultKeyRequired());
 
   // OnTrustedVaultKeyRequired() called during initialization of the sync
@@ -416,7 +418,7 @@
   EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
 
   // Mimic completion of the engine.
-  EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO));
+  EXPECT_CALL(delegate_, ReconfigureDataTypesDueToCrypto());
   crypto_.OnTrustedVaultKeyAccepted();
   std::move(add_keys_cb).Run();
   EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
@@ -431,7 +433,7 @@
   // engine initialization.
   MimicKeyRetrievalByUser();
 
-  EXPECT_CALL(reconfigure_cb_, Run).Times(0);
+  EXPECT_CALL(delegate_, ReconfigureDataTypesDueToCrypto()).Times(0);
   ASSERT_FALSE(crypto_.IsTrustedVaultKeyRequired());
 
   // Mimic the initialization of the sync engine, without trusted vault keys
@@ -460,7 +462,7 @@
   EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
 
   // Mimic completion of the engine.
-  EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO));
+  EXPECT_CALL(delegate_, ReconfigureDataTypesDueToCrypto());
   crypto_.OnTrustedVaultKeyAccepted();
   std::move(add_keys_cb).Run();
   EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
@@ -471,7 +473,7 @@
 
 TEST_F(SyncServiceCryptoTest,
        ShouldReadNoTrustedVaultKeysFromClientAfterInitialization) {
-  EXPECT_CALL(reconfigure_cb_, Run).Times(0);
+  EXPECT_CALL(delegate_, ReconfigureDataTypesDueToCrypto()).Times(0);
   EXPECT_CALL(engine_, AddTrustedVaultDecryptionKeys).Times(0);
 
   ASSERT_FALSE(crypto_.IsTrustedVaultKeyRequired());
@@ -491,7 +493,7 @@
   ASSERT_FALSE(crypto_.IsTrustedVaultKeyRequired());
 
   // Mimic completion of the fetch, which should lead to a reconfiguration.
-  EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO));
+  EXPECT_CALL(delegate_, ReconfigureDataTypesDueToCrypto());
   ASSERT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
   EXPECT_TRUE(crypto_.IsTrustedVaultKeyRequired());
   EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(1));
@@ -552,7 +554,7 @@
 
   // Mimic completion of the engine, without OnTrustedVaultKeyAccepted(), for
   // the second pass.
-  EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO));
+  EXPECT_CALL(delegate_, ReconfigureDataTypesDueToCrypto());
   std::move(add_keys_cb).Run();
 
   EXPECT_TRUE(crypto_.IsTrustedVaultKeyRequired());
@@ -613,7 +615,7 @@
   // Because of |kRotatedKeys| is a continuation of |kInitialTrustedVaultKeys|,
   // TrustedVaultServer should successfully deliver the new keys |kRotatedKeys|
   // to the client.
-  EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO));
+  EXPECT_CALL(delegate_, ReconfigureDataTypesDueToCrypto());
   ASSERT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
   EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
   ASSERT_THAT(trusted_vault_client_.keys_marked_as_stale_count(), Eq(1));
@@ -664,7 +666,7 @@
 
   // Key retrieval should have initiated a third fetch.
   EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(3));
-  EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO));
+  EXPECT_CALL(delegate_, ReconfigureDataTypesDueToCrypto());
   EXPECT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
   EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
   EXPECT_THAT(trusted_vault_client_.keys_marked_as_stale_count(), Eq(1));
@@ -716,7 +718,7 @@
   EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
 
   // The completion of the second fetch should resolve the encryption issue.
-  EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO));
+  EXPECT_CALL(delegate_, ReconfigureDataTypesDueToCrypto());
   EXPECT_TRUE(trusted_vault_client_.CompleteFetchKeysRequest());
   EXPECT_THAT(trusted_vault_client_.fetch_count(), Eq(2));
   EXPECT_FALSE(crypto_.IsTrustedVaultKeyRequired());
@@ -845,7 +847,7 @@
 
   // Changing the state notifies observers and should lead to a change in
   // IsTrustedVaultRecoverabilityDegraded().
-  EXPECT_CALL(notify_observers_cb_, Run());
+  EXPECT_CALL(delegate_, CryptoStateChanged());
   trusted_vault_client_.SetIsRecoverabilityDegraded(true);
   EXPECT_TRUE(crypto_.IsTrustedVaultRecoverabilityDegraded());
 }
@@ -868,7 +870,7 @@
 
   // Changing the state notifies observers and should lead to a change in
   // IsTrustedVaultRecoverabilityDegraded().
-  EXPECT_CALL(notify_observers_cb_, Run());
+  EXPECT_CALL(delegate_, CryptoStateChanged());
   trusted_vault_client_.SetIsRecoverabilityDegraded(false);
   EXPECT_FALSE(crypto_.IsTrustedVaultRecoverabilityDegraded());
 }
@@ -935,8 +937,8 @@
   crypto_.SetEncryptionPassphrase(kTestPassphrase);
 
   // Mimic completion of the procedure in the sync engine.
-  EXPECT_CALL(reconfigure_cb_, Run(CONFIGURE_REASON_CRYPTO));
-  EXPECT_CALL(notify_observers_cb_, Run());
+  EXPECT_CALL(delegate_, ReconfigureDataTypesDueToCrypto());
+  EXPECT_CALL(delegate_, CryptoStateChanged());
   crypto_.OnPassphraseTypeChanged(PassphraseType::kCustomPassphrase,
                                   base::Time::Now());
   crypto_.OnPassphraseAccepted();
diff --git a/components/sync/driver/sync_user_settings_unittest.cc b/components/sync/driver/sync_user_settings_unittest.cc
index 839af62..e82b2be 100644
--- a/components/sync/driver/sync_user_settings_unittest.cc
+++ b/components/sync/driver/sync_user_settings_unittest.cc
@@ -17,6 +17,7 @@
 #include "components/sync/base/user_selectable_type.h"
 #include "components/sync/driver/sync_service_crypto.h"
 #include "components/sync/engine/configure_reason.h"
+#include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
@@ -50,17 +51,25 @@
   return Intersection(UserTypes(), sync_user_settings.GetPreferredDataTypes());
 }
 
+class MockSyncServiceCryptoDelegate : public SyncServiceCrypto::Delegate {
+ public:
+  MockSyncServiceCryptoDelegate() = default;
+  ~MockSyncServiceCryptoDelegate() override = default;
+
+  MOCK_METHOD(void, CryptoStateChanged, (), (override));
+  MOCK_METHOD(void, CryptoRequiredUserActionChanged, (), (override));
+  MOCK_METHOD(void, ReconfigureDataTypesDueToCrypto, (), (override));
+};
+
 class SyncUserSettingsTest : public testing::Test {
  protected:
   SyncUserSettingsTest() {
     SyncPrefs::RegisterProfilePrefs(pref_service_.registry());
     sync_prefs_ = std::make_unique<SyncPrefs>(&pref_service_);
 
-    sync_service_crypto_ = std::make_unique<SyncServiceCrypto>(
-        /*notify_observers=*/base::DoNothing(),
-        /*notify_required_user_action_changed=*/base::DoNothing(),
-        /*reconfigure=*/base::DoNothing(),
-        /*trusted_vault_client=*/nullptr);
+    sync_service_crypto_ =
+        std::make_unique<SyncServiceCrypto>(&sync_service_crypto_delegate_,
+                                            /*trusted_vault_client=*/nullptr);
   }
 
   std::unique_ptr<SyncUserSettingsImpl> MakeSyncUserSettings(
@@ -74,6 +83,8 @@
   // fields are dependent.
   TestingPrefServiceSimple pref_service_;
   std::unique_ptr<SyncPrefs> sync_prefs_;
+  testing::NiceMock<MockSyncServiceCryptoDelegate>
+      sync_service_crypto_delegate_;
   std::unique_ptr<SyncServiceCrypto> sync_service_crypto_;
 };
 
diff --git a/components/sync/engine/debug_info_event_listener.cc b/components/sync/engine/debug_info_event_listener.cc
index b669e31..0dc9667 100644
--- a/components/sync/engine/debug_info_event_listener.cc
+++ b/components/sync/engine/debug_info_event_listener.cc
@@ -51,8 +51,7 @@
 
 void DebugInfoEventListener::OnInitializationComplete(
     const WeakHandle<JsBackend>& js_backend,
-    const WeakHandle<DataTypeDebugInfoListener>& debug_listener,
-    bool success) {
+    const WeakHandle<DataTypeDebugInfoListener>& debug_listener) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   CreateAndAddEvent(sync_pb::SyncEnums::INITIALIZATION_COMPLETE);
 }
diff --git a/components/sync/engine/debug_info_event_listener.h b/components/sync/engine/debug_info_event_listener.h
index 9a4fabe9..f9dc72a 100644
--- a/components/sync/engine/debug_info_event_listener.h
+++ b/components/sync/engine/debug_info_event_listener.h
@@ -45,8 +45,7 @@
   void OnSyncCycleCompleted(const SyncCycleSnapshot& snapshot) override;
   void OnInitializationComplete(
       const WeakHandle<JsBackend>& js_backend,
-      const WeakHandle<DataTypeDebugInfoListener>& debug_listener,
-      bool success) override;
+      const WeakHandle<DataTypeDebugInfoListener>& debug_listener) override;
   void OnConnectionStatusChange(ConnectionStatus connection_status) override;
   void OnActionableError(const SyncProtocolError& sync_error) override;
   void OnMigrationRequested(ModelTypeSet types) override;
diff --git a/components/sync/engine/js_sync_manager_observer.cc b/components/sync/engine/js_sync_manager_observer.cc
index ed65a335..7a17987 100644
--- a/components/sync/engine/js_sync_manager_observer.cc
+++ b/components/sync/engine/js_sync_manager_observer.cc
@@ -63,8 +63,7 @@
 
 void JsSyncManagerObserver::OnInitializationComplete(
     const WeakHandle<JsBackend>& js_backend,
-    const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener,
-    bool success) {
+    const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener) {
   if (!event_handler_.IsInitialized()) {
     return;
   }
diff --git a/components/sync/engine/js_sync_manager_observer.h b/components/sync/engine/js_sync_manager_observer.h
index 5ac7fd8..1a07f16 100644
--- a/components/sync/engine/js_sync_manager_observer.h
+++ b/components/sync/engine/js_sync_manager_observer.h
@@ -33,10 +33,9 @@
   // SyncManager::Observer implementation.
   void OnSyncCycleCompleted(const SyncCycleSnapshot& snapshot) override;
   void OnConnectionStatusChange(ConnectionStatus status) override;
-  void OnInitializationComplete(
-      const WeakHandle<JsBackend>& js_backend,
-      const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener,
-      bool success) override;
+  void OnInitializationComplete(const WeakHandle<JsBackend>& js_backend,
+                                const WeakHandle<DataTypeDebugInfoListener>&
+                                    debug_info_listener) override;
   void OnActionableError(const SyncProtocolError& sync_protocol_error) override;
   void OnProtocolEvent(const ProtocolEvent& event) override;
   void OnMigrationRequested(ModelTypeSet types) override;
diff --git a/components/sync/engine/js_sync_manager_observer_unittest.cc b/components/sync/engine/js_sync_manager_observer_unittest.cc
index fdae017..e2ef201 100644
--- a/components/sync/engine/js_sync_manager_observer_unittest.cc
+++ b/components/sync/engine/js_sync_manager_observer_unittest.cc
@@ -50,7 +50,7 @@
                             HasDetailsAsDictionary(expected_details)));
 
   js_sync_manager_observer_.OnInitializationComplete(
-      WeakHandle<JsBackend>(), WeakHandle<DataTypeDebugInfoListener>(), true);
+      WeakHandle<JsBackend>(), WeakHandle<DataTypeDebugInfoListener>());
   PumpLoop();
 }
 
diff --git a/components/sync/engine/sync_encryption_handler.h b/components/sync/engine/sync_encryption_handler.h
index b02b901..a1cdfc26 100644
--- a/components/sync/engine/sync_encryption_handler.h
+++ b/components/sync/engine/sync_encryption_handler.h
@@ -85,7 +85,7 @@
     //
     // |encrypted_types| will always be a superset of
     // AlwaysEncryptedUserTypes().  If |encrypt_everything| is
-    // true, |encrypted_types| will be the set of all known types.
+    // true, |encrypted_types| will be the set of all encryptable types.
     //
     // Until this function is called, observers can assume that the
     // set of encrypted types is AlwaysEncryptedUserTypes() and that the
diff --git a/components/sync/engine/sync_manager.h b/components/sync/engine/sync_manager.h
index a0cfbaff..9871665 100644
--- a/components/sync/engine/sync_manager.h
+++ b/components/sync/engine/sync_manager.h
@@ -71,11 +71,10 @@
     // message, unless otherwise specified, produces undefined behavior.
 
     // TODO(crbug.com/1198986): Remove this - it's always called synchronously
-    // from Init(), and always with success=true.
+    // from Init().
     virtual void OnInitializationComplete(
         const WeakHandle<JsBackend>& js_backend,
-        const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener,
-        bool success) = 0;
+        const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener) = 0;
 
     virtual void OnActionableError(
         const SyncProtocolError& sync_protocol_error) = 0;
diff --git a/components/sync/engine/sync_manager_impl.cc b/components/sync/engine/sync_manager_impl.cc
index 7d4b55f..06f1405 100644
--- a/components/sync/engine/sync_manager_impl.cc
+++ b/components/sync/engine/sync_manager_impl.cc
@@ -215,7 +215,7 @@
   for (auto& observer : observers_) {
     observer.OnInitializationComplete(
         MakeWeakHandle(weak_ptr_factory_.GetWeakPtr()),
-        MakeWeakHandle(debug_info_event_listener_.GetWeakPtr()), true);
+        MakeWeakHandle(debug_info_event_listener_.GetWeakPtr()));
   }
 }
 
diff --git a/components/sync/engine/sync_manager_impl_unittest.cc b/components/sync/engine/sync_manager_impl_unittest.cc
index 08fbdab..1abb394 100644
--- a/components/sync/engine/sync_manager_impl_unittest.cc
+++ b/components/sync/engine/sync_manager_impl_unittest.cc
@@ -105,8 +105,7 @@
   MOCK_METHOD(void,
               OnInitializationComplete,
               (const WeakHandle<JsBackend>&,
-               const WeakHandle<DataTypeDebugInfoListener>&,
-               bool),
+               const WeakHandle<DataTypeDebugInfoListener>&),
               (override));
   // NOLINT
   MOCK_METHOD(void, OnConnectionStatusChange, (ConnectionStatus), (override));
@@ -169,8 +168,7 @@
 
     sync_manager_.AddObserver(&manager_observer_);
     EXPECT_CALL(manager_observer_, OnInitializationComplete)
-        .WillOnce(DoAll(SaveArg<0>(&js_backend_),
-                        SaveArg<2>(&initialization_succeeded_)));
+        .WillOnce(DoAll(SaveArg<0>(&js_backend_)));
 
     EXPECT_FALSE(js_backend_.IsInitialized());
 
@@ -244,7 +242,6 @@
   SyncManagerImpl sync_manager_;
   CancelationSignal cancelation_signal_;
   WeakHandle<JsBackend> js_backend_;
-  bool initialization_succeeded_;
   StrictMock<SyncManagerObserverMock> manager_observer_;
   // Owned by |sync_manager_|.
   StrictMock<SyncEncryptionHandlerObserverMock>* encryption_observer_;
diff --git a/components/sync/nigori/nigori_state.cc b/components/sync/nigori/nigori_state.cc
index c9c2542..2785c29d3 100644
--- a/components/sync/nigori/nigori_state.cc
+++ b/components/sync/nigori/nigori_state.cc
@@ -237,7 +237,7 @@
   specifics.set_keybag_is_frozen(true);
   specifics.set_encrypt_everything(encrypt_everything);
   if (encrypt_everything) {
-    UpdateNigoriSpecificsFromEncryptedTypes(EncryptableUserTypes(), &specifics);
+    UpdateNigoriSpecificsFromEncryptedTypes(GetEncryptedTypes(), &specifics);
   }
   specifics.set_passphrase_type(passphrase_type);
   if (passphrase_type == sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE) {
@@ -309,4 +309,12 @@
       switches::kSyncTriggerFullKeystoreMigration);
 }
 
+ModelTypeSet NigoriState::GetEncryptedTypes() const {
+  if (!encrypt_everything) {
+    return AlwaysEncryptedUserTypes();
+  }
+
+  return EncryptableUserTypes();
+}
+
 }  // namespace syncer
diff --git a/components/sync/nigori/nigori_state.h b/components/sync/nigori/nigori_state.h
index 37a739d8..6f3a6f8 100644
--- a/components/sync/nigori/nigori_state.h
+++ b/components/sync/nigori/nigori_state.h
@@ -12,6 +12,7 @@
 #include "base/macros.h"
 #include "base/optional.h"
 #include "base/time/time.h"
+#include "components/sync/base/model_type.h"
 #include "components/sync/engine/nigori/nigori.h"
 #include "components/sync/protocol/encryption.pb.h"
 #include "components/sync/protocol/nigori_specifics.pb.h"
@@ -51,6 +52,8 @@
 
   bool NeedsKeystoreReencryption() const;
 
+  ModelTypeSet GetEncryptedTypes() const;
+
   // TODO(crbug.com/1109221): Make this const unique_ptr to avoid the object
   // being destroyed after it's been injected to the ModelTypeWorker-s.
   std::unique_ptr<CryptographerImpl> cryptographer;
diff --git a/components/sync/nigori/nigori_sync_bridge_impl.cc b/components/sync/nigori/nigori_sync_bridge_impl.cc
index 2e26aa0..0c4ab4c 100644
--- a/components/sync/nigori/nigori_sync_bridge_impl.cc
+++ b/components/sync/nigori/nigori_sync_bridge_impl.cc
@@ -224,22 +224,6 @@
   return specifics.encrypt_everything() || !old_encrypt_everything;
 }
 
-// Updates |*current_encrypt_everything| if needed. Returns true if its value
-// was changed.
-bool UpdateEncryptedTypes(const NigoriSpecifics& specifics,
-                          bool* current_encrypt_everything) {
-  DCHECK(current_encrypt_everything);
-  DCHECK(
-      IsValidEncryptedTypesTransition(*current_encrypt_everything, specifics));
-  // TODO(crbug.com/922900): more logic is to be added here, once we support
-  // enforced encryption for individual datatypes.
-  if (*current_encrypt_everything == specifics.encrypt_everything()) {
-    return false;
-  }
-  *current_encrypt_everything = specifics.encrypt_everything();
-  return true;
-}
-
 // Packs explicit passphrase key in order to persist it. Returns empty string in
 // case of errors.
 std::string PackExplicitPassphraseKey(const Encryptor& encryptor,
@@ -328,13 +312,6 @@
   return keystore_keys;
 }
 
-ModelTypeSet GetEncryptedTypes(bool encrypt_everything) {
-  if (encrypt_everything) {
-    return EncryptableUserTypes();
-  }
-  return AlwaysEncryptedUserTypes();
-}
-
 }  // namespace
 
 class NigoriSyncBridgeImpl::BroadcastingObserver
@@ -508,8 +485,8 @@
   // completeness of first sync cycle (which happens before Init() call).
   // TODO(crbug.com/922900): try to avoid double notification (second one can
   // happen during UpdateLocalState() call).
-  broadcasting_observer_->OnEncryptedTypesChanged(
-      GetEncryptedTypes(state_.encrypt_everything), state_.encrypt_everything);
+  broadcasting_observer_->OnEncryptedTypesChanged(state_.GetEncryptedTypes(),
+                                                  state_.encrypt_everything);
   broadcasting_observer_->OnCryptographerStateChanged(
       state_.cryptographer.get(), state_.pending_keys.has_value());
 
@@ -797,13 +774,14 @@
     return ModelError(FROM_HERE, "Invalid encrypted types transition.");
   }
 
+  const ModelTypeSet encrypted_types_before_update = state_.GetEncryptedTypes();
+
+  state_.encrypt_everything = specifics.encrypt_everything();
+
   const bool passphrase_type_changed =
       UpdatePassphraseType(new_passphrase_type, &state_.passphrase_type);
   DCHECK_NE(state_.passphrase_type, NigoriSpecifics::UNKNOWN);
 
-  const bool encrypted_types_changed =
-      UpdateEncryptedTypes(specifics, &state_.encrypt_everything);
-
   if (specifics.has_custom_passphrase_time()) {
     state_.custom_passphrase_time =
         ProtoTimeToTime(specifics.custom_passphrase_time());
@@ -838,13 +816,12 @@
         *ProtoPassphraseInt32ToEnum(state_.passphrase_type),
         GetExplicitPassphraseTime());
   }
-  if (encrypted_types_changed) {
-    // Currently the only way to change encrypted types is to enable
-    // encrypt_everything.
-    DCHECK(state_.encrypt_everything);
-    broadcasting_observer_->OnEncryptedTypesChanged(EncryptableUserTypes(),
+
+  if (encrypted_types_before_update != state_.GetEncryptedTypes()) {
+    broadcasting_observer_->OnEncryptedTypesChanged(state_.GetEncryptedTypes(),
                                                     state_.encrypt_everything);
   }
+
   broadcasting_observer_->OnCryptographerStateChanged(
       state_.cryptographer.get(), state_.pending_keys.has_value());
 
@@ -1035,7 +1012,7 @@
   broadcasting_observer_->OnCryptographerStateChanged(
       state_.cryptographer.get(),
       /*has_pending_keys=*/false);
-  broadcasting_observer_->OnEncryptedTypesChanged(AlwaysEncryptedUserTypes(),
+  broadcasting_observer_->OnEncryptedTypesChanged(state_.GetEncryptedTypes(),
                                                   false);
 }
 
@@ -1050,7 +1027,7 @@
 }
 
 ModelTypeSet NigoriSyncBridgeImpl::GetEncryptedTypesForTesting() const {
-  return GetEncryptedTypes(state_.encrypt_everything);
+  return state_.GetEncryptedTypes();
 }
 
 bool NigoriSyncBridgeImpl::HasPendingKeysForTesting() const {
diff --git a/components/sync/nigori/pending_local_nigori_commit.cc b/components/sync/nigori/pending_local_nigori_commit.cc
index c8b1bea..723add7 100644
--- a/components/sync/nigori/pending_local_nigori_commit.cc
+++ b/components/sync/nigori/pending_local_nigori_commit.cc
@@ -91,7 +91,7 @@
                                       state.custom_passphrase_time);
     observer->OnCryptographerStateChanged(state.cryptographer.get(),
                                           /*has_pending_keys=*/false);
-    observer->OnEncryptedTypesChanged(EncryptableUserTypes(),
+    observer->OnEncryptedTypesChanged(state.GetEncryptedTypes(),
                                       /*encrypt_everything=*/true);
     observer->OnPassphraseAccepted();
 
diff --git a/components/sync/test/engine/fake_sync_manager.cc b/components/sync/test/engine/fake_sync_manager.cc
index 8129f561..0a083bd 100644
--- a/components/sync/test/engine/fake_sync_manager.cc
+++ b/components/sync/test/engine/fake_sync_manager.cc
@@ -25,10 +25,8 @@
 
 FakeSyncManager::FakeSyncManager(ModelTypeSet initial_sync_ended_types,
                                  ModelTypeSet progress_marker_types,
-                                 ModelTypeSet configure_fail_types,
-                                 bool should_fail_on_init)
-    : should_fail_on_init_(should_fail_on_init),
-      initial_sync_ended_types_(initial_sync_ended_types),
+                                 ModelTypeSet configure_fail_types)
+    : initial_sync_ended_types_(initial_sync_ended_types),
       progress_marker_types_(progress_marker_types),
       configure_fail_types_(configure_fail_types),
       last_configure_reason_(CONFIGURE_REASON_UNKNOWN) {}
@@ -74,8 +72,7 @@
 
   for (auto& observer : observers_) {
     observer.OnInitializationComplete(WeakHandle<JsBackend>(),
-                                      WeakHandle<DataTypeDebugInfoListener>(),
-                                      !should_fail_on_init_);
+                                      WeakHandle<DataTypeDebugInfoListener>());
   }
 }
 
diff --git a/components/sync/test/engine/fake_sync_manager.h b/components/sync/test/engine/fake_sync_manager.h
index 009eb34..8b621df64 100644
--- a/components/sync/test/engine/fake_sync_manager.h
+++ b/components/sync/test/engine/fake_sync_manager.h
@@ -43,8 +43,7 @@
   // to include those types that didn't fail.
   FakeSyncManager(ModelTypeSet initial_sync_ended_types,
                   ModelTypeSet progress_marker_types,
-                  ModelTypeSet configure_fail_types,
-                  bool should_fail_on_init);
+                  ModelTypeSet configure_fail_types);
   ~FakeSyncManager() override;
 
   // Returns those types that have been downloaded since the last call to
@@ -110,7 +109,6 @@
   std::string birthday_;
   std::string bag_of_chips_;
 
-  bool should_fail_on_init_;
   // Faked data state.
   ModelTypeSet initial_sync_ended_types_;
   ModelTypeSet progress_marker_types_;
diff --git a/components/sync_bookmarks/bookmark_specifics_conversions.cc b/components/sync_bookmarks/bookmark_specifics_conversions.cc
index 55351ad..0e13eb19 100644
--- a/components/sync_bookmarks/bookmark_specifics_conversions.cc
+++ b/components/sync_bookmarks/bookmark_specifics_conversions.cc
@@ -324,8 +324,6 @@
   SetBookmarkFaviconFromSpecifics(specifics, node, favicon_service);
 }
 
-// TODO(crbug.com/1005219): Replace this function to move children between
-// parent nodes more efficiently.
 const bookmarks::BookmarkNode* ReplaceBookmarkNodeGUID(
     const bookmarks::BookmarkNode* node,
     const base::GUID& guid,
diff --git a/components/ukm/debug/ukm_internals.html b/components/ukm/debug/ukm_internals.html
index a4c5aab..9b202d707 100644
--- a/components/ukm/debug/ukm_internals.html
+++ b/components/ukm/debug/ukm_internals.html
@@ -12,6 +12,7 @@
       <div> Session: <span id="sessionid"/></div>
       <div> Client_id: <span id="clientid"/></div>
       <div> Event Sampling Enabled: <span id="is_sampling_enabled"/></div>
+      <div> NOTE FOR MOBILE: This only shows events since the most recent foregrounding.</div>
     </div>
   </div>
   <div>
diff --git a/components/user_manager/known_user.cc b/components/user_manager/known_user.cc
index e0a98cc..67c20f8 100644
--- a/components/user_manager/known_user.cc
+++ b/components/user_manager/known_user.cc
@@ -28,7 +28,7 @@
 const char kKnownUsers[] = "KnownUsers";
 
 // Known user preferences keys (stored in Local State). All keys should be
-// listed in kReservedKeys below.
+// listed in kReservedKeys or kObsoleteKeys below.
 
 // Key of canonical e-mail value.
 const char kCanonicalEmail[] = "email";
@@ -61,8 +61,9 @@
 const char kGaiaIdMigration[] = "gaia_id_migration";
 
 // Key of the boolean flag telling if a minimal user home migration has been
-// attempted.
-const char kMinimalMigrationAttempted[] = "minimal_migration_attempted";
+// attempted. This flag is not used since M88 and is only kept here to be able
+// to remove it from existing entries.
+const char kMinimalMigrationAttemptedObsolete[] = "minimal_migration_attempted";
 
 // Key of the boolean flag telling if user session requires policy.
 const char kProfileRequiresPolicy[] = "profile_requires_policy";
@@ -108,7 +109,6 @@
                                kGAPSCookie,
                                kReauthReasonKey,
                                kGaiaIdMigration,
-                               kMinimalMigrationAttempted,
                                kProfileRequiresPolicy,
                                kIsEphemeral,
                                kChallengeResponseKeys,
@@ -121,6 +121,12 @@
                                kPinAutosubmitBackfillNeeded,
                                kPasswordSyncToken};
 
+// List containing all known user preference keys that used to be reserved and
+// are now obsolete.
+const char* kObsoleteKeys[] = {
+    kMinimalMigrationAttemptedObsolete,
+};
+
 PrefService* GetLocalStateLegacy() {
   if (!UserManager::IsInitialized())
     return nullptr;
@@ -596,26 +602,6 @@
   return GetIntegerPref(account_id, kReauthReasonKey, out_value);
 }
 
-bool KnownUser::WasUserHomeMinimalMigrationAttempted(
-    const AccountId& account_id) {
-  bool minimal_migration_attempted;
-  const bool pref_set = GetBooleanPref(account_id, kMinimalMigrationAttempted,
-                                       &minimal_migration_attempted);
-  if (pref_set)
-    return minimal_migration_attempted;
-
-  // If we haven't recorded that a minimal migration has been attempted, assume
-  // no.
-  return false;
-}
-
-void KnownUser::SetUserHomeMinimalMigrationAttempted(
-    const AccountId& account_id,
-    bool minimal_migration_attempted) {
-  SetBooleanPref(account_id, kMinimalMigrationAttempted,
-                 minimal_migration_attempted);
-}
-
 void KnownUser::SetChallengeResponseKeys(const AccountId& account_id,
                                          base::Value value) {
   DCHECK(value.is_list());
@@ -779,6 +765,16 @@
   });
 }
 
+void KnownUser::CleanObsoletePrefs() {
+  ListPrefUpdate update(local_state_, kKnownUsers);
+  for (base::Value& user_entry : update.Get()->GetList()) {
+    if (!user_entry.is_dict())
+      continue;
+    for (const std::string& key : kObsoleteKeys)
+      user_entry.RemoveKey(key);
+  }
+}
+
 // static
 void KnownUser::RegisterPrefs(PrefRegistrySimple* registry) {
   registry->RegisterListPref(kKnownUsers);
@@ -1107,26 +1103,6 @@
   return KnownUser(local_state).FindReauthReason(account_id, out_value);
 }
 
-bool WasUserHomeMinimalMigrationAttempted(const AccountId& account_id) {
-  PrefService* local_state = GetLocalStateLegacy();
-  // Local State may not be initialized in tests.
-  if (!local_state)
-    return false;
-  return KnownUser(local_state)
-      .WasUserHomeMinimalMigrationAttempted(account_id);
-}
-
-void SetUserHomeMinimalMigrationAttempted(const AccountId& account_id,
-                                          bool minimal_migration_attempted) {
-  PrefService* local_state = GetLocalStateLegacy();
-  // Local State may not be initialized in tests.
-  if (!local_state)
-    return;
-  return KnownUser(local_state)
-      .SetUserHomeMinimalMigrationAttempted(account_id,
-                                            minimal_migration_attempted);
-}
-
 void SetChallengeResponseKeys(const AccountId& account_id, base::Value value) {
   PrefService* local_state = GetLocalStateLegacy();
   // Local State may not be initialized in tests.
diff --git a/components/user_manager/known_user.h b/components/user_manager/known_user.h
index 1c1ff56..372c937 100644
--- a/components/user_manager/known_user.h
+++ b/components/user_manager/known_user.h
@@ -196,13 +196,6 @@
   // otherwise.
   bool FindReauthReason(const AccountId& account_id, int* out_value);
 
-  // Saves that a minimal migration was attempted for this user's cryptohome.
-  void SetUserHomeMinimalMigrationAttempted(const AccountId& account_id,
-                                            bool minimal_migration_attempted);
-
-  // Returns true if minimal migration was attempted for this user's cryptohome.
-  bool WasUserHomeMinimalMigrationAttempted(const AccountId& account_id);
-
   // Setter and getter for the information about challenge-response keys that
   // can be used by this user to authenticate. The getter returns a null value
   // when the property isn't present. For the format of the value, refer to
@@ -264,6 +257,7 @@
 
   FRIEND_TEST_ALL_PREFIXES(KnownUserTest,
                            CleanEphemeralUsersRemovesEphemeralAdOnly);
+  FRIEND_TEST_ALL_PREFIXES(KnownUserTest, CleanObsoletePrefs);
 
   // Removes |path| from account_id's known user dictionary.
   void ClearPref(const AccountId& account_id, const std::string& path);
@@ -278,6 +272,9 @@
   // Marks if user is ephemeral and should be removed on log out.
   void SetIsEphemeralUser(const AccountId& account_id, bool is_ephemeral);
 
+  // Removes all obsolete prefs from all users.
+  void CleanObsoletePrefs();
+
   PrefService* const local_state_;
 };
 
@@ -506,19 +503,6 @@
 bool USER_MANAGER_EXPORT FindReauthReason(const AccountId& account_id,
                                           int* out_value);
 
-// Saves that a minimal migration was attempted for this user's cryptohome.
-// TODO(https://crbug.com/1150434): Deprecated, use
-// KnownUser::SetUserHomeMinimalMigrationAttempted instead.
-void USER_MANAGER_EXPORT
-SetUserHomeMinimalMigrationAttempted(const AccountId& account_id,
-                                     bool minimal_migration_attempted);
-
-// Returns true if minimal migration was attempted for this user's cryptohome.
-bool USER_MANAGER_EXPORT
-// TODO(https://crbug.com/1150434): Deprecated, use
-// KnownUser::WasUserHomeMinimalMigrationAttempted instead.
-WasUserHomeMinimalMigrationAttempted(const AccountId& account_id);
-
 // Setter and getter for the information about challenge-response keys that can
 // be used by this user to authenticate.
 // The getter returns a null value when the property isn't present.
diff --git a/components/user_manager/known_user_unittest.cc b/components/user_manager/known_user_unittest.cc
index c31b2c3b..dde8f88 100644
--- a/components/user_manager/known_user_unittest.cc
+++ b/components/user_manager/known_user_unittest.cc
@@ -662,6 +662,32 @@
                                             kAccountIdNonEphemeralAd));
 }
 
+TEST_F(KnownUserTest, CleanObsoletePrefs) {
+  KnownUser known_user(local_state());
+  const std::string kObsoletePrefName = "minimal_migration_attempted";
+  const std::string kCustomPrefName = "custom_pref";
+
+  // Set an obsolete pref.
+  known_user.SetBooleanPref(kDefaultAccountId, kObsoletePrefName, true);
+  // Set a custom pref.
+  known_user.SetBooleanPref(kDefaultAccountId, kCustomPrefName, true);
+  // Set a reserved, non-obsolete pref.
+  known_user.SetIsEnterpriseManaged(kDefaultAccountId, true);
+
+  known_user.CleanObsoletePrefs();
+
+  // Verify that only the obsolete pref has been removed.
+  EXPECT_FALSE(known_user.GetBooleanPref(kDefaultAccountId, kObsoletePrefName,
+                                         /*out_value=*/nullptr));
+
+  bool custom_pref_value = false;
+  EXPECT_TRUE(known_user.GetBooleanPref(kDefaultAccountId, kCustomPrefName,
+                                        &custom_pref_value));
+  EXPECT_TRUE(custom_pref_value);
+
+  EXPECT_TRUE(known_user.GetIsEnterpriseManaged(kDefaultAccountId));
+}
+
 //
 // =============================================================================
 // Type-parametrized unittests for Set{String,Boolean,Integer,}Pref and
diff --git a/components/user_manager/user_manager_base.cc b/components/user_manager/user_manager_base.cc
index 5efd8a92f..bf28f86 100644
--- a/components/user_manager/user_manager_base.cc
+++ b/components/user_manager/user_manager_base.cc
@@ -1047,8 +1047,11 @@
   if (!HasBrowserRestarted()) {
     PrefService* local_state = GetLocalState();
     // local_state may be null in unit tests.
-    if (local_state)
-      KnownUser(local_state).CleanEphemeralUsers();
+    if (local_state) {
+      KnownUser known_user(local_state);
+      known_user.CleanEphemeralUsers();
+      known_user.CleanObsoletePrefs();
+    }
   }
   CallUpdateLoginState();
 }
diff --git a/components/viz/client/client_resource_provider.cc b/components/viz/client/client_resource_provider.cc
index a36b432..758a131 100644
--- a/components/viz/client/client_resource_provider.cc
+++ b/components/viz/client/client_resource_provider.cc
@@ -29,7 +29,7 @@
 
 struct ClientResourceProvider::ImportedResource {
   TransferableResource resource;
-  std::unique_ptr<SingleReleaseCallback> release_callback;
+  ReleaseCallback release_callback;
   int exported_count = 0;
   bool marked_for_deletion = false;
 
@@ -42,7 +42,7 @@
 
   ImportedResource(ResourceId id,
                    const TransferableResource& resource,
-                   std::unique_ptr<SingleReleaseCallback> release_callback)
+                   ReleaseCallback release_callback)
       : resource(resource),
         release_callback(std::move(release_callback)),
         // If the resource is immediately deleted, it returns the same SyncToken
@@ -260,15 +260,8 @@
       continue;
     }
 
-    // Save the ReleaseCallback to run after iterating through internal data
-    // structures, in case it calls back into this class.
-    auto run_callback = [](std::unique_ptr<SingleReleaseCallback> cb,
-                           const gpu::SyncToken& sync_token, bool lost) {
-      cb->Run(sync_token, lost);
-      // |cb| is destroyed when leaving scope.
-    };
     release_callbacks.push_back(
-        base::BindOnce(run_callback, std::move(imported.release_callback),
+        base::BindOnce(std::move(imported.release_callback),
                        imported.returned_sync_token, imported.returned_lost));
     // We don't want to keep this resource, so we leave |imported_keep_end_it|
     // pointing to it (since it points past the end of what we're keeping). We
@@ -291,7 +284,7 @@
 
 ResourceId ClientResourceProvider::ImportResource(
     const TransferableResource& resource,
-    std::unique_ptr<SingleReleaseCallback> release_callback) {
+    ReleaseCallback release_callback) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   ResourceId id = id_generator_.GenerateNextId();
   auto result = imported_resources_.emplace(
@@ -307,8 +300,8 @@
   ImportedResource& imported = it->second;
   imported.marked_for_deletion = true;
   if (imported.exported_count == 0) {
-    imported.release_callback->Run(imported.returned_sync_token,
-                                   imported.returned_lost);
+    std::move(imported.release_callback)
+        .Run(imported.returned_sync_token, imported.returned_lost);
     imported_resources_.erase(it);
   }
 }
@@ -329,8 +322,8 @@
           return false;
         }
 
-        imported.release_callback->Run(imported.returned_sync_token,
-                                       imported.returned_lost);
+        std::move(imported.release_callback)
+            .Run(imported.returned_sync_token, imported.returned_lost);
         // Was exported and removed by the client, so return it now.
         return true;
       };
@@ -355,8 +348,9 @@
                                     << imported.stack_trace.ToString() << "===";
 #endif
 
-    imported.release_callback->Run(imported.returned_sync_token,
-                                   /*is_lost=*/true);
+    std::move(imported.release_callback)
+        .Run(imported.returned_sync_token,
+             /*is_lost=*/true);
   }
   imported_resources_.clear();
 }
diff --git a/components/viz/client/client_resource_provider.h b/components/viz/client/client_resource_provider.h
index ad22069..2fde6e6 100644
--- a/components/viz/client/client_resource_provider.h
+++ b/components/viz/client/client_resource_provider.h
@@ -15,7 +15,6 @@
 #include "components/viz/common/resources/resource_id.h"
 #include "components/viz/common/resources/resource_settings.h"
 #include "components/viz/common/resources/returned_resource.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "components/viz/common/resources/transferable_resource.h"
 #include "third_party/khronos/GLES2/gl2.h"
 #include "third_party/skia/include/core/SkSurface.h"
@@ -37,9 +36,8 @@
 // This class is used to give an integer name (ResourceId) to a gpu or software
 // resource (shipped as a TransferableResource), in order to use that name in
 // DrawQuads and give the resource to the viz display compositor. When the
-// resource is removed from the ClientResourceProvider, the
-// SingleReleaseCallback will be called once the resource is no longer in use by
-// the display compositor.
+// resource is removed from the ClientResourceProvider, the ReleaseCallback will
+// be called once the resource is no longer in use by the display compositor.
 //
 // This class is not thread-safe and can only be called from the thread it was
 // created on (in practice, the impl thread).
@@ -77,11 +75,11 @@
 
   // Receives a resource from an external client that can be used in compositor
   // frames, via the returned ResourceId.
-  ResourceId ImportResource(const TransferableResource&,
-                            std::unique_ptr<SingleReleaseCallback>);
+  ResourceId ImportResource(const TransferableResource& resource,
+                            ReleaseCallback release_callback);
   // Removes an imported resource, which will call the ReleaseCallback given
   // originally, once the resource is no longer in use by any compositor frame.
-  void RemoveImportedResource(ResourceId);
+  void RemoveImportedResource(ResourceId resource_id);
 
   // Call this to indicate that the connection to the parent is lost and
   // resources previously exported will not be able to be returned. If |lose| is
@@ -95,7 +93,7 @@
   // RemoveImportedResource().
   void ReleaseAllExportedResources(bool lose);
 
-  // Immediately runs the SingleReleaseCallback for all resources that have been
+  // Immediately runs the ReleaseCallback for all resources that have been
   // previously imported and removed, but not released yet. There should not be
   // any imported resources yet when this is called, as they can be removed
   // first via RemoveImportedResource(), and potentially avoid being lost.
diff --git a/components/viz/client/client_resource_provider_unittest.cc b/components/viz/client/client_resource_provider_unittest.cc
index 220a7a5..0d7f2fa 100644
--- a/components/viz/client/client_resource_provider_unittest.cc
+++ b/components/viz/client/client_resource_provider_unittest.cc
@@ -10,8 +10,8 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/test/gtest_util.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/resources/returned_resource.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "components/viz/test/test_context_provider.h"
 #include "gpu/command_buffer/common/shared_image_usage.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -96,8 +96,8 @@
   MockReleaseCallback release;
   TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
   ResourceId id = provider().ImportResource(
-      tran, SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran, base::BindOnce(&MockReleaseCallback::Released,
+                           base::Unretained(&release)));
   // The local id is different.
   EXPECT_NE(id, tran.id);
 
@@ -112,8 +112,8 @@
   MockReleaseCallback release;
   TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
   ResourceId id = provider().ImportResource(
-      tran, SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran, base::BindOnce(&MockReleaseCallback::Released,
+                           base::Unretained(&release)));
 
   // Export the resource.
   std::vector<ResourceId> to_send = {id};
@@ -157,10 +157,8 @@
 TEST_P(ClientResourceProviderTest, TransferableResourceSendTwoToParent) {
   TransferableResource tran[] = {MakeTransferableResource(use_gpu(), 'a', 15),
                                  MakeTransferableResource(use_gpu(), 'b', 16)};
-  ResourceId id1 = provider().ImportResource(
-      tran[0], SingleReleaseCallback::Create(base::DoNothing()));
-  ResourceId id2 = provider().ImportResource(
-      tran[1], SingleReleaseCallback::Create(base::DoNothing()));
+  ResourceId id1 = provider().ImportResource(tran[0], base::DoNothing());
+  ResourceId id2 = provider().ImportResource(tran[1], base::DoNothing());
 
   // Export the resource.
   std::vector<ResourceId> to_send = {id1, id2};
@@ -193,8 +191,7 @@
 
 TEST_P(ClientResourceProviderTest, TransferableResourceSendToParentTwoTimes) {
   TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
-  ResourceId id = provider().ImportResource(
-      tran, SingleReleaseCallback::Create(base::DoNothing()));
+  ResourceId id = provider().ImportResource(tran, base::DoNothing());
 
   // Export the resource.
   std::vector<ResourceId> to_send = {id};
@@ -228,8 +225,8 @@
   MockReleaseCallback release;
   TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
   ResourceId id = provider().ImportResource(
-      tran, SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran, base::BindOnce(&MockReleaseCallback::Released,
+                           base::Unretained(&release)));
 
   // Export the resource.
   std::vector<ResourceId> to_send = {id};
@@ -257,9 +254,8 @@
   for (int i = 0; i < 5; ++i) {
     data[i].tran = MakeTransferableResource(use_gpu(), 'a', 15);
     data[i].id = provider().ImportResource(
-        data[i].tran,
-        SingleReleaseCallback::Create(base::BindOnce(
-            &MockReleaseCallback::Released, base::Unretained(&release))));
+        data[i].tran, base::BindOnce(&MockReleaseCallback::Released,
+                                     base::Unretained(&release)));
   }
   std::sort(std::begin(data), std::end(data),
             [](const Data& a, const Data& b) { return a.id < b.id; });
@@ -305,8 +301,8 @@
   MockReleaseCallback release;
   TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
   ResourceId id = provider().ImportResource(
-      tran, SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran, base::BindOnce(&MockReleaseCallback::Released,
+                           base::Unretained(&release)));
 
   // Export the resource.
   std::vector<ResourceId> to_send = {id};
@@ -337,8 +333,8 @@
   MockReleaseCallback release;
   TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
   ResourceId id = provider().ImportResource(
-      tran, SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran, base::BindOnce(&MockReleaseCallback::Released,
+                           base::Unretained(&release)));
 
   // Export the resource once.
   std::vector<ResourceId> to_send = {id};
@@ -385,8 +381,8 @@
   MockReleaseCallback release;
   TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
   ResourceId id = provider().ImportResource(
-      tran, SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran, base::BindOnce(&MockReleaseCallback::Released,
+                           base::Unretained(&release)));
 
   // Export the resource once.
   std::vector<ResourceId> to_send = {id};
@@ -420,8 +416,8 @@
   MockReleaseCallback release;
   TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
   ResourceId id = provider().ImportResource(
-      tran, SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran, base::BindOnce(&MockReleaseCallback::Released,
+                           base::Unretained(&release)));
 
   // Export the resource once.
   std::vector<ResourceId> to_send = {id};
@@ -464,8 +460,8 @@
   MockReleaseCallback release;
   TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
   ResourceId id = provider().ImportResource(
-      tran, SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran, base::BindOnce(&MockReleaseCallback::Released,
+                           base::Unretained(&release)));
 
   // Export the resource once.
   std::vector<ResourceId> to_send = {id};
@@ -523,8 +519,8 @@
                                            sync_token, size,
                                            false /* is_overlay_candidate */);
   ResourceId resource = provider().ImportResource(
-      tran, SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran, base::BindOnce(&MockReleaseCallback::Released,
+                           base::Unretained(&release)));
 
   EXPECT_TRUE(tran.mailbox_holder.sync_token.HasData());
   // All the logic below assumes that the sync token releases are all positive.
@@ -568,8 +564,8 @@
   MockReleaseCallback release;
   TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
   ResourceId resource = provider().ImportResource(
-      tran, SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran, base::BindOnce(&MockReleaseCallback::Released,
+                           base::Unretained(&release)));
 
   // Transfer the resource to the parent.
   std::vector<TransferableResource> list;
@@ -591,8 +587,8 @@
   MockReleaseCallback release;
   TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
   ResourceId resource = provider().ImportResource(
-      tran, SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran, base::BindOnce(&MockReleaseCallback::Released,
+                           base::Unretained(&release)));
 
   // Transfer the resource to the parent.
   std::vector<TransferableResource> list;
@@ -612,8 +608,8 @@
   MockReleaseCallback release;
   TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
   ResourceId resource = provider().ImportResource(
-      tran, SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran, base::BindOnce(&MockReleaseCallback::Released,
+                           base::Unretained(&release)));
 
   // Transfer the resource to the parent.
   std::vector<TransferableResource> list;
@@ -637,8 +633,8 @@
   MockReleaseCallback release;
   TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 15);
   ResourceId resource = provider().ImportResource(
-      tran, SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran, base::BindOnce(&MockReleaseCallback::Released,
+                           base::Unretained(&release)));
 
   // Transfer the resource to the parent.
   std::vector<TransferableResource> list;
@@ -666,9 +662,8 @@
   for (int i = 0; i < 5; ++i) {
     TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 1 + i);
     resources[i] = provider().ImportResource(
-        tran, SingleReleaseCallback::Create(
-                  base::BindOnce(&MockReleaseCallback::ReleasedWithId,
-                                 base::Unretained(&release), ResourceId(i))));
+        tran, base::BindOnce(&MockReleaseCallback::ReleasedWithId,
+                             base::Unretained(&release), ResourceId(i)));
   }
 
   // Transfer some resources to the parent, but not in the sorted order.
@@ -713,9 +708,8 @@
   for (int i = 0; i < 5; ++i) {
     TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 1 + i);
     resources[i] = provider().ImportResource(
-        tran, SingleReleaseCallback::Create(
-                  base::BindOnce(&MockReleaseCallback::ReleasedWithId,
-                                 base::Unretained(&release), ResourceId(i))));
+        tran, base::BindOnce(&MockReleaseCallback::ReleasedWithId,
+                             base::Unretained(&release), ResourceId(i)));
   }
 
   // Transfer some resources to the parent, but not in the sorted order.
@@ -761,9 +755,8 @@
   for (int i = 0; i < 5; ++i) {
     TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 1 + i);
     resources[i] = provider().ImportResource(
-        tran, SingleReleaseCallback::Create(
-                  base::BindOnce(&MockReleaseCallback::ReleasedWithId,
-                                 base::Unretained(&release), ResourceId(i))));
+        tran, base::BindOnce(&MockReleaseCallback::ReleasedWithId,
+                             base::Unretained(&release), ResourceId(i)));
   }
 
   // Transfer a resource to the parent, do it twice.
@@ -806,9 +799,8 @@
   for (int i = 0; i < 5; ++i) {
     TransferableResource tran = MakeTransferableResource(use_gpu(), 'a', 1 + i);
     resources[i] = provider().ImportResource(
-        tran, SingleReleaseCallback::Create(
-                  base::BindOnce(&MockReleaseCallback::ReleasedWithId,
-                                 base::Unretained(&release), ResourceId(i))));
+        tran, base::BindOnce(&MockReleaseCallback::ReleasedWithId,
+                             base::Unretained(&release), ResourceId(i)));
   }
 
   // Transfer a resource to the parent, do it twice.
diff --git a/components/viz/common/BUILD.gn b/components/viz/common/BUILD.gn
index a424619..d5a6292 100644
--- a/components/viz/common/BUILD.gn
+++ b/components/viz/common/BUILD.gn
@@ -248,8 +248,6 @@
     "resources/returned_resource.h",
     "resources/shared_bitmap.cc",
     "resources/shared_bitmap.h",
-    "resources/single_release_callback.cc",
-    "resources/single_release_callback.h",
     "resources/transferable_resource.cc",
     "resources/transferable_resource.h",
     "skia_helper.cc",
diff --git a/components/viz/common/frame_sinks/copy_output_request.h b/components/viz/common/frame_sinks/copy_output_request.h
index a62fca6..4997431 100644
--- a/components/viz/common/frame_sinks/copy_output_request.h
+++ b/components/viz/common/frame_sinks/copy_output_request.h
@@ -12,7 +12,6 @@
 #include "base/sequenced_task_runner.h"
 #include "base/unguessable_token.h"
 #include "components/viz/common/frame_sinks/copy_output_result.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "components/viz/common/viz_common_export.h"
 #include "gpu/command_buffer/common/mailbox.h"
 #include "gpu/command_buffer/common/sync_token.h"
diff --git a/components/viz/common/frame_sinks/copy_output_result.cc b/components/viz/common/frame_sinks/copy_output_result.cc
index 93149fc..2910ed82 100644
--- a/components/viz/common/frame_sinks/copy_output_result.cc
+++ b/components/viz/common/frame_sinks/copy_output_result.cc
@@ -64,9 +64,8 @@
   return nullptr;
 }
 
-std::unique_ptr<SingleReleaseCallback>
-CopyOutputResult::TakeTextureOwnership() {
-  return nullptr;
+ReleaseCallback CopyOutputResult::TakeTextureOwnership() {
+  return ReleaseCallback();
 }
 
 bool CopyOutputResult::ReadI420Planes(uint8_t* y_out,
@@ -177,7 +176,7 @@
     const gpu::Mailbox& mailbox,
     const gpu::SyncToken& sync_token,
     const gfx::ColorSpace& color_space,
-    std::unique_ptr<SingleReleaseCallback> release_callback)
+    ReleaseCallback release_callback)
     : CopyOutputResult(Format::RGBA_TEXTURE, rect, false),
       texture_result_(mailbox, sync_token, color_space),
       release_callback_(std::move(release_callback)) {
@@ -189,7 +188,7 @@
 
 CopyOutputTextureResult::~CopyOutputTextureResult() {
   if (release_callback_)
-    release_callback_->Run(gpu::SyncToken(), false);
+    std::move(release_callback_).Run(gpu::SyncToken(), false);
 }
 
 const CopyOutputResult::TextureResult*
@@ -197,8 +196,7 @@
   return &texture_result_;
 }
 
-std::unique_ptr<SingleReleaseCallback>
-CopyOutputTextureResult::TakeTextureOwnership() {
+ReleaseCallback CopyOutputTextureResult::TakeTextureOwnership() {
   texture_result_.mailbox = gpu::Mailbox();
   texture_result_.sync_token = gpu::SyncToken();
   texture_result_.color_space = gfx::ColorSpace();
diff --git a/components/viz/common/frame_sinks/copy_output_result.h b/components/viz/common/frame_sinks/copy_output_result.h
index 38c77b4..a4940f4b 100644
--- a/components/viz/common/frame_sinks/copy_output_result.h
+++ b/components/viz/common/frame_sinks/copy_output_result.h
@@ -9,7 +9,7 @@
 #include <utility>
 
 #include "base/threading/thread_checker.h"
-#include "components/viz/common/resources/single_release_callback.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/viz_common_export.h"
 #include "gpu/command_buffer/common/mailbox.h"
 #include "gpu/command_buffer/common/sync_token.h"
@@ -91,7 +91,7 @@
         : mailbox(mailbox), sync_token(sync_token), color_space(color_space) {}
   };
   virtual const TextureResult* GetTextureResult() const;
-  virtual std::unique_ptr<SingleReleaseCallback> TakeTextureOwnership();
+  virtual ReleaseCallback TakeTextureOwnership();
 
   // Copies the image planes of an I420_PLANES result to the caller-provided
   // memory. Returns true if successful, or false if: 1) this result is empty,
@@ -169,28 +169,27 @@
   DISALLOW_COPY_AND_ASSIGN(CopyOutputSkBitmapResult);
 };
 
-// Subclass of CopyOutputResult that holds a reference to a texture (via
-// a mailbox). The owner of the result must take ownership of the texture
-// if it wants to use it by calling TakeTextureOwnership(), and then call the
-// SingleReleaseCallback when the texture will no longer be used to release
-// ownership and allow the texture to be reused or destroyed. If ownership is
-// not claimed, it will be released when this class is destroyed.
+// Subclass of CopyOutputResult that holds a reference to a texture (via a
+// mailbox). The owner of the result must take ownership of the texture if it
+// wants to use it by calling TakeTextureOwnership(), and then call the
+// ReleaseCallback when the texture will no longer be used to release ownership
+// and allow the texture to be reused or destroyed. If ownership is not claimed,
+// it will be released when this class is destroyed.
 class VIZ_COMMON_EXPORT CopyOutputTextureResult : public CopyOutputResult {
  public:
-  CopyOutputTextureResult(
-      const gfx::Rect& rect,
-      const gpu::Mailbox& mailbox,
-      const gpu::SyncToken& sync_token,
-      const gfx::ColorSpace& color_space,
-      std::unique_ptr<SingleReleaseCallback> release_callback);
+  CopyOutputTextureResult(const gfx::Rect& rect,
+                          const gpu::Mailbox& mailbox,
+                          const gpu::SyncToken& sync_token,
+                          const gfx::ColorSpace& color_space,
+                          ReleaseCallback release_callback);
   ~CopyOutputTextureResult() override;
 
   const TextureResult* GetTextureResult() const override;
-  std::unique_ptr<SingleReleaseCallback> TakeTextureOwnership() override;
+  ReleaseCallback TakeTextureOwnership() override;
 
  private:
   TextureResult texture_result_;
-  std::unique_ptr<SingleReleaseCallback> release_callback_;
+  ReleaseCallback release_callback_;
 
   DISALLOW_COPY_AND_ASSIGN(CopyOutputTextureResult);
 };
diff --git a/components/viz/common/resources/single_release_callback.cc b/components/viz/common/resources/single_release_callback.cc
deleted file mode 100644
index acea576..0000000
--- a/components/viz/common/resources/single_release_callback.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/viz/common/resources/single_release_callback.h"
-
-#include "base/callback_helpers.h"
-#include "base/check.h"
-
-namespace viz {
-
-SingleReleaseCallback::SingleReleaseCallback(ReleaseCallback callback)
-    : callback_(std::move(callback)) {
-  DCHECK(!callback_.is_null())
-      << "Use a NULL SingleReleaseCallback for an empty callback.";
-}
-
-SingleReleaseCallback::~SingleReleaseCallback() = default;
-
-void SingleReleaseCallback::Run(const gpu::SyncToken& sync_token,
-                                bool is_lost) {
-  DCHECK(!callback_.is_null())
-      << "SingleReleaseCallback was run more than once.";
-  std::move(callback_).Run(sync_token, is_lost);
-}
-
-}  // namespace viz
diff --git a/components/viz/common/resources/single_release_callback.h b/components/viz/common/resources/single_release_callback.h
deleted file mode 100644
index fe28abb6..0000000
--- a/components/viz/common/resources/single_release_callback.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_VIZ_COMMON_RESOURCES_SINGLE_RELEASE_CALLBACK_H_
-#define COMPONENTS_VIZ_COMMON_RESOURCES_SINGLE_RELEASE_CALLBACK_H_
-
-#include <memory>
-
-#include "base/memory/ptr_util.h"
-#include "components/viz/common/resources/release_callback.h"
-#include "components/viz/common/viz_common_export.h"
-
-namespace viz {
-
-class VIZ_COMMON_EXPORT SingleReleaseCallback {
- public:
-  static std::unique_ptr<SingleReleaseCallback> Create(ReleaseCallback cb) {
-    return base::WrapUnique(new SingleReleaseCallback(std::move(cb)));
-  }
-
-  ~SingleReleaseCallback();
-
-  void Run(const gpu::SyncToken& sync_token, bool is_lost);
-
- private:
-  explicit SingleReleaseCallback(ReleaseCallback callback);
-
-  ReleaseCallback callback_;
-};
-
-}  // namespace viz
-
-#endif  // COMPONENTS_VIZ_COMMON_RESOURCES_SINGLE_RELEASE_CALLBACK_H_
diff --git a/components/viz/service/display/display_resource_provider_gl_unittest.cc b/components/viz/service/display/display_resource_provider_gl_unittest.cc
index 3b53c38..88748cc 100644
--- a/components/viz/service/display/display_resource_provider_gl_unittest.cc
+++ b/components/viz/service/display/display_resource_provider_gl_unittest.cc
@@ -19,9 +19,9 @@
 #include "base/memory/ref_counted.h"
 #include "build/build_config.h"
 #include "components/viz/client/client_resource_provider.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/resources/resource_format_utils.h"
 #include "components/viz/common/resources/returned_resource.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "components/viz/test/test_context_provider.h"
 #include "components/viz/test/test_gles2_interface.h"
 #include "gpu/GLES2/gl2extchromium.h"
@@ -171,8 +171,8 @@
   MockReleaseCallback release;
   TransferableResource tran = CreateResource(RGBA_8888);
   ResourceId id1 = child_resource_provider_->ImportResource(
-      tran, SingleReleaseCallback::Create(base::BindOnce(
-                &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran, base::BindOnce(&MockReleaseCallback::Released,
+                           base::Unretained(&release)));
 
   std::vector<ReturnedResource> returned_to_child;
   int child_id =
@@ -234,8 +234,8 @@
   TransferableResource tran1 = CreateResource(RGBA_8888);
   tran1.read_lock_fences_enabled = true;
   ResourceId id1 = child_resource_provider_->ImportResource(
-      tran1, SingleReleaseCallback::Create(base::BindOnce(
-                 &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran1, base::BindOnce(&MockReleaseCallback::Released,
+                            base::Unretained(&release)));
 
   std::vector<ReturnedResource> returned_to_child;
   int child_id =
@@ -286,14 +286,14 @@
   TransferableResource tran1 = CreateResource(RGBA_8888);
   tran1.read_lock_fences_enabled = true;
   ResourceId id1 = child_resource_provider_->ImportResource(
-      tran1, SingleReleaseCallback::Create(base::BindOnce(
-                 &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran1, base::BindOnce(&MockReleaseCallback::Released,
+                            base::Unretained(&release)));
 
   TransferableResource tran2 = CreateResource(RGBA_8888);
   tran2.read_lock_fences_enabled = false;
   ResourceId id2 = child_resource_provider_->ImportResource(
-      tran2, SingleReleaseCallback::Create(base::BindOnce(
-                 &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran2, base::BindOnce(&MockReleaseCallback::Released,
+                            base::Unretained(&release)));
 
   std::vector<ReturnedResource> returned_to_child;
   int child_id =
@@ -361,8 +361,8 @@
   for (auto& id : ids) {
     TransferableResource tran = CreateResource(RGBA_8888);
     id = child_resource_provider_->ImportResource(
-        tran, SingleReleaseCallback::Create(base::BindOnce(
-                  &MockReleaseCallback::Released, base::Unretained(&release))));
+        tran, base::BindOnce(&MockReleaseCallback::Released,
+                             base::Unretained(&release)));
   }
   std::vector<ResourceId> resource_ids_to_transfer(ids, ids + kTotalResources);
 
@@ -496,9 +496,8 @@
 
     MockReleaseCallback release;
     ResourceId resource_id = child_resource_provider->ImportResource(
-        resource,
-        SingleReleaseCallback::Create(base::BindOnce(
-            &MockReleaseCallback::Released, base::Unretained(&release))));
+        resource, base::BindOnce(&MockReleaseCallback::Released,
+                                 base::Unretained(&release)));
     EXPECT_NE(kInvalidResourceId, resource_id);
 
     testing::Mock::VerifyAndClearExpectations(child_gl);
@@ -610,8 +609,7 @@
   EXPECT_CALL(*child_gl, CreateAndConsumeTextureCHROMIUM(_)).Times(0);
 
   gpu::Mailbox gpu_mailbox = gpu::Mailbox::Generate();
-  std::unique_ptr<SingleReleaseCallback> callback =
-      SingleReleaseCallback::Create(base::DoNothing());
+  ReleaseCallback callback = base::DoNothing();
 
   constexpr gfx::Size size(64, 64);
   auto resource = TransferableResource::MakeGL(
diff --git a/components/viz/service/display/display_resource_provider_skia_unittest.cc b/components/viz/service/display/display_resource_provider_skia_unittest.cc
index fb55fe43..c1049bc 100644
--- a/components/viz/service/display/display_resource_provider_skia_unittest.cc
+++ b/components/viz/service/display/display_resource_provider_skia_unittest.cc
@@ -20,8 +20,8 @@
 #include "base/optional.h"
 #include "build/build_config.h"
 #include "components/viz/client/client_resource_provider.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/resources/returned_resource.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "components/viz/test/test_context_provider.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -130,8 +130,8 @@
   TransferableResource gl_resource = TransferableResource::MakeGL(
       mailbox, GL_LINEAR, GL_TEXTURE_2D, sync_token1, size,
       false /* is_overlay_candidate */);
-  ResourceId id1 = child_resource_provider_->ImportResource(
-      gl_resource, SingleReleaseCallback::Create(base::DoNothing()));
+  ResourceId id1 =
+      child_resource_provider_->ImportResource(gl_resource, base::DoNothing());
   std::vector<ReturnedResource> returned_to_child;
   int child_id =
       resource_provider_->CreateChild(GetReturnCallback(&returned_to_child));
@@ -210,8 +210,8 @@
   TransferableResource gl_resource = TransferableResource::MakeGL(
       mailbox, GL_LINEAR, GL_TEXTURE_2D, sync_token1, size,
       false /* is_overlay_candidate */);
-  ResourceId id1 = child_resource_provider_->ImportResource(
-      gl_resource, SingleReleaseCallback::Create(base::DoNothing()));
+  ResourceId id1 =
+      child_resource_provider_->ImportResource(gl_resource, base::DoNothing());
   std::vector<ReturnedResource> returned_to_child;
   int child_id =
       resource_provider_->CreateChild(GetReturnCallback(&returned_to_child));
@@ -314,8 +314,8 @@
   TransferableResource tran1 = CreateResource(RGBA_8888);
   tran1.read_lock_fences_enabled = true;
   ResourceId id1 = child_resource_provider_->ImportResource(
-      tran1, SingleReleaseCallback::Create(base::BindOnce(
-                 &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran1, base::BindOnce(&MockReleaseCallback::Released,
+                            base::Unretained(&release)));
 
   std::vector<ReturnedResource> returned_to_child;
   int child_id =
@@ -366,14 +366,14 @@
   TransferableResource tran1 = CreateResource(RGBA_8888);
   tran1.read_lock_fences_enabled = true;
   ResourceId id1 = child_resource_provider_->ImportResource(
-      tran1, SingleReleaseCallback::Create(base::BindOnce(
-                 &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran1, base::BindOnce(&MockReleaseCallback::Released,
+                            base::Unretained(&release)));
 
   TransferableResource tran2 = CreateResource(RGBA_8888);
   tran2.read_lock_fences_enabled = false;
   ResourceId id2 = child_resource_provider_->ImportResource(
-      tran2, SingleReleaseCallback::Create(base::BindOnce(
-                 &MockReleaseCallback::Released, base::Unretained(&release))));
+      tran2, base::BindOnce(&MockReleaseCallback::Released,
+                            base::Unretained(&release)));
 
   std::vector<ReturnedResource> returned_to_child;
   int child_id =
@@ -441,8 +441,8 @@
   for (auto& id : ids) {
     TransferableResource tran = CreateResource(RGBA_8888);
     id = child_resource_provider_->ImportResource(
-        tran, SingleReleaseCallback::Create(base::BindOnce(
-                  &MockReleaseCallback::Released, base::Unretained(&release))));
+        tran, base::BindOnce(&MockReleaseCallback::Released,
+                             base::Unretained(&release)));
   }
   std::vector<ResourceId> resource_ids_to_transfer(ids, ids + kTotalResources);
 
diff --git a/components/viz/service/display/display_resource_provider_software_unittest.cc b/components/viz/service/display/display_resource_provider_software_unittest.cc
index f5a784f..1dbb2dfe 100644
--- a/components/viz/service/display/display_resource_provider_software_unittest.cc
+++ b/components/viz/service/display/display_resource_provider_software_unittest.cc
@@ -22,10 +22,10 @@
 #include "build/build_config.h"
 #include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/resources/bitmap_allocation.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/resources/resource_format_utils.h"
 #include "components/viz/common/resources/returned_resource.h"
 #include "components/viz/common/resources/shared_bitmap.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "components/viz/service/display/shared_bitmap_manager.h"
 #include "components/viz/test/test_shared_bitmap_manager.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -108,9 +108,8 @@
 
   MockReleaseCallback release;
   ResourceId resource_id = child_resource_provider_->ImportResource(
-      resource,
-      SingleReleaseCallback::Create(base::BindOnce(
-          &MockReleaseCallback::Released, base::Unretained(&release))));
+      resource, base::BindOnce(&MockReleaseCallback::Released,
+                               base::Unretained(&release)));
   EXPECT_NE(kInvalidResourceId, resource_id);
 
   // Transfer resources to the parent.
diff --git a/components/viz/service/display/gl_renderer_unittest.cc b/components/viz/service/display/gl_renderer_unittest.cc
index 87ed25a..adc642e6 100644
--- a/components/viz/service/display/gl_renderer_unittest.cc
+++ b/components/viz/service/display/gl_renderer_unittest.cc
@@ -852,7 +852,7 @@
       gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, gpu::SyncToken(),
       gfx::Size(1025, 1025), true);
   ResourceId client_resource_id = child_resource_provider->ImportResource(
-      transfer_resource, SingleReleaseCallback::Create(base::DoNothing()));
+      transfer_resource, base::DoNothing());
 
   std::unordered_map<ResourceId, ResourceId, ResourceIdHasher> resource_map =
       cc::SendResourceAndGetChildToParentMap(
@@ -914,7 +914,7 @@
       gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, gpu::SyncToken(),
       gfx::Size(1023, 1023), true);
   ResourceId client_resource_id = child_resource_provider->ImportResource(
-      transfer_resource, SingleReleaseCallback::Create(base::DoNothing()));
+      transfer_resource, base::DoNothing());
 
   std::unordered_map<ResourceId, ResourceId, ResourceIdHasher> resource_map =
       cc::SendResourceAndGetChildToParentMap(
@@ -973,7 +973,7 @@
         kTextureSize, true);
     transfer_resource.color_space = gfx::ColorSpace::CreateSCRGBLinear();
     ResourceId client_resource_id = child_resource_provider->ImportResource(
-        transfer_resource, SingleReleaseCallback::Create(base::DoNothing()));
+        transfer_resource, base::DoNothing());
 
     std::unordered_map<ResourceId, ResourceId, ResourceIdHasher> resource_map =
         cc::SendResourceAndGetChildToParentMap(
@@ -2145,8 +2145,8 @@
   auto transfer_resource = TransferableResource::MakeGL(
       gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, gpu::SyncToken(),
       child_rect.size(), false /* is_overlay_candidate */);
-  ResourceId mask = child_resource_provider_->ImportResource(
-      transfer_resource, SingleReleaseCallback::Create(base::DoNothing()));
+  ResourceId mask = child_resource_provider_->ImportResource(transfer_resource,
+                                                             base::DoNothing());
 
   // Return the mapped resource id.
   std::unordered_map<ResourceId, ResourceId, ResourceIdHasher> resource_map =
@@ -2710,8 +2710,7 @@
   auto transfer_resource = TransferableResource::MakeGL(
       gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, gpu::SyncToken(),
       gfx::Size(256, 256), true);
-  auto release_callback =
-      SingleReleaseCallback::Create(base::BindOnce(&MailboxReleased));
+  auto release_callback = base::BindOnce(&MailboxReleased);
   ResourceId resource_id = child_resource_provider->ImportResource(
       transfer_resource, std::move(release_callback));
 
@@ -2919,8 +2918,7 @@
   auto transfer_resource = TransferableResource::MakeGL(
       gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, sync_token,
       gfx::Size(256, 256), true);
-  auto release_callback =
-      SingleReleaseCallback::Create(base::BindOnce(&MailboxReleased));
+  auto release_callback = base::BindOnce(&MailboxReleased);
   ResourceId resource_id = child_resource_provider->ImportResource(
       transfer_resource, std::move(release_callback));
 
@@ -3697,8 +3695,7 @@
   auto transfer_resource = TransferableResource::MakeGL(
       gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, gpu::SyncToken(),
       gfx::Size(256, 256), true);
-  auto release_callback =
-      SingleReleaseCallback::Create(base::BindOnce(&MailboxReleased));
+  auto release_callback = base::BindOnce(&MailboxReleased);
   ResourceId resource_id = child_resource_provider->ImportResource(
       transfer_resource, std::move(release_callback));
 
@@ -5107,7 +5104,7 @@
         gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, gpu::SyncToken(),
         gfx::Size(256, 256), true);
     ResourceId client_resource_id = child_resource_provider_->ImportResource(
-        transfer_resource, SingleReleaseCallback::Create(base::DoNothing()));
+        transfer_resource, base::DoNothing());
 
     std::unordered_map<ResourceId, ResourceId, ResourceIdHasher> resource_map =
         cc::SendResourceAndGetChildToParentMap(
diff --git a/components/viz/service/display/overlay_ca_unittest.cc b/components/viz/service/display/overlay_ca_unittest.cc
index 82fd395..da4de79 100644
--- a/components/viz/service/display/overlay_ca_unittest.cc
+++ b/components/viz/service/display/overlay_ca_unittest.cc
@@ -115,11 +115,9 @@
   auto resource = TransferableResource::MakeGL(
       gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, gpu::SyncToken(),
       size, is_overlay_candidate);
-  auto release_callback = SingleReleaseCallback::Create(
-      base::BindRepeating([](const gpu::SyncToken&, bool) {}));
 
-  ResourceId resource_id = child_resource_provider->ImportResource(
-      resource, std::move(release_callback));
+  ResourceId resource_id =
+      child_resource_provider->ImportResource(resource, base::DoNothing());
 
   return resource_id;
 }
diff --git a/components/viz/service/display/overlay_dc_unittest.cc b/components/viz/service/display/overlay_dc_unittest.cc
index d2f776ef..9353ae4 100644
--- a/components/viz/service/display/overlay_dc_unittest.cc
+++ b/components/viz/service/display/overlay_dc_unittest.cc
@@ -122,11 +122,9 @@
   auto resource = TransferableResource::MakeGL(
       gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, gpu::SyncToken(),
       size, is_overlay_candidate);
-  auto release_callback = SingleReleaseCallback::Create(
-      base::BindRepeating([](const gpu::SyncToken&, bool) {}));
 
-  ResourceId resource_id = child_resource_provider->ImportResource(
-      resource, std::move(release_callback));
+  ResourceId resource_id =
+      child_resource_provider->ImportResource(resource, base::DoNothing());
 
   return resource_id;
 }
diff --git a/components/viz/service/display/overlay_unittest.cc b/components/viz/service/display/overlay_unittest.cc
index f42ceea..584e5ee 100644
--- a/components/viz/service/display/overlay_unittest.cc
+++ b/components/viz/service/display/overlay_unittest.cc
@@ -361,11 +361,9 @@
       gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, gpu::SyncToken(),
       size, is_overlay_candidate);
   resource.format = resource_format;
-  auto release_callback = SingleReleaseCallback::Create(
-      base::BindRepeating([](const gpu::SyncToken&, bool) {}));
 
-  ResourceId resource_id = child_resource_provider->ImportResource(
-      resource, std::move(release_callback));
+  ResourceId resource_id =
+      child_resource_provider->ImportResource(resource, base::DoNothing());
 
   return resource_id;
 }
diff --git a/components/viz/service/display/renderer_perftest.cc b/components/viz/service/display/renderer_perftest.cc
index e497ac0..63c7620 100644
--- a/components/viz/service/display/renderer_perftest.cc
+++ b/components/viz/service/display/renderer_perftest.cc
@@ -190,8 +190,8 @@
       false /* is_overlay_candidate */);
   gl_resource.format = RGBA_8888;
   gl_resource.color_space = gfx::ColorSpace();
-  auto release_callback = SingleReleaseCallback::Create(base::BindOnce(
-      &DeleteSharedImage, std::move(child_context_provider), mailbox));
+  auto release_callback = base::BindOnce(
+      &DeleteSharedImage, std::move(child_context_provider), mailbox);
   gl_resource.id = child_resource_provider->ImportResource(
       gl_resource, std::move(release_callback));
   return gl_resource;
diff --git a/components/viz/service/display/renderer_pixeltest.cc b/components/viz/service/display/renderer_pixeltest.cc
index 80769be..4296ce7e 100644
--- a/components/viz/service/display/renderer_pixeltest.cc
+++ b/components/viz/service/display/renderer_pixeltest.cc
@@ -114,8 +114,8 @@
       false /* is_overlay_candidate */);
   gl_resource.format = format;
   gl_resource.color_space = std::move(color_space);
-  auto release_callback = SingleReleaseCallback::Create(
-      base::BindOnce(&DeleteSharedImage, std::move(context_provider), mailbox));
+  auto release_callback =
+      base::BindOnce(&DeleteSharedImage, std::move(context_provider), mailbox);
   return resource_provider->ImportResource(gl_resource,
                                            std::move(release_callback));
 }
@@ -264,7 +264,7 @@
     resource = child_resource_provider->ImportResource(
         TransferableResource::MakeSoftware(shared_bitmap_id, rect.size(),
                                            RGBA_8888),
-        SingleReleaseCallback::Create(base::DoNothing()));
+        base::DoNothing());
 
     auto span = mapping.GetMemoryAsSpan<uint32_t>(pixels.size());
     std::copy(pixels.begin(), pixels.end(), span.begin());
@@ -325,7 +325,7 @@
     resource = child_resource_provider->ImportResource(
         TransferableResource::MakeSoftware(shared_bitmap_id, rect.size(),
                                            RGBA_8888),
-        SingleReleaseCallback::Create(base::DoNothing()));
+        base::DoNothing());
 
     auto span = mapping.GetMemoryAsSpan<uint32_t>(pixels.size());
     std::copy(pixels.begin(), pixels.end(), span.begin());
@@ -407,22 +407,18 @@
 
   ResourceId resource_y = child_resource_provider->ImportResource(
       resources.resources[media::VideoFrame::kYPlane],
-      SingleReleaseCallback::Create(
-          std::move(resources.release_callbacks[media::VideoFrame::kYPlane])));
+      std::move(resources.release_callbacks[media::VideoFrame::kYPlane]));
   ResourceId resource_u = child_resource_provider->ImportResource(
       resources.resources[media::VideoFrame::kUPlane],
-      SingleReleaseCallback::Create(
-          std::move(resources.release_callbacks[media::VideoFrame::kUPlane])));
+      std::move(resources.release_callbacks[media::VideoFrame::kUPlane]));
   ResourceId resource_v = child_resource_provider->ImportResource(
       resources.resources[media::VideoFrame::kVPlane],
-      SingleReleaseCallback::Create(
-          std::move(resources.release_callbacks[media::VideoFrame::kVPlane])));
+      std::move(resources.release_callbacks[media::VideoFrame::kVPlane]));
   ResourceId resource_a = kInvalidResourceId;
   if (with_alpha) {
     resource_a = child_resource_provider->ImportResource(
         resources.resources[media::VideoFrame::kAPlane],
-        SingleReleaseCallback::Create(std::move(
-            resources.release_callbacks[media::VideoFrame::kAPlane])));
+        std::move(resources.release_callbacks[media::VideoFrame::kAPlane]));
   }
 
   std::vector<ResourceId> resource_ids_to_transfer;
@@ -517,8 +513,7 @@
   EXPECT_EQ(1u, resources.release_callbacks.size());
 
   ResourceId resource_y = child_resource_provider->ImportResource(
-      resources.resources[0],
-      SingleReleaseCallback::Create(std::move(resources.release_callbacks[0])));
+      resources.resources[0], std::move(resources.release_callbacks[0]));
 
   // Transfer resources to the parent, and get the resource map.
   std::unordered_map<ResourceId, ResourceId, ResourceIdHasher> resource_map =
diff --git a/components/viz/service/display/skia_readback_pixeltest.cc b/components/viz/service/display/skia_readback_pixeltest.cc
index 69e31e3..89daaab 100644
--- a/components/viz/service/display/skia_readback_pixeltest.cc
+++ b/components/viz/service/display/skia_readback_pixeltest.cc
@@ -114,8 +114,8 @@
         mailbox, GL_LINEAR, GL_TEXTURE_2D, sync_token, size,
         /*is_overlay_candidate=*/false);
     gl_resource.format = format;
-    auto release_callback = SingleReleaseCallback::Create(
-        base::BindOnce(&DeleteSharedImage, child_context_provider_, mailbox));
+    auto release_callback =
+        base::BindOnce(&DeleteSharedImage, child_context_provider_, mailbox);
     return child_resource_provider_->ImportResource(
         gl_resource, std::move(release_callback));
   }
diff --git a/components/viz/service/display/software_renderer_unittest.cc b/components/viz/service/display/software_renderer_unittest.cc
index 3b173791..750b922 100644
--- a/components/viz/service/display/software_renderer_unittest.cc
+++ b/components/viz/service/display/software_renderer_unittest.cc
@@ -94,7 +94,7 @@
     // Makes a resource id that refers to the registered SharedBitmapId.
     return child_resource_provider_->ImportResource(
         TransferableResource::MakeSoftware(shared_bitmap_id, size, RGBA_8888),
-        SingleReleaseCallback::Create(base::DoNothing()));
+        base::DoNothing());
   }
 
   std::unique_ptr<SkBitmap> DrawAndCopyOutput(AggregatedRenderPassList* list,
diff --git a/components/viz/service/display/texture_deleter.cc b/components/viz/service/display/texture_deleter.cc
index 5a5dead..a0c58b3 100644
--- a/components/viz/service/display/texture_deleter.cc
+++ b/components/viz/service/display/texture_deleter.cc
@@ -8,11 +8,11 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/bind_post_task.h"
 #include "base/location.h"
 #include "base/memory/weak_ptr.h"
 #include "base/single_thread_task_runner.h"
 #include "components/viz/common/gpu/context_provider.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "gpu/command_buffer/client/shared_image_interface.h"
 #include "gpu/command_buffer/common/mailbox.h"
 #include "gpu/command_buffer/common/sync_token.h"
@@ -28,35 +28,23 @@
                                                                mailbox);
 }
 
-static void PostTaskFromMainToImplThread(
-    scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
-    ReleaseCallback run_impl_callback,
-    const gpu::SyncToken& sync_token,
-    bool is_lost) {
-  // This posts the task to RunDeleteTextureOnImplThread().
-  impl_task_runner->PostTask(
-      FROM_HERE,
-      base::BindOnce(std::move(run_impl_callback), sync_token, is_lost));
-}
-
 TextureDeleter::TextureDeleter(
     scoped_refptr<base::SingleThreadTaskRunner> task_runner)
     : impl_task_runner_(std::move(task_runner)) {}
 
 TextureDeleter::~TextureDeleter() {
-  for (size_t i = 0; i < impl_callbacks_.size(); ++i)
-    impl_callbacks_.at(i)->Run(gpu::SyncToken(), true);
+  for (auto& callback : impl_callbacks_)
+    std::move(*callback).Run(gpu::SyncToken(), /*is_lost=*/true);
 }
 
-std::unique_ptr<SingleReleaseCallback> TextureDeleter::GetReleaseCallback(
+ReleaseCallback TextureDeleter::GetReleaseCallback(
     scoped_refptr<ContextProvider> context_provider,
     const gpu::Mailbox& mailbox) {
   // This callback owns the |context_provider|. It must be destroyed on the impl
   // thread. Upon destruction of this class, the callback must immediately be
   // destroyed.
-  std::unique_ptr<SingleReleaseCallback> impl_callback =
-      SingleReleaseCallback::Create(base::BindOnce(
-          &DeleteTextureOnImplThread, std::move(context_provider), mailbox));
+  auto impl_callback = std::make_unique<ReleaseCallback>(base::BindOnce(
+      &DeleteTextureOnImplThread, std::move(context_provider), mailbox));
 
   impl_callbacks_.push_back(std::move(impl_callback));
 
@@ -68,26 +56,25 @@
 
   // Provide a callback for the main thread that posts back to the impl
   // thread.
-  std::unique_ptr<SingleReleaseCallback> main_callback;
+  ReleaseCallback main_callback;
   if (impl_task_runner_) {
-    main_callback = SingleReleaseCallback::Create(
-        base::BindOnce(&PostTaskFromMainToImplThread, impl_task_runner_,
-                       std::move(run_impl_callback)));
+    main_callback =
+        base::BindPostTask(impl_task_runner_, std::move(run_impl_callback));
   } else {
-    main_callback = SingleReleaseCallback::Create(std::move(run_impl_callback));
+    main_callback = std::move(run_impl_callback);
   }
 
   return main_callback;
 }
 
 void TextureDeleter::RunDeleteTextureOnImplThread(
-    SingleReleaseCallback* impl_callback,
+    ReleaseCallback* impl_callback,
     const gpu::SyncToken& sync_token,
     bool is_lost) {
   for (size_t i = 0; i < impl_callbacks_.size(); ++i) {
     if (impl_callbacks_[i].get() == impl_callback) {
       // Run the callback, then destroy it here on the impl thread.
-      impl_callbacks_[i]->Run(sync_token, is_lost);
+      std::move(*impl_callbacks_[i]).Run(sync_token, is_lost);
       impl_callbacks_.erase(impl_callbacks_.begin() + i);
       return;
     }
diff --git a/components/viz/service/display/texture_deleter.h b/components/viz/service/display/texture_deleter.h
index da6c0d3..dfec16bd 100644
--- a/components/viz/service/display/texture_deleter.h
+++ b/components/viz/service/display/texture_deleter.h
@@ -9,6 +9,7 @@
 #include <vector>
 
 #include "base/memory/weak_ptr.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/service/viz_service_export.h"
 
 namespace base {
@@ -22,7 +23,6 @@
 
 namespace viz {
 class ContextProvider;
-class SingleReleaseCallback;
 
 class VIZ_SERVICE_EXPORT TextureDeleter {
  public:
@@ -39,19 +39,19 @@
   // ReleaseCallback will become a no-op and the texture will be deleted
   // immediately on the impl thread, along with dropping the reference to the
   // ContextProvider.
-  std::unique_ptr<SingleReleaseCallback> GetReleaseCallback(
+  ReleaseCallback GetReleaseCallback(
       scoped_refptr<ContextProvider> context_provider,
       const gpu::Mailbox& mailbox);
 
  private:
   // Runs the |impl_callback| to delete the texture and removes the callback
   // from the |impl_callbacks_| list.
-  void RunDeleteTextureOnImplThread(SingleReleaseCallback* impl_callback,
+  void RunDeleteTextureOnImplThread(ReleaseCallback* impl_callback,
                                     const gpu::SyncToken& sync_token,
                                     bool is_lost);
 
   scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner_;
-  std::vector<std::unique_ptr<SingleReleaseCallback>> impl_callbacks_;
+  std::vector<std::unique_ptr<ReleaseCallback>> impl_callbacks_;
   base::WeakPtrFactory<TextureDeleter> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(TextureDeleter);
diff --git a/components/viz/service/display/texture_deleter_unittest.cc b/components/viz/service/display/texture_deleter_unittest.cc
index 01b62e2..9d6e03ca 100644
--- a/components/viz/service/display/texture_deleter_unittest.cc
+++ b/components/viz/service/display/texture_deleter_unittest.cc
@@ -6,7 +6,7 @@
 
 #include "base/single_thread_task_runner.h"
 #include "base/threading/thread_task_runner_handle.h"
-#include "components/viz/common/resources/single_release_callback.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/test/test_context_provider.h"
 #include "gpu/command_buffer/client/shared_image_interface.h"
 #include "gpu/command_buffer/common/shared_image_usage.h"
@@ -34,8 +34,7 @@
   EXPECT_TRUE(context_provider->HasOneRef());
   EXPECT_EQ(1u, sii->shared_image_count());
 
-  std::unique_ptr<SingleReleaseCallback> cb =
-      deleter->GetReleaseCallback(context_provider, mailbox);
+  ReleaseCallback cb = deleter->GetReleaseCallback(context_provider, mailbox);
   EXPECT_FALSE(context_provider->HasOneRef());
   EXPECT_EQ(1u, sii->shared_image_count());
 
@@ -47,7 +46,7 @@
 
   // Run the scoped release callback before destroying it, but it won't do
   // anything.
-  cb->Run(gpu::SyncToken(), false);
+  std::move(cb).Run(gpu::SyncToken(), false);
 }
 
 TEST(TextureDeleterTest, NullTaskRunner) {
@@ -67,12 +66,11 @@
   EXPECT_TRUE(context_provider->HasOneRef());
   EXPECT_EQ(1u, sii->shared_image_count());
 
-  std::unique_ptr<SingleReleaseCallback> cb =
-      deleter->GetReleaseCallback(context_provider, mailbox);
+  ReleaseCallback cb = deleter->GetReleaseCallback(context_provider, mailbox);
   EXPECT_FALSE(context_provider->HasOneRef());
   EXPECT_EQ(1u, sii->shared_image_count());
 
-  cb->Run(gpu::SyncToken(), false);
+  std::move(cb).Run(gpu::SyncToken(), false);
 
   // With no task runner the callback will immediately drops its ref on the
   // ContextProvider and delete the shared image.
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
index 7f27522..144d82d 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
+++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -1064,9 +1064,9 @@
         &SkiaOutputSurfaceImplOnGpu::DestroySharedImageOnImplThread,
         weak_ptr_factory_.GetWeakPtr(), std::move(representation),
         context_state_);
-    auto main_callback = SingleReleaseCallback::Create(base::BindOnce(
-        &PostTaskFromMainToImplThread, base::ThreadTaskRunnerHandle::Get(),
-        std::move(release_callback)));
+    auto main_callback = base::BindOnce(&PostTaskFromMainToImplThread,
+                                        base::ThreadTaskRunnerHandle::Get(),
+                                        std::move(release_callback));
     request->SendResult(std::make_unique<CopyOutputTextureResult>(
         geometry.result_bounds, mailbox, gpu::SyncToken(), color_space,
         std::move(main_callback)));
diff --git a/components/viz/service/surfaces/surface_saved_frame.cc b/components/viz/service/surfaces/surface_saved_frame.cc
index dbfa4a75..bf9584f 100644
--- a/components/viz/service/surfaces/surface_saved_frame.cc
+++ b/components/viz/service/surfaces/surface_saved_frame.cc
@@ -170,8 +170,7 @@
     ReleaseCallback release_callback) {
   frame_result_.emplace();
   frame_result_->root_result.mailbox = gpu::Mailbox::GenerateForSharedImage();
-  frame_result_->root_result.release_callback =
-      SingleReleaseCallback::Create(std::move(release_callback));
+  frame_result_->root_result.release_callback = std::move(release_callback);
   frame_result_->root_result.rect = gfx::Rect(kDefaultTextureSizeForTesting);
   frame_result_->root_result.target_transform.MakeIdentity();
   frame_result_->root_result.is_software = true;
@@ -192,7 +191,7 @@
 
 SurfaceSavedFrame::OutputCopyResult::~OutputCopyResult() {
   if (release_callback)
-    release_callback->Run(sync_token, /*is_lost=*/false);
+    std::move(release_callback).Run(sync_token, /*is_lost=*/false);
 }
 
 SurfaceSavedFrame::OutputCopyResult&
diff --git a/components/viz/service/surfaces/surface_saved_frame.h b/components/viz/service/surfaces/surface_saved_frame.h
index 0b21e84..e187f3cb 100644
--- a/components/viz/service/surfaces/surface_saved_frame.h
+++ b/components/viz/service/surfaces/surface_saved_frame.h
@@ -14,7 +14,7 @@
 #include "base/time/time.h"
 #include "components/viz/common/frame_sinks/copy_output_result.h"
 #include "components/viz/common/quads/compositor_frame_transition_directive.h"
-#include "components/viz/common/resources/single_release_callback.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/service/viz_service_export.h"
 
 namespace viz {
@@ -48,7 +48,7 @@
     bool is_software = false;
 
     // Release callback used to return a GPU texture.
-    std::unique_ptr<SingleReleaseCallback> release_callback;
+    ReleaseCallback release_callback;
   };
 
   struct FrameResult {
diff --git a/components/viz/service/transitions/surface_animation_manager.cc b/components/viz/service/transitions/surface_animation_manager.cc
index d90f8c12..ba0802c 100644
--- a/components/viz/service/transitions/surface_animation_manager.cc
+++ b/components/viz/service/transitions/surface_animation_manager.cc
@@ -468,9 +468,6 @@
     const gfx::Transform& transform = animation.src_transform().Apply();
     float opacity = animation.src_opacity();
 
-    // TODO(vmpstr): If we don't have a src_texture, we should append a solid
-    // color quad, but we need to plumb a safe opaque color here so we know what
-    // color to use. See crbug.com/1200646.
     if (src_texture.has_value()) {
       CreateAndAppendSrcTextureQuad(animation_pass, rect, transform, opacity,
                                     src_texture->resource.id);
@@ -543,9 +540,6 @@
       auto shared_it = shared_draw_data.find(pass_quad->render_pass_id);
       // If the quad is shared, then add it to the `shared_draw_data`.
       // Otherwise, add it to the copy pass directly.
-      // TODO(vmpstr): If we're removing an opaque render pass, then we need to
-      // replace it with a solid color quad. However, we need to plumb safe
-      // opaque color here first. See crbug.com/1200646.
       if (shared_it != shared_draw_data.end()) {
         shared_it->second.draw_quad = *pass_quad;
       } else {
diff --git a/components/viz/service/transitions/transferable_resource_tracker.cc b/components/viz/service/transitions/transferable_resource_tracker.cc
index 7cbb87c3..c7d90be 100644
--- a/components/viz/service/transitions/transferable_resource_tracker.cc
+++ b/components/viz/service/transitions/transferable_resource_tracker.cc
@@ -11,8 +11,8 @@
 #include <utility>
 
 #include "base/containers/contains.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/resources/resource_id.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "components/viz/common/resources/transferable_resource.h"
 #include "gpu/command_buffer/common/mailbox.h"
 #include "gpu/command_buffer/common/sync_token.h"
@@ -129,18 +129,19 @@
 TransferableResourceTracker::TransferableResourceHolder::
     TransferableResourceHolder(TransferableResourceHolder&& other) = default;
 TransferableResourceTracker::TransferableResourceHolder::
-    TransferableResourceHolder(
-        const TransferableResource& resource,
-        std::unique_ptr<SingleReleaseCallback> release_callback)
+    TransferableResourceHolder(const TransferableResource& resource,
+                               ReleaseCallback release_callback)
     : resource(resource),
       release_callback(std::move(release_callback)),
       ref_count(1u) {}
 
 TransferableResourceTracker::TransferableResourceHolder::
     ~TransferableResourceHolder() {
-  if (release_callback)
-    release_callback->Run(resource.mailbox_holder.sync_token,
-                          /*is_lost=*/false);
+  if (release_callback) {
+    std::move(release_callback)
+        .Run(resource.mailbox_holder.sync_token,
+             /*is_lost=*/false);
+  }
 }
 
 TransferableResourceTracker::TransferableResourceHolder&
diff --git a/components/viz/service/transitions/transferable_resource_tracker.h b/components/viz/service/transitions/transferable_resource_tracker.h
index 151b5bc..d6fd2aa 100644
--- a/components/viz/service/transitions/transferable_resource_tracker.h
+++ b/components/viz/service/transitions/transferable_resource_tracker.h
@@ -9,8 +9,8 @@
 #include <memory>
 #include <vector>
 
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/resources/resource_id.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "components/viz/common/resources/transferable_resource.h"
 #include "components/viz/service/surfaces/surface_saved_frame.h"
 #include "components/viz/service/viz_service_export.h"
@@ -95,15 +95,14 @@
   struct TransferableResourceHolder {
     TransferableResourceHolder();
     TransferableResourceHolder(TransferableResourceHolder&& other);
-    TransferableResourceHolder(
-        const TransferableResource& resource,
-        std::unique_ptr<SingleReleaseCallback> release_callback);
+    TransferableResourceHolder(const TransferableResource& resource,
+                               ReleaseCallback release_callback);
     ~TransferableResourceHolder();
 
     TransferableResourceHolder& operator=(TransferableResourceHolder&& other);
 
     TransferableResource resource;
-    std::unique_ptr<SingleReleaseCallback> release_callback;
+    ReleaseCallback release_callback;
     uint8_t ref_count = 0u;
   };
 
diff --git a/components/webdata_services/BUILD.gn b/components/webdata_services/BUILD.gn
index 9ca146b..63e2408 100644
--- a/components/webdata_services/BUILD.gn
+++ b/components/webdata_services/BUILD.gn
@@ -24,7 +24,15 @@
   ]
 
   if (!is_ios) {
-    deps += [ "//components/payments/content:utils" ]
+    sources += [
+      "web_data_service_wrapper_factory.cc",
+      "web_data_service_wrapper_factory.h",
+    ]
+    deps += [
+      "//components/keyed_service/content",
+      "//components/payments/content:utils",
+      "//content/public/browser",
+    ]
   }
 }
 
diff --git a/components/webdata_services/DEPS b/components/webdata_services/DEPS
index b83a086..ecdf718e 100644
--- a/components/webdata_services/DEPS
+++ b/components/webdata_services/DEPS
@@ -1,5 +1,6 @@
 include_rules = [
   "+components/autofill/core",
+  "+components/keyed_service/content",
   "+components/keyed_service/core",
   "+components/password_manager/core/browser/webdata",
   "+components/payments/content",
@@ -7,6 +8,7 @@
   "+components/signin/public/webdata",
   "+components/sync",
   "+components/webdata/common",
+  "+content/public/browser",
   "+sql",
   "+testing/gtest",
 ]
diff --git a/components/webdata_services/web_data_service_wrapper_factory.cc b/components/webdata_services/web_data_service_wrapper_factory.cc
new file mode 100644
index 0000000..4cc0967
--- /dev/null
+++ b/components/webdata_services/web_data_service_wrapper_factory.cc
@@ -0,0 +1,68 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/webdata_services/web_data_service_wrapper_factory.h"
+
+#include "components/keyed_service/content/browser_context_dependency_manager.h"
+#include "components/payments/content/payment_manifest_web_data_service.h"
+#include "components/webdata_services/web_data_service_wrapper.h"
+#include "content/public/browser/browser_context.h"
+
+namespace webdata_services {
+
+namespace {
+WebDataServiceWrapperFactory* g_instance = nullptr;
+}  // namespace
+
+// static
+WebDataServiceWrapper* WebDataServiceWrapperFactory::GetForBrowserContext(
+    content::BrowserContext* context,
+    ServiceAccessType access_type) {
+  DCHECK(context);
+  DCHECK(access_type != ServiceAccessType::IMPLICIT_ACCESS ||
+         !context->IsOffTheRecord());
+  return static_cast<WebDataServiceWrapper*>(
+      GetInstance()->GetServiceForBrowserContext(context, /*create=*/true));
+}
+
+// static
+WebDataServiceWrapper*
+WebDataServiceWrapperFactory::GetForBrowserContextIfExists(
+    content::BrowserContext* context,
+    ServiceAccessType access_type) {
+  DCHECK(context);
+  DCHECK(access_type != ServiceAccessType::IMPLICIT_ACCESS ||
+         !context->IsOffTheRecord());
+  return static_cast<WebDataServiceWrapper*>(
+      GetInstance()->GetServiceForBrowserContext(context, /*create=*/false));
+}
+
+// static
+scoped_refptr<payments::PaymentManifestWebDataService>
+WebDataServiceWrapperFactory::GetPaymentManifestWebDataServiceForBrowserContext(
+    content::BrowserContext* context,
+    ServiceAccessType access_type) {
+  WebDataServiceWrapper* wrapper = GetForBrowserContext(context, access_type);
+  return wrapper ? wrapper->GetPaymentManifestWebData() : nullptr;
+}
+
+// static
+WebDataServiceWrapperFactory* WebDataServiceWrapperFactory::GetInstance() {
+  DCHECK(g_instance);
+  return g_instance;
+}
+
+WebDataServiceWrapperFactory::WebDataServiceWrapperFactory()
+    : BrowserContextKeyedServiceFactory(
+          "WebDataService",
+          BrowserContextDependencyManager::GetInstance()) {
+  DCHECK(!g_instance);
+  g_instance = this;
+}
+
+WebDataServiceWrapperFactory::~WebDataServiceWrapperFactory() {
+  g_instance = nullptr;
+}
+
+}  // namespace webdata_services
diff --git a/components/webdata_services/web_data_service_wrapper_factory.h b/components/webdata_services/web_data_service_wrapper_factory.h
new file mode 100644
index 0000000..af4e12d
--- /dev/null
+++ b/components/webdata_services/web_data_service_wrapper_factory.h
@@ -0,0 +1,54 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_WEBDATA_SERVICES_WEB_DATA_SERVICE_WRAPPER_FACTORY_H_
+#define COMPONENTS_WEBDATA_SERVICES_WEB_DATA_SERVICE_WRAPPER_FACTORY_H_
+
+#include "base/memory/scoped_refptr.h"
+#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
+#include "components/keyed_service/core/service_access_type.h"
+
+namespace content {
+class BrowserContext;
+}  // namespace content
+
+namespace payments {
+class PaymentManifestWebDataService;
+}  // namespace payments
+
+class WebDataServiceWrapper;
+
+namespace webdata_services {
+
+// A factory that lazily returns a WebDataServiceWrapper implementation for a
+// given BrowserContext.
+class WebDataServiceWrapperFactory : public BrowserContextKeyedServiceFactory {
+ public:
+  WebDataServiceWrapperFactory(const WebDataServiceWrapperFactory&) = delete;
+  WebDataServiceWrapperFactory& operator=(const WebDataServiceWrapperFactory&) =
+      delete;
+
+  static WebDataServiceWrapper* GetForBrowserContext(
+      content::BrowserContext* context,
+      ServiceAccessType access_type);
+
+  static WebDataServiceWrapper* GetForBrowserContextIfExists(
+      content::BrowserContext* context,
+      ServiceAccessType access_type);
+
+  static scoped_refptr<payments::PaymentManifestWebDataService>
+  GetPaymentManifestWebDataServiceForBrowserContext(
+      content::BrowserContext* context,
+      ServiceAccessType access_type);
+
+  static WebDataServiceWrapperFactory* GetInstance();
+
+ protected:
+  WebDataServiceWrapperFactory();
+  ~WebDataServiceWrapperFactory() override;
+};
+
+}  // namespace webdata_services
+
+#endif  // COMPONENTS_WEBDATA_SERVICES_WEB_DATA_SERVICE_WRAPPER_FACTORY_H_
diff --git a/content/browser/accessibility/ax_platform_node_textrangeprovider_win_browsertest.cc b/content/browser/accessibility/ax_platform_node_textrangeprovider_win_browsertest.cc
index 1a2a907e..bc6f9fe 100644
--- a/content/browser/accessibility/ax_platform_node_textrangeprovider_win_browsertest.cc
+++ b/content/browser/accessibility/ax_platform_node_textrangeprovider_win_browsertest.cc
@@ -490,8 +490,8 @@
 // With a rich text field, the read-only attribute should be determined based on
 // the editable root node's editable state.
 IN_PROC_BROWSER_TEST_F(AXPlatformNodeTextRangeProviderWinBrowserTest,
-                       DISABLED_GetAttributeValueIsReadonlyRichTextField) {
-  LoadInitialAccessibilityTreeFromHtml(R"HTML(
+                       GetAttributeValueIsReadonlyRichTextField) {
+  LoadInitialAccessibilityTreeFromHtml(std::string(R"HTML(
       <!DOCTYPE html>
       <html>
         <style>
@@ -506,7 +506,7 @@
           class="myDiv"><p>3.14</p></div>
         </body>
       </html>
-  )HTML");
+  )HTML"));
 
   auto* text_field_node = FindNode(ax::mojom::Role::kTextField, "text_field");
   ASSERT_NE(nullptr, text_field_node);
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm
index f4114de..156866e 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -3542,7 +3542,7 @@
     }
   }
 
-  if (_owner->IsTextField()) {
+  if (_owner->GetBoolAttribute(ax::mojom::BoolAttribute::kEditableRoot)) {
     [ret addObjectsFromArray:@[
       NSAccessibilityInsertionPointLineNumberAttribute,
       NSAccessibilityNumberOfCharactersAttribute,
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
index ae7ac2af..86724ec 100644
--- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
+++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -997,7 +997,7 @@
 
 IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaMismatchedTableAttr) {
-  RunHtmlTest(FILE_PATH_LITERAL("aria-mismatched-table-attr.html"));
+  RunAriaTest(FILE_PATH_LITERAL("aria-mismatched-table-attr.html"));
 }
 
 IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaModal) {
@@ -1687,7 +1687,7 @@
 }
 
 IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
-                       DISABLED_AccessibilityContenteditablePlaintextWithRole) {
+                       AccessibilityContenteditablePlaintextWithRole) {
   RunHtmlTest(FILE_PATH_LITERAL("contenteditable-plaintext-with-role.html"));
 }
 
diff --git a/content/browser/android/synchronous_compositor_host.cc b/content/browser/android/synchronous_compositor_host.cc
index 7b0bfa6..cc113dd 100644
--- a/content/browser/android/synchronous_compositor_host.cc
+++ b/content/browser/android/synchronous_compositor_host.cc
@@ -31,9 +31,10 @@
 #include "gpu/ipc/client/gpu_channel_host.h"
 #include "ipc/ipc_sender.h"
 #include "mojo/public/cpp/bindings/self_owned_receiver.h"
-#include "third_party/skia/include/core/SkBitmap.h"
 #include "third_party/skia/include/core/SkCanvas.h"
+#include "third_party/skia/include/core/SkImage.h"
 #include "third_party/skia/include/core/SkImageInfo.h"
+#include "third_party/skia/include/core/SkPixmap.h"
 #include "third_party/skia/include/core/SkRect.h"
 #include "ui/events/blink/did_overscroll_params.h"
 #include "ui/gfx/skia_util.h"
@@ -356,7 +357,8 @@
   DISALLOW_COPY_AND_ASSIGN(SharedMemoryWithSize);
 };
 
-bool SynchronousCompositorHost::DemandDrawSw(SkCanvas* canvas) {
+bool SynchronousCompositorHost::DemandDrawSw(SkCanvas* canvas,
+                                             bool software_canvas) {
   if (use_in_process_zero_copy_software_draw_)
     return DemandDrawSwInProc(canvas);
 
@@ -404,19 +406,32 @@
   UpdateFrameMetaData(metadata_version, std::move(*metadata));
 
   SkBitmap bitmap;
-  if (!bitmap.installPixels(info, software_draw_shm_->shared_memory.memory(),
-                            stride)) {
-    return false;
-  }
+  SkPixmap pixmap(info, software_draw_shm_->shared_memory.memory(), stride);
 
+  bool pixels_released = false;
   {
     TRACE_EVENT0("browser", "DrawBitmap");
     canvas->save();
     canvas->resetMatrix();
-    canvas->drawImage(bitmap.asImage(), 0, 0);
+    sk_sp<SkImage> image;
+    // Software canvas will draw immediately, so it's safe to avoid this copy.
+    if (software_canvas) {
+      auto mark_bool = [](const void* pixels, void* context) {
+        *static_cast<bool*>(context) = true;
+      };
+      image = SkImage::MakeFromRaster(pixmap, mark_bool, &pixels_released);
+    } else {
+      image = SkImage::MakeRasterCopy(pixmap);
+    }
+    canvas->drawImage(image, 0, 0);
     canvas->restore();
   }
 
+  if (software_canvas) {
+    // It could lead to UAF if this CHECK fails, hence it's a release CHECK.
+    CHECK(pixels_released);
+  }
+
   return true;
 }
 
diff --git a/content/browser/android/synchronous_compositor_host.h b/content/browser/android/synchronous_compositor_host.h
index a667c43..04d24558 100644
--- a/content/browser/android/synchronous_compositor_host.h
+++ b/content/browser/android/synchronous_compositor_host.h
@@ -55,7 +55,7 @@
       const gfx::Size& viewport_size,
       const gfx::Rect& viewport_rect_for_tile_priority,
       const gfx::Transform& transform_for_tile_priority) override;
-  bool DemandDrawSw(SkCanvas* canvas) override;
+  bool DemandDrawSw(SkCanvas* canvas, bool software_canvas) override;
   void ReturnResources(uint32_t layer_tree_frame_sink_id,
                        std::vector<viz::ReturnedResource> resources) override;
   void DidPresentCompositorFrames(viz::FrameTimingDetailsMap timing_details,
diff --git a/content/browser/cross_origin_opener_policy_browsertest.cc b/content/browser/cross_origin_opener_policy_browsertest.cc
index ced14a7..6b25385b 100644
--- a/content/browser/cross_origin_opener_policy_browsertest.cc
+++ b/content/browser/cross_origin_opener_policy_browsertest.cc
@@ -2955,6 +2955,28 @@
 }
 
 IN_PROC_BROWSER_TEST_F(UnrestrictedSharedArrayBufferOriginTrialBrowserTest,
+                       SupportForMeta) {
+  URLLoaderInterceptor interceptor(base::BindLambdaForTesting(
+      [&](URLLoaderInterceptor::RequestParams* params) {
+        DCHECK_EQ(params->url_request.url, OriginTrialURL());
+        URLLoaderInterceptor::WriteResponse(
+            "HTTP/1.1 200 OK\n"
+            "Content-type: text/html\n",
+            "<meta http-equiv=\"origin-trial\" content=\"" +
+                OriginTrialToken() + "\">",
+            params->client.get());
+        return true;
+      }));
+  EXPECT_TRUE(NavigateToURL(shell(), OriginTrialURL()));
+
+  EXPECT_EQ(false, EvalJs(current_frame_host(), "self.crossOriginIsolated"));
+  // TODO(https://crbug.com/1197529) Defining the origin trial in <meta> is not
+  // supported for this feature.
+  EXPECT_EQ(false,
+            EvalJs(current_frame_host(), "'SharedArrayBuffer' in globalThis"));
+}
+
+IN_PROC_BROWSER_TEST_F(UnrestrictedSharedArrayBufferOriginTrialBrowserTest,
                        TransferSharedArrayBuffer) {
   URLLoaderInterceptor interceptor(base::BindLambdaForTesting(
       [&](URLLoaderInterceptor::RequestParams* params) {
@@ -3009,6 +3031,66 @@
 #endif  // defined(OS_ANDROID)
 }
 
+// Enable the reverse OriginTrial via a <meta> tag. Then send a Webassembly's
+// SharedArrayBuffer toward the iframe.
+// TODO(https://crbug.com/1201589) This currently crash.
+#if !defined(OS_ANDROID) // The SAB reverse origin trial only work on Desktop.
+IN_PROC_BROWSER_TEST_F(UnrestrictedSharedArrayBufferOriginTrialBrowserTest,
+                       CrashForBug1201589) {
+  URLLoaderInterceptor interceptor(base::BindLambdaForTesting(
+      [&](URLLoaderInterceptor::RequestParams* params) {
+        DCHECK_EQ(params->url_request.url, OriginTrialURL());
+        URLLoaderInterceptor::WriteResponse(
+            "HTTP/1.1 200 OK\n"
+            "Content-type: text/html\n",
+            "<meta http-equiv=\"origin-trial\" content=\"" +
+                OriginTrialToken() + "\">",
+            params->client.get());
+        return true;
+      }));
+  EXPECT_TRUE(NavigateToURL(shell(), OriginTrialURL()));
+
+  EXPECT_TRUE(ExecJs(current_frame_host(),
+                     "g_iframe = document.createElement('iframe');"
+                     "g_iframe.src = location.href;"
+                     "document.body.appendChild(g_iframe);"));
+  WaitForLoadStop(web_contents());
+
+  RenderFrameHostImpl* main_document = current_frame_host();
+  RenderFrameHostImpl* sub_document =
+      current_frame_host()->child_at(0)->current_frame_host();
+
+  EXPECT_EQ(false, EvalJs(main_document, "self.crossOriginIsolated"));
+  EXPECT_EQ(false, EvalJs(sub_document, "self.crossOriginIsolated"));
+
+  // Despite the origin trial, no documents get access to the SharedArrayBuffer
+  // constructor.
+  EXPECT_EQ(false, EvalJs(main_document, "'SharedArrayBuffer' in globalThis"));
+  EXPECT_EQ(false, EvalJs(sub_document, "'SharedArrayBuffer' in globalThis"));
+
+  RenderProcessHost* renderer_process = main_document->GetProcess();
+  RenderProcessHostWatcher crash_observer(
+      renderer_process, RenderProcessHostWatcher::WATCH_FOR_PROCESS_EXIT);
+
+  EXPECT_TRUE(ExecJs(sub_document, R"(
+    g_sab_size = new Promise(resolve => {
+      addEventListener("message", event => resolve(event.data.byteLength));
+    });
+  )",
+                     EXECUTE_SCRIPT_NO_RESOLVE_PROMISES));
+
+  EXPECT_TRUE(ExecJs(main_document, R"(
+    let wasm_shared_memory = new WebAssembly.Memory({
+      shared:true, initial:0, maximum:0 });
+    g_iframe.contentWindow.postMessage(wasm_shared_memory.buffer, "*");
+  )"));
+
+  // TODO(https://crbug.com/1201589) The renderer process currently crash. This
+  // shouldn't happen.
+  crash_observer.Wait();
+}
+#endif
+
 // Ensure the SharedArrayBufferOnDesktop kill switch is correctly implemented.
 class SharedArrayBufferOnDesktopBrowserTest
     : public CrossOriginOpenerPolicyBrowserTest {
diff --git a/content/browser/mojo_binder_policy_applier.cc b/content/browser/mojo_binder_policy_applier.cc
index b7d0a3a..fd571b2 100644
--- a/content/browser/mojo_binder_policy_applier.cc
+++ b/content/browser/mojo_binder_policy_applier.cc
@@ -34,16 +34,24 @@
   }
   const MojoBinderPolicy policy = GetMojoBinderPolicy(interface_name);
 
-  // Running in kPrepareToGrantAll mode means that the page will be activated
-  // soon, so the restrictions should be relaxed.
+  // Run in the kPrepareToGrantAll mode before the renderer sends back a
+  // DidCommitActivation. In this mode, MojoBinderPolicyApplier loosens
+  // policies, but still defers binders to ensure that the renderer does not
+  // receive unexpected messages before CommitActivation arrives.
   if (mode_ == Mode::kPrepareToGrantAll) {
     switch (policy) {
       case MojoBinderPolicy::kGrant:
+      // Grant these two kinds of interfaces because:
+      // - kCancel and kUnexpected interfaces may have sync methods, so grant
+      // them to avoid deadlocks.
+      // - Renderer might request these interfaces during the prerenderingchange
+      // event, because from the page's point of view it is no longer
+      // prerendering.
+      case MojoBinderPolicy::kCancel:
+      case MojoBinderPolicy::kUnexpected:
         std::move(binder_callback).Run();
         break;
-      case MojoBinderPolicy::kCancel:
       case MojoBinderPolicy::kDefer:
-      case MojoBinderPolicy::kUnexpected:
         deferred_binders_.push_back(std::move(binder_callback));
         break;
     }
diff --git a/content/browser/mojo_binder_policy_applier_unittest.cc b/content/browser/mojo_binder_policy_applier_unittest.cc
index 1e58677..d7b93bb 100644
--- a/content/browser/mojo_binder_policy_applier_unittest.cc
+++ b/content/browser/mojo_binder_policy_applier_unittest.cc
@@ -230,7 +230,7 @@
 }
 
 // When MojoBinderPolicyApplier runs in the kPrepareToGrantAll mode, verifies it
-// applies kDefer rather than kCancel policy when receiving a kCancel interface
+// applies kGrant rather than kCancel policy when receiving a kCancel interface
 // binding request.
 TEST_F(MojoBinderPolicyApplierTest, CancelInPrepareToGrantAll) {
   // Initialize Mojo interfaces.
@@ -247,12 +247,7 @@
                      base::Unretained(&collector_),
                      cancel_receiver.As<mojom::TestInterfaceForCancel>()));
   EXPECT_FALSE(collector_.IsCancelled());
-  EXPECT_FALSE(collector_.IsCancelReceiverBound());
-  EXPECT_EQ(1U, deferred_binders().size());
-
-  policy_applier_.GrantAll();
   EXPECT_TRUE(collector_.IsCancelReceiverBound());
-  EXPECT_EQ(0U, deferred_binders().size());
 }
 
 TEST_F(MojoBinderPolicyApplierTest, UnexpectedInPrepareToGrantAll) {
@@ -271,12 +266,7 @@
           base::Unretained(&collector_),
           unexpected_receiver.As<mojom::TestInterfaceForUnexpected>()));
   EXPECT_FALSE(collector_.IsCancelled());
-  EXPECT_FALSE(collector_.IsUnexpectedReceiverBound());
-  EXPECT_EQ(1U, deferred_binders().size());
-
-  policy_applier_.GrantAll();
   EXPECT_TRUE(collector_.IsUnexpectedReceiverBound());
-  EXPECT_EQ(0U, deferred_binders().size());
 }
 
 // Verifies that all interfaces are bound immediately if GrantAll() is called,
diff --git a/content/browser/mojo_binder_policy_map_impl.cc b/content/browser/mojo_binder_policy_map_impl.cc
index bf89d433..def0e49 100644
--- a/content/browser/mojo_binder_policy_map_impl.cc
+++ b/content/browser/mojo_binder_policy_map_impl.cc
@@ -24,6 +24,9 @@
 // interfaces.
 void RegisterContentBinderPoliciesForSameOriginPrerendering(
     MojoBinderPolicyMap& map) {
+  // For Prerendering, kCancel is usually used for those interfaces that cannot
+  // be granted because they can cause undesirable side-effects (e.g., playing
+  // audio, showing notification) and are non-deferrable.
   // Please update `PrerenderCancelledInterface` and
   // `GetCancelledInterfaceType()` in
   // content/browser/prerender/prerender_metrics.h once you add a new kCancel
diff --git a/content/browser/prerender/prerender_browsertest.cc b/content/browser/prerender/prerender_browsertest.cc
index 619ebc4..dae12e0 100644
--- a/content/browser/prerender/prerender_browsertest.cc
+++ b/content/browser/prerender/prerender_browsertest.cc
@@ -1375,7 +1375,7 @@
 
 // Tests that executing the GamepadMonitor API on a prerendering before
 // navigating to the prerendered page causes cancel prerendering.
-// This Test cannot be a web test because web tests handles the GamepadMonitor
+// This test cannot be a web test because web tests handles the GamepadMonitor
 // interface on the renderer side. See GamepadController::Install().
 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, GamepadMonitorCancelPrerendering) {
   base::HistogramTester histogram_tester;
@@ -1405,6 +1405,39 @@
       PrerenderCancelledInterface::kGamepadMonitor, 1);
 }
 
+// TODO(https://crbug.com/1201980) LaCrOS binds the HidManager interface, which
+// might be required by Gamepad Service, in a different way. Disable this test
+// before figuring out how to set the test context correctly.
+#if !BUILDFLAG(IS_CHROMEOS_LACROS)
+// Tests that requesting to bind the GamepadMonitor interface after the
+// prerenderingchange event dispatched does not cancel prerendering.
+// This test cannot be a web test because web tests handles the GamepadMonitor
+// interface on the renderer side. See GamepadController::Install().
+IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, GamepadMonitorAfterNavigation) {
+  const GURL kInitialUrl = GetUrl("/prerender/add_prerender.html");
+  const GURL kPrerenderingUrl = GetUrl("/prerender/restriction-gamepad.html");
+
+  // Navigate to an initial page.
+  ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl));
+
+  // Make a prerendered page.
+  ASSERT_EQ(GetRequestCount(kPrerenderingUrl), 0);
+  AddPrerender(kPrerenderingUrl);
+  ASSERT_EQ(GetRequestCount(kPrerenderingUrl), 1);
+
+  // Activate the prerendered page to dispatch the prerenderingchange event and
+  // run the Gamepad API in the event.
+  NavigatePrimaryPage(kPrerenderingUrl);
+  EXPECT_EQ(shell()->web_contents()->GetURL(), kPrerenderingUrl);
+  // Wait for the completion of the prerenderingchange event to make sure the
+  // API is called.
+  EXPECT_EQ(true, EvalJs(shell()->web_contents(), "prerenderingChanged"));
+  // The API call shouldn't discard the prerendered page and shouldn't restart
+  // navigation.
+  EXPECT_EQ(GetRequestCount(kPrerenderingUrl), 1);
+}
+#endif  // !BUILDFLAG(IS_CHROMEOS_LACROS)
+
 // Tests that accessing the clipboard via the execCommand API fails because the
 // page does not has any user activation.
 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, ClipboardByExecCommandFail) {
diff --git a/content/browser/prerender/prerender_host.cc b/content/browser/prerender/prerender_host.cc
index eaf5690..7c9876d 100644
--- a/content/browser/prerender/prerender_host.cc
+++ b/content/browser/prerender/prerender_host.cc
@@ -74,11 +74,12 @@
                                         &web_contents,
                                         &web_contents,
                                         &web_contents,
-                                        &web_contents)) {
+                                        &web_contents,
+                                        FrameTree::Type::kPrerender)) {
     frame_tree_->Init(
         SiteInstance::Create(web_contents.GetBrowserContext()).get(),
         /*renderer_initiated_creation=*/false,
-        /*main_frame_name=*/"", FrameTree::Type::kPrerender);
+        /*main_frame_name=*/"");
 
     // TODO(https://crbug.com/1199679): This should be moved to FrameTree::Init
     web_contents_.NotifySwappedFromRenderManager(
@@ -356,8 +357,4 @@
   observers_.RemoveObserver(observer);
 }
 
-bool PrerenderHost::IsAssociatedWith(const WebContentsImpl& web_contents) {
-  return page_holder_->GetWebContents() == &web_contents;
-}
-
 }  // namespace content
diff --git a/content/browser/prerender/prerender_host.h b/content/browser/prerender/prerender_host.h
index 01c12b0..663f383 100644
--- a/content/browser/prerender/prerender_host.h
+++ b/content/browser/prerender/prerender_host.h
@@ -121,8 +121,6 @@
   void AddObserver(Observer* observer);
   void RemoveObserver(Observer* observer);
 
-  bool IsAssociatedWith(const WebContentsImpl& web_contents);
-
   url::Origin initiator_origin() const { return initiator_origin_; }
 
   int frame_tree_node_id() const { return frame_tree_node_id_; }
diff --git a/content/browser/prerender/prerender_host_registry.cc b/content/browser/prerender/prerender_host_registry.cc
index 28188a1..80b38bd 100644
--- a/content/browser/prerender/prerender_host_registry.cc
+++ b/content/browser/prerender/prerender_host_registry.cc
@@ -105,28 +105,6 @@
   }
 }
 
-void PrerenderHostRegistry::AbandonAllHostsForWebContents(
-    const WebContentsImpl& web_contents) {
-  std::vector<int> associated_hosts;
-  for (auto& entry : prerender_host_by_frame_tree_node_id_) {
-    if (entry.second->IsAssociatedWith(web_contents)) {
-      associated_hosts.push_back(entry.first);
-    }
-  }
-  for (auto id : associated_hosts) {
-    AbandonHost(id);
-  }
-  std::vector<int> associated_reserved_hosts;
-  for (auto& entry : reserved_prerender_host_by_frame_tree_node_id_) {
-    if (entry.second->IsAssociatedWith(web_contents)) {
-      associated_hosts.push_back(entry.first);
-    }
-  }
-  for (auto id : associated_reserved_hosts) {
-    AbandonReservedHost(id);
-  }
-}
-
 int PrerenderHostRegistry::ReserveHostToActivate(
     const GURL& navigation_url,
     FrameTreeNode& frame_tree_node) {
diff --git a/content/browser/prerender/prerender_host_registry.h b/content/browser/prerender/prerender_host_registry.h
index 338ee16d..f8e596d 100644
--- a/content/browser/prerender/prerender_host_registry.h
+++ b/content/browser/prerender/prerender_host_registry.h
@@ -21,13 +21,11 @@
 
 class FrameTreeNode;
 class RenderFrameHostImpl;
-class WebContentsImpl;
 
 // Prerender2:
 // PrerenderHostRegistry creates and retains a prerender host, and reserves it
 // for NavigationRequest to activate the prerendered page. This is created and
-// owned by StoragePartitionImpl.
-// TODO(https://crbug.com/1170619): Tie the registry with WebContentsImpl.
+// owned by WebContentsImpl.
 //
 // The APIs of this class are categorized into two: APIs for triggers and APIs
 // for activators.
@@ -90,10 +88,6 @@
   void AbandonHostAsync(int frame_tree_node_id,
                         PrerenderHost::FinalStatus final_status);
 
-  // TODO(https://crbug.com/1194865): Remove the following method once the
-  // workaround in the call site is removed.
-  void AbandonAllHostsForWebContents(const WebContentsImpl& web_contents);
-
   // For activators.
   // Reserves the host to activate for a navigation for the given FrameTreeNode.
   // Returns the root frame tree node id of the prerendered page, which can be
@@ -105,12 +99,9 @@
                             FrameTreeNode& frame_tree_node);
 
   // For activators.
-  // Activates the host reserved by ReserveHostToActivate().
-  // - For MPArch, this returns the BackForwardCacheImpl::Entry containing the
-  //   page that was activated on success, or nullptr on failure.
-  // - For multiple WebContents, this always returns nullptr.
-  // TODO(crbug.com/1183519): Remove multiple WebContents
-  // implementation after MPArch activation is sufficiently stable.
+  // Activates the host reserved by ReserveHostToActivate() and returns the
+  // BackForwardCacheImpl::Entry containing the page that was activated on
+  // success, or nullptr on failure.
   //
   // `current_render_frame_host` is the RenderFrameHostImpl that will be swapped
   // out and destroyed by the activation.
diff --git a/content/browser/renderer_host/ancestor_throttle.cc b/content/browser/renderer_host/ancestor_throttle.cc
index 5f5bb98c..f550556 100644
--- a/content/browser/renderer_host/ancestor_throttle.cc
+++ b/content/browser/renderer_host/ancestor_throttle.cc
@@ -273,13 +273,6 @@
   if (disposition != network::mojom::XFrameOptionsValue::kNone &&
       disposition != network::mojom::XFrameOptionsValue::kAllowAll &&
       HeadersContainFrameAncestorsCSP(request->response()->parsed_headers)) {
-    if (logging == LoggingDisposition::LOG_TO_CONSOLE) {
-      AddMessageToConsole(
-          blink::mojom::ConsoleMessageLevel::kWarning,
-          "The page delivered both an 'X-Frame-Options' header and a "
-          "'Content-Security-Policy' header with a 'frame-ancestors' "
-          "directive. The 'X-Frame-Options' header has been ignored.");
-    }
     RecordXFrameOptionsUsage(XFrameOptionsHistogram::BYPASS);
     return CheckResult::PROCEED;
   }
diff --git a/content/browser/renderer_host/ancestor_throttle_browsertest.cc b/content/browser/renderer_host/ancestor_throttle_browsertest.cc
index 6c32eebe7..9760813 100644
--- a/content/browser/renderer_host/ancestor_throttle_browsertest.cc
+++ b/content/browser/renderer_host/ancestor_throttle_browsertest.cc
@@ -85,11 +85,6 @@
   WebContentsImpl* web_contents =
       static_cast<WebContentsImpl*>(shell()->web_contents());
 
-  WebContentsConsoleObserver console_observer(shell()->web_contents());
-  console_observer.SetPattern(
-      "The page delivered both an 'X-Frame-Options' header and a "
-      "'Content-Security-Policy' header with a 'frame-ancestors' directive. "
-      "The 'X-Frame-Options' header has been ignored.");
   EXPECT_TRUE(NavigateToURL(web_contents, parent_url));
   EXPECT_TRUE(NavigateIframeToURL(web_contents, "test_iframe", iframe_url));
 
@@ -102,7 +97,6 @@
                    ->current_frame_host()
                    ->GetLastCommittedOrigin()
                    .opaque());
-  console_observer.Wait();
 }
 
 // Tests that redirecting on a forbidden frame-ancestors will still commit if
diff --git a/content/browser/renderer_host/delegated_frame_host.cc b/content/browser/renderer_host/delegated_frame_host.cc
index 5bbc1d41..7bcc562 100644
--- a/content/browser/renderer_host/delegated_frame_host.cc
+++ b/content/browser/renderer_host/delegated_frame_host.cc
@@ -20,7 +20,7 @@
 #include "components/viz/common/features.h"
 #include "components/viz/common/frame_sinks/copy_output_request.h"
 #include "components/viz/common/quads/compositor_frame.h"
-#include "components/viz/common/resources/single_release_callback.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "content/browser/compositor/surface_utils.h"
 #include "content/browser/gpu/compositor_util.h"
 #include "content/public/common/content_switches.h"
@@ -378,8 +378,7 @@
       result->GetTextureResult()->mailbox, GL_LINEAR, GL_TEXTURE_2D,
       result->GetTextureResult()->sync_token, result->size(),
       false /* is_overlay_candidate */);
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback =
-      result->TakeTextureOwnership();
+  viz::ReleaseCallback release_callback = result->TakeTextureOwnership();
 
   if (stale_content_layer_->parent() != client_->DelegatedFrameHostGetLayer())
     client_->DelegatedFrameHostGetLayer()->Add(stale_content_layer_.get());
diff --git a/content/browser/renderer_host/frame_tree.cc b/content/browser/renderer_host/frame_tree.cc
index b4b9951..8954795 100644
--- a/content/browser/renderer_host/frame_tree.cc
+++ b/content/browser/renderer_host/frame_tree.cc
@@ -104,7 +104,8 @@
     RenderFrameHostDelegate* render_frame_delegate,
     RenderViewHostDelegate* render_view_delegate,
     RenderWidgetHostDelegate* render_widget_delegate,
-    RenderFrameHostManager::Delegate* manager_delegate)
+    RenderFrameHostManager::Delegate* manager_delegate,
+    Type type)
     : delegate_(delegate),
       render_frame_delegate_(render_frame_delegate),
       render_view_delegate_(render_view_delegate),
@@ -126,7 +127,8 @@
                               blink::mojom::FrameOwnerProperties(),
                               blink::mojom::FrameOwnerElementType::kNone)),
       focused_frame_tree_node_id_(FrameTreeNode::kFrameTreeNodeInvalidId),
-      load_progress_(0.0) {}
+      load_progress_(0.0),
+      type_(type) {}
 
 FrameTree::~FrameTree() {
 #if DCHECK_IS_ON()
@@ -555,13 +557,11 @@
 
 void FrameTree::Init(SiteInstance* main_frame_site_instance,
                      bool renderer_initiated_creation,
-                     const std::string& main_frame_name,
-                     FrameTree::Type type) {
+                     const std::string& main_frame_name) {
   // blink::FrameTree::SetName always keeps |unique_name| empty in case of a
   // main frame - let's do the same thing here.
   std::string unique_name;
   root_->SetFrameName(main_frame_name, unique_name);
-  type_ = type;
   root_->render_manager()->InitRoot(main_frame_site_instance,
                                     renderer_initiated_creation);
 }
diff --git a/content/browser/renderer_host/frame_tree.h b/content/browser/renderer_host/frame_tree.h
index 90a9390..f686af14 100644
--- a/content/browser/renderer_host/frame_tree.h
+++ b/content/browser/renderer_host/frame_tree.h
@@ -118,18 +118,6 @@
     virtual bool IsHidden() = 0;
   };
 
-  // A set of delegates are remembered here so that we can create
-  // RenderFrameHostManagers.
-  FrameTree(BrowserContext* browser_context,
-            Delegate* delegate,
-            NavigationControllerDelegate* navigation_controller_delegate,
-            NavigatorDelegate* navigator_delegate,
-            RenderFrameHostDelegate* render_frame_delegate,
-            RenderViewHostDelegate* render_view_delegate,
-            RenderWidgetHostDelegate* render_widget_delegate,
-            RenderFrameHostManager::Delegate* manager_delegate);
-  ~FrameTree();
-
   // Type of FrameTree instance.
   enum class Type {
     // This FrameTree is the primary frame tree for the WebContents, whose main
@@ -140,7 +128,19 @@
     // invisible to the user.
     kPrerender
   };
-  Type type() { return type_; }
+
+  // A set of delegates are remembered here so that we can create
+  // RenderFrameHostManagers.
+  FrameTree(BrowserContext* browser_context,
+            Delegate* delegate,
+            NavigationControllerDelegate* navigation_controller_delegate,
+            NavigatorDelegate* navigator_delegate,
+            RenderFrameHostDelegate* render_frame_delegate,
+            RenderViewHostDelegate* render_view_delegate,
+            RenderWidgetHostDelegate* render_widget_delegate,
+            RenderFrameHostManager::Delegate* manager_delegate,
+            Type type);
+  ~FrameTree();
 
   // Initializes the main frame for this FrameTree. That is it creates the
   // initial RenderFrameHost in the root node's RenderFrameHostManager. This
@@ -150,8 +150,9 @@
   // constructor so we do not leave objects in a half initialized state.
   void Init(SiteInstance* main_frame_site_instance,
             bool renderer_initiated_creation,
-            const std::string& main_frame_name,
-            Type type);
+            const std::string& main_frame_name);
+
+  Type type() const { return type_; }
 
   FrameTreeNode* root() const { return root_; }
 
@@ -376,16 +377,6 @@
   friend class FrameTreeTest;
   FRIEND_TEST_ALL_PREFIXES(RenderFrameHostImplBrowserTest, RemoveFocusedFrame);
 
-  // Prerender2:
-  // Indicates whether this frame tree is being prerendered.
-  // Set to true when frame tree is created (PrerenderHost()) and to false once
-  // the prerendered page is activated
-  // (PrerenderHost::ActivatePrerenderedContents()).
-  // TODO(https://crbug.com/1174926): Migrate this parameter to FrameTreeType
-  // once activation path is migrated onto MPArch and WebContents-swap-based
-  // activation logic is removed.
-  bool is_prerendering_ = false;
-
   // Returns a range to iterate over all FrameTreeNodes in the frame tree in
   // breadth-first traversal order, skipping the subtree rooted at
   // |node|, but including |node| itself.
@@ -427,11 +418,8 @@
   // to modify the blank page.  Always false after the first commit.
   bool has_accessed_initial_main_document_ = false;
 
-  // Indicates type of frame tree. The default value is set to kPrimary until
-  // the initialization is moved to the constructor.
-  // TODO(https://crbug.com/1174926): Make FrameTree::Type const once
-  // WebContents-swap-based activation logic is removed.
-  Type type_ = Type::kPrimary;
+  // Indicates type of frame tree.
+  const Type type_;
 
 #if DCHECK_IS_ON()
   // Whether Shutdown() was called.
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
index fe58b91..a50ade9 100644
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -8144,8 +8144,16 @@
 void RenderFrameHostImpl::ActivateForPrerendering() {
   DCHECK(blink::features::IsPrerender2Enabled());
 
-  // TODO(https://crbug.com/1186796): Loosen the policies of the mojo capability
-  // control during dispatching the prerenderingchange event in the Blink.
+  // Loosen the policies of the mojo capability control during dispatching the
+  // prerenderingchange event in Blink, because the page may start legitimately
+  // using controlled interfaces once prerenderingchange is dispatched. We
+  // cannot release policies at this point, i.e., we cannot run the deferred
+  // binders, because the Mojo message pipes are not channel-associated and we
+  // should ensure that ActivateForPrerendering() arrives on the renderer
+  // earlier than these deferred messages.
+  auto* applier = broker_.GetMojoBinderPolicyApplier();
+  DCHECK(applier) << "prerendering pages should have a policy applier";
+  applier->PrepareToGrantAll();
 
   DCHECK(!is_notifying_activation_for_prerendering_);
   is_notifying_activation_for_prerendering_ = true;
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
index 3985c9f..b45f6c8 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -1138,15 +1138,21 @@
       delegate_->DidChangeScreenOrientation();
   }
 
-  TRACE_EVENT_WITH_FLOW2(
-      TRACE_DISABLED_BY_DEFAULT("viz.surface_id_flow"),
-      "RenderWidgetHostImpl::SynchronizeVisualProperties send message",
-      visual_properties->local_surface_id.value_or(viz::LocalSurfaceId())
-          .submission_trace_id(),
-      TRACE_EVENT_FLAG_FLOW_OUT, "message",
-      "WidgetMsg_SynchronizeVisualProperties", "local_surface_id",
-      visual_properties->local_surface_id.value_or(viz::LocalSurfaceId())
-          .ToString());
+  // If we do not have a valid viz::LocalSurfaceId then we are a child frame
+  // waiting on the id to be propagated from our parent. We cannot create a hash
+  // for tracing of an invalid id.
+  //
+  // TODO(jonross): Untangle startup so that we don't have this invalid partial
+  // state. (https://crbug.com/1185286) (https://crbug.com/419087)
+  if (visual_properties->local_surface_id.has_value()) {
+    TRACE_EVENT_WITH_FLOW2(
+        TRACE_DISABLED_BY_DEFAULT("viz.surface_id_flow"),
+        "RenderWidgetHostImpl::SynchronizeVisualProperties send message",
+        visual_properties->local_surface_id->submission_trace_id(),
+        TRACE_EVENT_FLAG_FLOW_OUT, "message",
+        "WidgetMsg_SynchronizeVisualProperties", "local_surface_id",
+        visual_properties->local_surface_id->ToString());
+  }
   visual_properties_ack_pending_ =
       DoesVisualPropertiesNeedAck(old_visual_properties_, *visual_properties);
   old_visual_properties_ = std::move(visual_properties);
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
index 9039072..7a89183 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -1374,7 +1374,7 @@
   canvas.scale(
       (float)output_width / (float)input_size_in_pixel.width(),
       (float)output_height / (float)input_size_in_pixel.height());
-  sync_compositor_->DemandDrawSw(&canvas);
+  sync_compositor_->DemandDrawSw(&canvas, /*software_canvas=*/true);
   std::move(callback).Run(bitmap);
 }
 
diff --git a/content/browser/renderer_host/render_widget_host_view_aura_browsertest.cc b/content/browser/renderer_host/render_widget_host_view_aura_browsertest.cc
index 536b1def..c8c3596a 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura_browsertest.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura_browsertest.cc
@@ -208,8 +208,19 @@
 }
 #endif  // #if BUILDFLAG(IS_CHROMEOS_ASH)
 
+// TODO(1126339): fix the way how exo creates accelerated widgets. At the
+// moment, they are created only after the client attaches a buffer to a
+// surface, which is incorrect and results in the "[destroyed object]: error 1:
+// popup parent not constructed" error.
+#if BUILDFLAG(IS_CHROMEOS_LACROS)
+#define MAYBE_SetKeyboardFocusOnTapAfterDismissingPopup \
+  DISABLED_SetKeyboardFocusOnTapAfterDismissingPopup
+#else
+#define MAYBE_SetKeyboardFocusOnTapAfterDismissingPopup \
+  SetKeyboardFocusOnTapAfterDismissingPopup
+#endif
 IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewAuraBrowserTest,
-                       SetKeyboardFocusOnTapAfterDismissingPopup) {
+                       MAYBE_SetKeyboardFocusOnTapAfterDismissingPopup) {
   GURL page(
       "data:text/html;charset=utf-8,"
       "<!DOCTYPE html>"
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 222983e..3d8de64 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -834,7 +834,15 @@
       render_view_host_delegate_view_(nullptr),
       created_with_opener_(false),
       node_(this),
-      frame_tree_(browser_context, this, this, this, this, this, this, this),
+      frame_tree_(browser_context,
+                  this,
+                  this,
+                  this,
+                  this,
+                  this,
+                  this,
+                  this,
+                  FrameTree::Type::kPrimary),
       is_load_to_different_document_(false),
       main_frame_process_status_(base::TERMINATION_STATUS_STILL_RUNNING),
       main_frame_process_error_code_(0),
@@ -948,18 +956,18 @@
   // Shutdown the primary FrameTree.
   frame_tree_.Shutdown();
 
-  // Shutdown the non-primary FrameTrees. Currently the only instances of these
-  // are prerendering FrameTrees.
+  // Shutdown the non-primary FrameTrees.
+  //
   // Do this here rather than relying on the owner of the FrameTree to shutdown
   // on WebContentsDestroyed(), so that all the FrameTrees are shutdown at the
   // same time for consistency. Also, destroying a FrameTree results in other
   // observer functions like RenderFrameDeleted() being called, which are not
   // expected to be called after WebContentsDestroyed().
-  // TODO(https://crbug.com/1194865, https://crbug.com/1170619): Destroy the
-  // PrerenderHostRegistry here once it becomes per-WebContentsImpl instance,
-  // instead of calling AbandonAllHostsForWebContents() on it.
+  //
+  // Currently the only instances of the non-primary FrameTrees are for
+  // prerendering. Shutdown them by destructing PrerenderHostRegistry.
   if (blink::features::IsPrerender2Enabled())
-    prerender_host_registry_->AbandonAllHostsForWebContents(*this);
+    prerender_host_registry_.reset();
 
 #if BUILDFLAG(ENABLE_PLUGINS)
   // Call this before WebContentsDestroyed() is broadcasted since
@@ -2733,10 +2741,8 @@
         ->PreventAssociationWithSpareProcess();
   }
 
-  FrameTree::Type type = params.is_prerendering ? FrameTree::Type::kPrerender
-                                                : FrameTree::Type::kPrimary;
   frame_tree_.Init(site_instance.get(), params.renderer_initiated_creation,
-                   params.main_frame_name, type);
+                   params.main_frame_name);
 
   WebContentsViewDelegate* delegate =
       GetContentClient()->browser()->GetWebContentsViewDelegate(this);
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index 3eaa3bb..97538dcd 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -2156,7 +2156,7 @@
   // renderer dialog.
   int suppress_unresponsive_renderer_count_ = 0;
 
-  const std::unique_ptr<PrerenderHostRegistry> prerender_host_registry_;
+  std::unique_ptr<PrerenderHostRegistry> prerender_host_registry_;
 
   std::unique_ptr<power_scheduler::PowerModeVoter> audible_power_mode_voter_;
 
diff --git a/content/public/android/generate_child_service.py b/content/public/android/generate_child_service.py
index 6c2765b1..050bf82 100755
--- a/content/public/android/generate_child_service.py
+++ b/content/public/android/generate_child_service.py
@@ -20,13 +20,10 @@
 
 package org.chromium.content.app;
 
-import org.chromium.base.annotations.MainDex;
-
 /**
  * This is needed to register multiple SandboxedProcess services so that we
  * can have more than one sandboxed process.
  */
-@MainDex
 public class SandboxedProcessService{0} extends SandboxedProcessService {{
 }}"""
   return template.format(str(i))
diff --git a/content/public/browser/android/synchronous_compositor.h b/content/public/browser/android/synchronous_compositor.h
index 4a98c7a..a691729c 100644
--- a/content/public/browser/android/synchronous_compositor.h
+++ b/content/public/browser/android/synchronous_compositor.h
@@ -103,7 +103,9 @@
 
   // "On demand" SW draw, into the supplied canvas (observing the transform
   // and clip set there-in).
-  virtual bool DemandDrawSw(SkCanvas* canvas) = 0;
+  // `software canvas` being true means drawing happens immediately instead
+  // of being cached, which allows more efficient drawing.
+  virtual bool DemandDrawSw(SkCanvas* canvas, bool software_canvas) = 0;
 
   // Set the memory limit policy of this compositor.
   virtual void SetMemoryPolicy(size_t bytes_limit) = 0;
diff --git a/content/public/browser/web_contents.h b/content/public/browser/web_contents.h
index 5d9fe5bee..3c37b58 100644
--- a/content/public/browser/web_contents.h
+++ b/content/public/browser/web_contents.h
@@ -174,13 +174,6 @@
     // WebContents construction should take this into account.
     bool renderer_initiated_creation;
 
-    // True if WebContents is created for Prerendering.
-    // Please note that Prerender2 is an experimental feature to load and run
-    // pages in background.
-    // TODO(https://crbug.com/1177664): After migration of Prerender2 to MPArch,
-    // remove this plumbing.
-    bool is_prerendering = false;
-
     // Used to specify how far WebContents::Create can initialize a renderer
     // process.
     //
diff --git a/content/public/test/multiple_pages_per_webcontents_helper.cc b/content/public/test/multiple_pages_per_webcontents_helper.cc
index d2c3ae4..ca9f743 100644
--- a/content/public/test/multiple_pages_per_webcontents_helper.cc
+++ b/content/public/test/multiple_pages_per_webcontents_helper.cc
@@ -29,10 +29,11 @@
                     web_contents,
                     web_contents,
                     web_contents,
-                    web_contents) {
+                    web_contents,
+                    FrameTree::Type::kPrimary) {
     frame_tree_.Init(
         SiteInstance::Create(web_contents->GetBrowserContext()).get(), false,
-        "", FrameTree::Type::kPrimary);
+        "");
 
     web_contents_->NotifySwappedFromRenderManager(
         nullptr, frame_tree_.root()->render_manager()->current_frame_host(),
diff --git a/content/public/test/render_view_test.cc b/content/public/test/render_view_test.cc
index 976aca7..a505e3a 100644
--- a/content/public/test/render_view_test.cc
+++ b/content/public/test/render_view_test.cc
@@ -841,8 +841,8 @@
   view->GetMainRenderFrame()->DidFinishSameDocumentNavigation(
       is_new_navigation ? blink::kWebStandardCommit
                         : blink::kWebHistoryInertCommit,
-      false /* content_initiated */, false /* is_history_api_navigation */,
-      false /* is_client_redirect */);
+      false /* is_synchronously_committed */,
+      false /* is_history_api_navigation */, false /* is_client_redirect */);
 }
 
 void RenderViewTest::SetUseZoomForDSFEnabled(bool enabled) {
diff --git a/content/public/test/test_synchronous_compositor_android.cc b/content/public/test/test_synchronous_compositor_android.cc
index baf8e23..c6c7910 100644
--- a/content/public/test/test_synchronous_compositor_android.cc
+++ b/content/public/test/test_synchronous_compositor_android.cc
@@ -50,7 +50,8 @@
   frame_ack_array_.swap(*array);
 }
 
-bool TestSynchronousCompositor::DemandDrawSw(SkCanvas* canvas) {
+bool TestSynchronousCompositor::DemandDrawSw(SkCanvas* canvas,
+                                             bool software_canvas) {
   DCHECK(canvas);
   return true;
 }
diff --git a/content/public/test/test_synchronous_compositor_android.h b/content/public/test/test_synchronous_compositor_android.h
index 736b228..70a18cd 100644
--- a/content/public/test/test_synchronous_compositor_android.h
+++ b/content/public/test/test_synchronous_compositor_android.h
@@ -32,7 +32,7 @@
                        std::vector<viz::ReturnedResource> resources) override;
   void DidPresentCompositorFrames(viz::FrameTimingDetailsMap timing_details,
                                   uint32_t frame_token) override {}
-  bool DemandDrawSw(SkCanvas* canvas) override;
+  bool DemandDrawSw(SkCanvas* canvas, bool software_canvas) override;
   void SetMemoryPolicy(size_t bytes_limit) override {}
   void DidBecomeActive() override {}
   void DidChangeRootLayerScrollOffset(
diff --git a/content/renderer/loader/web_worker_fetch_context_impl.h b/content/renderer/loader/web_worker_fetch_context_impl.h
index 9824ea3..1ad36b4 100644
--- a/content/renderer/loader/web_worker_fetch_context_impl.h
+++ b/content/renderer/loader/web_worker_fetch_context_impl.h
@@ -24,6 +24,7 @@
 #include "third_party/blink/public/mojom/service_worker/service_worker_container.mojom.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_object.mojom-forward.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_provider.mojom.h"
+#include "third_party/blink/public/mojom/service_worker/service_worker_worker_client_registry.mojom.h"
 #include "third_party/blink/public/mojom/timing/worker_timing_container.mojom-forward.h"
 #include "third_party/blink/public/mojom/worker/subresource_loader_updater.mojom.h"
 #include "third_party/blink/public/platform/web_string.h"
diff --git a/content/renderer/navigation_state.cc b/content/renderer/navigation_state.cc
index 483720a..41ef6b4d5 100644
--- a/content/renderer/navigation_state.cc
+++ b/content/renderer/navigation_state.cc
@@ -19,24 +19,26 @@
 }
 
 // static
-std::unique_ptr<NavigationState> NavigationState::CreateBrowserInitiated(
+std::unique_ptr<NavigationState> NavigationState::Create(
     mojom::CommonNavigationParamsPtr common_params,
     mojom::CommitNavigationParamsPtr commit_params,
     mojom::NavigationClient::CommitNavigationCallback commit_callback,
     std::unique_ptr<NavigationClient> navigation_client,
     bool was_initiated_in_this_frame) {
   return base::WrapUnique(new NavigationState(
-      std::move(common_params), std::move(commit_params), false,
-      std::move(commit_callback), std::move(navigation_client),
-      was_initiated_in_this_frame));
+      std::move(common_params), std::move(commit_params),
+      /*is_for_synchronous_commit=*/false, std::move(commit_callback),
+      std::move(navigation_client), was_initiated_in_this_frame));
 }
 
 // static
-std::unique_ptr<NavigationState> NavigationState::CreateContentInitiated() {
+std::unique_ptr<NavigationState> NavigationState::CreateForSynchronousCommit() {
   return base::WrapUnique(new NavigationState(
-      CreateCommonNavigationParams(), CreateCommitNavigationParams(), true,
-      content::mojom::NavigationClient::CommitNavigationCallback(), nullptr,
-      true));
+      CreateCommonNavigationParams(), CreateCommitNavigationParams(),
+      /*is_for_synchronous_commit=*/true,
+      content::mojom::NavigationClient::CommitNavigationCallback(),
+      /*navigation_client=*/nullptr,
+      /*was_initiated_in_this_frame=*/true));
 }
 
 // static
@@ -50,8 +52,8 @@
   return was_within_same_document_;
 }
 
-bool NavigationState::IsContentInitiated() {
-  return is_content_initiated_;
+bool NavigationState::IsForSynchronousCommit() {
+  return is_for_synchronous_commit_;
 }
 
 void NavigationState::RunCommitNavigationCallback(
@@ -67,13 +69,13 @@
 NavigationState::NavigationState(
     mojom::CommonNavigationParamsPtr common_params,
     mojom::CommitNavigationParamsPtr commit_params,
-    bool is_content_initiated,
+    bool is_for_synchronous_commit,
     mojom::NavigationClient::CommitNavigationCallback commit_callback,
     std::unique_ptr<NavigationClient> navigation_client,
     bool was_initiated_in_this_frame)
     : was_within_same_document_(false),
       was_initiated_in_this_frame_(was_initiated_in_this_frame),
-      is_content_initiated_(is_content_initiated),
+      is_for_synchronous_commit_(is_for_synchronous_commit),
       common_params_(std::move(common_params)),
       commit_params_(std::move(commit_params)),
       navigation_client_(std::move(navigation_client)),
diff --git a/content/renderer/navigation_state.h b/content/renderer/navigation_state.h
index 36d7e80..334421f2 100644
--- a/content/renderer/navigation_state.h
+++ b/content/renderer/navigation_state.h
@@ -28,7 +28,7 @@
  public:
   ~NavigationState();
 
-  static std::unique_ptr<NavigationState> CreateBrowserInitiated(
+  static std::unique_ptr<NavigationState> Create(
       mojom::CommonNavigationParamsPtr common_params,
       mojom::CommitNavigationParamsPtr commit_params,
       mojom::NavigationClient::CommitNavigationCallback
@@ -36,7 +36,7 @@
       std::unique_ptr<NavigationClient> navigation_client,
       bool was_initiated_in_this_frame);
 
-  static std::unique_ptr<NavigationState> CreateContentInitiated();
+  static std::unique_ptr<NavigationState> CreateForSynchronousCommit();
 
   static NavigationState* FromDocumentLoader(
       blink::WebDocumentLoader* document_loader);
@@ -44,8 +44,7 @@
   // True iff the frame's navigation was within the same document.
   bool WasWithinSameDocument();
 
-  // True if this navigation was not initiated via WebFrame::LoadRequest.
-  bool IsContentInitiated();
+  bool IsForSynchronousCommit();
 
   const mojom::CommonNavigationParams& common_params() const {
     return *common_params_;
@@ -73,7 +72,7 @@
  private:
   NavigationState(mojom::CommonNavigationParamsPtr common_params,
                   mojom::CommitNavigationParamsPtr commit_params,
-                  bool is_content_initiated,
+                  bool is_for_synchronous_commit,
                   content::mojom::NavigationClient::CommitNavigationCallback
                       commit_callback,
                   std::unique_ptr<NavigationClient> navigation_client,
@@ -89,8 +88,10 @@
   // Used to ensure consistent observer notifications about a navigation.
   bool was_initiated_in_this_frame_;
 
-  // True if this navigation was not initiated via WebFrame::LoadRequest.
-  const bool is_content_initiated_;
+  // True if this navigation is for a renderer synchronous commit (e.g. the
+  // synchronous about:blank navigation, same-origin initiated same-document
+  // navigations), rather than using the browser's navigation stack.
+  const bool is_for_synchronous_commit_;
 
   mojom::CommonNavigationParamsPtr common_params_;
 
diff --git a/content/renderer/pepper/pepper_graphics_2d_host.cc b/content/renderer/pepper/pepper_graphics_2d_host.cc
index a636000c..d24d017f 100644
--- a/content/renderer/pepper/pepper_graphics_2d_host.cc
+++ b/content/renderer/pepper/pepper_graphics_2d_host.cc
@@ -609,7 +609,7 @@
 bool PepperGraphics2DHost::PrepareTransferableResource(
     cc::SharedBitmapIdRegistrar* bitmap_registrar,
     viz::TransferableResource* transferable_resource,
-    std::unique_ptr<viz::SingleReleaseCallback>* release_callback) {
+    viz::ReleaseCallback* release_callback) {
   // Reuse the |main_thread_context_| if it is not lost. If it is lost, we can't
   // reuse the shared images, they are invalid. If the compositing mode changed,
   // the context will be lost also, so we get both together.
@@ -720,9 +720,9 @@
     image_data_->Unmap();
     swizzled.reset();
 
-    *release_callback = viz::SingleReleaseCallback::Create(
+    *release_callback =
         base::BindOnce(&ReleaseTextureCallback, this->AsWeakPtr(),
-                       main_thread_context_, size, gpu_mailbox));
+                       main_thread_context_, size, gpu_mailbox);
     *transferable_resource = viz::TransferableResource::MakeGL(
         std::move(gpu_mailbox), GL_LINEAR, texture_target,
         std::move(out_sync_token), size, overlays_supported);
@@ -760,9 +760,9 @@
 
   *transferable_resource = viz::TransferableResource::MakeSoftware(
       shared_bitmap->id(), pixel_image_size, viz::RGBA_8888);
-  *release_callback = viz::SingleReleaseCallback::Create(base::BindOnce(
+  *release_callback = base::BindOnce(
       &PepperGraphics2DHost::ReleaseSoftwareCallback, this->AsWeakPtr(),
-      std::move(shared_bitmap), std::move(registration)));
+      std::move(shared_bitmap), std::move(registration));
   composited_output_modified_ = false;
   return true;
 }
diff --git a/content/renderer/pepper/pepper_graphics_2d_host.h b/content/renderer/pepper/pepper_graphics_2d_host.h
index af91079f..431f3d2e 100644
--- a/content/renderer/pepper/pepper_graphics_2d_host.h
+++ b/content/renderer/pepper/pepper_graphics_2d_host.h
@@ -14,6 +14,7 @@
 #include "base/memory/weak_ptr.h"
 #include "cc/paint/paint_canvas.h"
 #include "cc/resources/shared_bitmap_id_registrar.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "content/common/content_export.h"
 #include "gpu/command_buffer/common/mailbox.h"
 #include "gpu/command_buffer/common/sync_token.h"
@@ -34,7 +35,6 @@
 
 namespace viz {
 class RasterContextProvider;
-class SingleReleaseCallback;
 struct TransferableResource;
 }
 
@@ -78,7 +78,7 @@
   bool PrepareTransferableResource(
       cc::SharedBitmapIdRegistrar* bitmap_registrar,
       viz::TransferableResource* transferable_resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* release_callback);
+      viz::ReleaseCallback* release_callback);
   void AttachedToNewLayer();
 
   // Notifications about the view's progress painting.  See PluginInstance.
diff --git a/content/renderer/pepper/pepper_plugin_instance_impl.cc b/content/renderer/pepper/pepper_plugin_instance_impl.cc
index a91ea30..1d06e82 100644
--- a/content/renderer/pepper/pepper_plugin_instance_impl.cc
+++ b/content/renderer/pepper/pepper_plugin_instance_impl.cc
@@ -743,11 +743,10 @@
   if (committed_texture_.mailbox_holder.mailbox.IsZero())
     return;
 
-  std::unique_ptr<viz::SingleReleaseCallback> callback(
-      viz::SingleReleaseCallback::Create(base::BindOnce(
-          &PepperPluginInstanceImpl::FinishedConsumingCommittedTexture,
-          weak_factory_.GetWeakPtr(), committed_texture_,
-          committed_texture_graphics_3d_)));
+  viz::ReleaseCallback callback(base::BindOnce(
+      &PepperPluginInstanceImpl::FinishedConsumingCommittedTexture,
+      weak_factory_.GetWeakPtr(), committed_texture_,
+      committed_texture_graphics_3d_));
 
   IncrementTextureReferenceCount(committed_texture_);
   texture_layer_->SetTransferableResource(committed_texture_,
@@ -2058,7 +2057,7 @@
 bool PepperPluginInstanceImpl::PrepareTransferableResource(
     cc::SharedBitmapIdRegistrar* bitmap_registrar,
     viz::TransferableResource* transferable_resource,
-    std::unique_ptr<viz::SingleReleaseCallback>* release_callback) {
+    viz::ReleaseCallback* release_callback) {
   if (!bound_graphics_2d_platform_)
     return false;
   return bound_graphics_2d_platform_->PrepareTransferableResource(
diff --git a/content/renderer/pepper/pepper_plugin_instance_impl.h b/content/renderer/pepper/pepper_plugin_instance_impl.h
index 24d48c48..d1a75b8 100644
--- a/content/renderer/pepper/pepper_plugin_instance_impl.h
+++ b/content/renderer/pepper/pepper_plugin_instance_impl.h
@@ -476,7 +476,7 @@
   bool PrepareTransferableResource(
       cc::SharedBitmapIdRegistrar* bitmap_registrar,
       viz::TransferableResource* transferable_resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* release_callback) override;
+      viz::ReleaseCallback* release_callback) override;
 
   // RenderFrameObserver
   void AccessibilityModeChanged(const ui::AXMode& mode) override;
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 01da55d..15c6fed 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -345,7 +345,7 @@
   NavigationState* navigation_state =
       NavigationState::FromDocumentLoader(document_loader);
   ui::PageTransition default_transition =
-      navigation_state->IsContentInitiated()
+      navigation_state->IsForSynchronousCommit()
           ? ui::PAGE_TRANSITION_LINK
           : navigation_state->common_params().transition;
   if (navigation_state->WasWithinSameDocument())
@@ -825,7 +825,7 @@
   std::unique_ptr<DocumentState> document_state =
       std::make_unique<DocumentState>();
   InternalDocumentStateData::FromDocumentState(document_state.get())
-      ->set_navigation_state(NavigationState::CreateContentInitiated());
+      ->set_navigation_state(NavigationState::CreateForSynchronousCommit());
   return document_state;
 }
 
@@ -860,7 +860,7 @@
     document_state->set_data_url(common_params.url);
 
   InternalDocumentStateData::FromDocumentState(document_state.get())
-      ->set_navigation_state(NavigationState::CreateBrowserInitiated(
+      ->set_navigation_state(NavigationState::Create(
           common_params.Clone(), commit_params.Clone(),
           std::move(commit_callback), std::move(navigation_client),
           was_initiated_in_this_frame));
@@ -3164,7 +3164,7 @@
     // opposed to a fragment link click, which would have been handled
     // synchronously in the renderer process), therefore
     // |was_initiated_in_this_frame| must be false.
-    internal_data->set_navigation_state(NavigationState::CreateBrowserInitiated(
+    internal_data->set_navigation_state(NavigationState::Create(
         std::move(common_params), std::move(commit_params),
         mojom::NavigationClient::CommitNavigationCallback(), nullptr,
         false /* was_initiated_in_this_frame */));
@@ -3944,7 +3944,7 @@
 
 void RenderFrameImpl::DidFinishSameDocumentNavigation(
     blink::WebHistoryCommitType commit_type,
-    bool content_initiated,
+    bool is_synchronously_committed,
     bool is_history_api_navigation,
     bool is_client_redirect) {
   TRACE_EVENT1("navigation,rail",
@@ -3953,8 +3953,8 @@
   InternalDocumentStateData* data =
       InternalDocumentStateData::FromDocumentLoader(
           frame_->GetDocumentLoader());
-  if (content_initiated)
-    data->set_navigation_state(NavigationState::CreateContentInitiated());
+  if (is_synchronously_committed)
+    data->set_navigation_state(NavigationState::CreateForSynchronousCommit());
   data->navigation_state()->set_was_within_same_document(true);
 
   ui::PageTransition transition =
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 1970ac5..b5639aa 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -544,7 +544,7 @@
   void DidHandleOnloadEvents() override;
   void DidFinishLoad() override;
   void DidFinishSameDocumentNavigation(blink::WebHistoryCommitType commit_type,
-                                       bool content_initiated,
+                                       bool is_synchronously_committed,
                                        bool is_history_api_navigation,
                                        bool is_client_redirect) override;
   void DidSetPageLifecycleState() override;
diff --git a/content/renderer/service_worker/service_worker_provider_context.h b/content/renderer/service_worker/service_worker_provider_context.h
index 79fc21d..e8de4fe 100644
--- a/content/renderer/service_worker/service_worker_provider_context.h
+++ b/content/renderer/service_worker/service_worker_provider_context.h
@@ -30,6 +30,7 @@
 #include "third_party/blink/public/mojom/service_worker/service_worker_object.mojom-forward.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_provider.mojom.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_registration.mojom-forward.h"
+#include "third_party/blink/public/mojom/service_worker/service_worker_worker_client_registry.mojom.h"
 #include "third_party/blink/public/mojom/timing/worker_timing_container.mojom-forward.h"
 #include "third_party/blink/public/mojom/web_feature/web_feature.mojom-forward.h"
 #include "third_party/blink/public/platform/modules/service_worker/web_service_worker_provider_client.h"
diff --git a/content/test/data/accessibility/aria/aria-col-attr-expected-uia-win.txt b/content/test/data/accessibility/aria/aria-col-attr-expected-uia-win.txt
new file mode 100644
index 0000000..480a685
--- /dev/null
+++ b/content/test/data/accessibility/aria/aria-col-attr-expected-uia-win.txt
@@ -0,0 +1,18 @@
+Document
+++DataGrid Grid.ColumnCount=5 Grid.RowCount=2 Selection.CanSelectMultiple=false Selection.IsSelectionRequired=false Table.RowOrColumnMajor='RowMajor'
+++++DataItem
+++++++DataItem Name='cell 2' GridItem.Column=2 GridItem.ColumnSpan=1 GridItem.Row=0 GridItem.RowSpan=1
+++++++++Text Name='cell 2' IsControlElement=false
+++++++DataItem Name='cell 4' GridItem.Column=4 GridItem.ColumnSpan=1 GridItem.Row=0 GridItem.RowSpan=1
+++++++++Text Name='cell 4' IsControlElement=false
+++++++DataItem Name='cell 5' GridItem.Column=5 GridItem.ColumnSpan=1 GridItem.Row=0 GridItem.RowSpan=1
+++++++++Text Name='cell 5' IsControlElement=false
+++++DataItem
+++++++DataItem Name='cell 2' GridItem.Column=0 GridItem.ColumnSpan=1 GridItem.Row=1 GridItem.RowSpan=1
+++++++++Text Name='cell 2' IsControlElement=false
+++++++DataItem Name='cell 3' GridItem.Column=1 GridItem.ColumnSpan=1 GridItem.Row=1 GridItem.RowSpan=1
+++++++++Text Name='cell 3' IsControlElement=false
+++++++DataItem Name='cell 4' GridItem.Column=2 GridItem.ColumnSpan=1 GridItem.Row=1 GridItem.RowSpan=1
+++++++++Text Name='cell 4' IsControlElement=false
+++++++DataItem Name='cell 5' GridItem.Column=3 GridItem.ColumnSpan=1 GridItem.Row=1 GridItem.RowSpan=1
+++++++++Text Name='cell 5' IsControlElement=false
diff --git a/content/test/data/accessibility/aria/aria-grid-expected-uia-win.txt b/content/test/data/accessibility/aria/aria-grid-expected-uia-win.txt
new file mode 100644
index 0000000..8943fa89
--- /dev/null
+++ b/content/test/data/accessibility/aria/aria-grid-expected-uia-win.txt
@@ -0,0 +1,12 @@
+Document
+++DataGrid Grid.ColumnCount=2 Grid.RowCount=2 Selection.CanSelectMultiple=false Selection.IsSelectionRequired=false Table.RowOrColumnMajor='RowMajor'
+++++DataItem
+++++++DataItem Name='Browser' GridItem.Column=0 GridItem.ColumnSpan=1 GridItem.Row=0 GridItem.RowSpan=1
+++++++++Text Name='Browser' IsControlElement=false
+++++++DataItem Name='Rendering Engine' GridItem.Column=1 GridItem.ColumnSpan=1 GridItem.Row=0 GridItem.RowSpan=1
+++++++++Text Name='Rendering Engine' IsControlElement=false
+++++DataItem
+++++++DataItem Name='Chrome' GridItem.Column=0 GridItem.ColumnSpan=1 GridItem.Row=1 GridItem.RowSpan=1
+++++++++Text Name='Chrome' IsControlElement=false
+++++++DataItem Name='Blink' GridItem.Column=1 GridItem.ColumnSpan=1 GridItem.Row=1 GridItem.RowSpan=1
+++++++++Text Name='Blink' IsControlElement=false
diff --git a/content/test/data/accessibility/aria/aria-invalid-expected-android.txt b/content/test/data/accessibility/aria/aria-invalid-expected-android.txt
index 9e06004..353ed55 100644
--- a/content/test/data/accessibility/aria/aria-invalid-expected-android.txt
+++ b/content/test/data/accessibility/aria/aria-invalid-expected-android.txt
@@ -1,7 +1,7 @@
 android.webkit.WebView focusable focused scrollable
 ++android.view.View content_invalid name='invalid=true'
-++android.widget.EditText clickable editable_text focusable has_non_empty_value multiline name='An error via invalid=spelling' text_change_added_count=29
-++android.widget.EditText clickable editable_text focusable has_non_empty_value multiline name='An error via invalid=grammar' text_change_added_count=28
+++android.widget.EditText clickable editable_text focusable has_non_empty_value name='An error via invalid=spelling' text_change_added_count=29
+++android.widget.EditText clickable editable_text focusable has_non_empty_value name='An error via invalid=grammar' text_change_added_count=28
 ++android.view.View name='invalid=false'
 ++android.view.View name='invalid=<empty>'
 ++android.view.View name='invalid=<default>'
diff --git a/content/test/data/accessibility/aria/aria-invalid-expected-blink.txt b/content/test/data/accessibility/aria/aria-invalid-expected-blink.txt
index 3305c3cf..a8cd7c7 100644
--- a/content/test/data/accessibility/aria/aria-invalid-expected-blink.txt
+++ b/content/test/data/accessibility/aria/aria-invalid-expected-blink.txt
@@ -4,7 +4,7 @@
 ++++++genericContainer invalidState=true
 ++++++++staticText name='invalid=true'
 ++++++++++inlineTextBox name='invalid=true'
-++++++textField multiline value='An error via invalid=spelling'
+++++++textField value='An error via invalid=spelling'
 ++++++++staticText name='An '
 ++++++++++inlineTextBox name='An '
 ++++++++genericContainer ariaInvalidValue='spelling' invalidState=other
@@ -12,7 +12,7 @@
 ++++++++++++inlineTextBox name='error' markerTypes=1 markerStarts=0 markerEnds=5
 ++++++++staticText name=' via invalid=spelling'
 ++++++++++inlineTextBox name=' via invalid=spelling'
-++++++textField multiline value='An error via invalid=grammar'
+++++++textField value='An error via invalid=grammar'
 ++++++++staticText name='An '
 ++++++++++inlineTextBox name='An '
 ++++++++genericContainer ariaInvalidValue='grammar' invalidState=other
diff --git a/content/test/data/accessibility/aria/aria-invalid-expected-win.txt b/content/test/data/accessibility/aria/aria-invalid-expected-win.txt
index d5dcccc..59a8d71 100644
--- a/content/test/data/accessibility/aria/aria-invalid-expected-win.txt
+++ b/content/test/data/accessibility/aria/aria-invalid-expected-win.txt
@@ -1,12 +1,12 @@
 ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE offset:0 invalid:true offset:1 offset:6 invalid:unknown offset:7 offset:8 invalid:true offset:9 offset:10 invalid:true ia2_hypertext='<obj0><obj1><obj2><obj3><obj4><obj5><obj6><obj7><obj8><obj9><obj10>'
 ++IA2_ROLE_SECTION IA2_STATE_INVALID_ENTRY offset:0 invalid:true ia2_hypertext='invalid=true'
 ++++ROLE_SYSTEM_STATICTEXT name='invalid=true' offset:0 invalid:true ia2_hypertext='invalid=true'
-++ROLE_SYSTEM_TEXT value='An error via invalid=spelling' FOCUSABLE IA2_STATE_MULTI_LINE offset:0 offset:3 invalid:spelling offset:4 ia2_hypertext='An <obj1> via invalid=spelling'
+++ROLE_SYSTEM_TEXT value='An error via invalid=spelling' FOCUSABLE offset:0 offset:3 invalid:spelling offset:4 ia2_hypertext='An <obj1> via invalid=spelling'
 ++++ROLE_SYSTEM_STATICTEXT name='An ' offset:0 ia2_hypertext='An '
 ++++IA2_ROLE_SECTION IA2_STATE_INVALID_ENTRY offset:0 invalid:spelling ia2_hypertext='error'
 ++++++ROLE_SYSTEM_STATICTEXT name='error' offset:0 invalid:spelling ia2_hypertext='error'
 ++++ROLE_SYSTEM_STATICTEXT name=' via invalid=spelling' offset:0 ia2_hypertext=' via invalid=spelling'
-++ROLE_SYSTEM_TEXT value='An error via invalid=grammar' FOCUSABLE IA2_STATE_MULTI_LINE offset:0 offset:3 invalid:grammar offset:4 ia2_hypertext='An <obj1> via invalid=grammar'
+++ROLE_SYSTEM_TEXT value='An error via invalid=grammar' FOCUSABLE offset:0 offset:3 invalid:grammar offset:4 ia2_hypertext='An <obj1> via invalid=grammar'
 ++++ROLE_SYSTEM_STATICTEXT name='An ' offset:0 ia2_hypertext='An '
 ++++IA2_ROLE_SECTION IA2_STATE_INVALID_ENTRY offset:0 invalid:grammar ia2_hypertext='error'
 ++++++ROLE_SYSTEM_STATICTEXT name='error' offset:0 invalid:grammar ia2_hypertext='error'
diff --git a/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-blink.txt b/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-blink.txt
index 46799ef8..6ea5387 100644
--- a/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-blink.txt
+++ b/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-blink.txt
@@ -1,26 +1,30 @@
 rootWebArea
-++grid ariaColumnCount=3 ariaRowCount=3 tableRowCount=3 tableColumnCount=3
-++++row selected=false
-++++++columnHeader name='Column 1' ariaCellColumnIndex=1 ariaCellRowIndex=1 selected=false
-++++++++staticText name='Column 1'
-++++++columnHeader name='Column 2' ariaCellColumnIndex=2 ariaCellRowIndex=1 selected=false
-++++++++staticText name='Column 2'
-++++++columnHeader name='Column 3' ariaCellColumnIndex=3 ariaCellRowIndex=1 selected=false
-++++++++staticText name='Column 3'
-++++row selected=false
-++++++cell name='Cell A2' ariaCellColumnIndex=2 ariaCellRowIndex=2 selected=false
-++++++++staticText name='Cell A2'
-++++++++++inlineTextBox name='Cell A2'
-++++++cell name='Cell A3' ariaCellColumnIndex=3 ariaCellRowIndex=2 selected=false
-++++++++staticText name='Cell A3'
-++++++++++inlineTextBox name='Cell A3'
-++++row selected=false
-++++++cell name='Cell B1' ariaCellColumnIndex=1 ariaCellRowIndex=3 selected=false
-++++++++staticText name='Cell B1'
-++++++++++inlineTextBox name='Cell B1'
-++++++cell name='Cell B2' ariaCellColumnIndex=2 ariaCellRowIndex=3 selected=false
-++++++++staticText name='Cell B2'
-++++++++++inlineTextBox name='Cell B2'
-++paragraph
-++++staticText name='done'
-++++++inlineTextBox name='done'
+++genericContainer ignored
+++++genericContainer ignored
+++++++grid ariaColumnCount=3 ariaRowCount=3 tableRowCount=3 tableColumnCount=3
+++++++++rowGroup ignored
+++++++++++row
+++++++++++++columnHeader name='Column 1' ariaCellColumnIndex=1 ariaCellRowIndex=1
+++++++++++++++staticText name='Column 1'
+++++++++++++++++inlineTextBox name='Column 1'
+++++++++++++columnHeader name='Column 2' ariaCellColumnIndex=2 ariaCellRowIndex=1
+++++++++++++++staticText name='Column 2'
+++++++++++++++++inlineTextBox name='Column 2'
+++++++++++++columnHeader name='Column 3' ariaCellColumnIndex=3 ariaCellRowIndex=1
+++++++++++++++staticText name='Column 3'
+++++++++++++++++inlineTextBox name='Column 3'
+++++++++++row
+++++++++++++cell name='Cell A2' ariaCellColumnIndex=2 ariaCellRowIndex=2
+++++++++++++++staticText name='Cell A2'
+++++++++++++++++inlineTextBox name='Cell A2'
+++++++++++++cell name='Cell A3' ariaCellColumnIndex=3 ariaCellRowIndex=2
+++++++++++++++staticText name='Cell A3'
+++++++++++++++++inlineTextBox name='Cell A3'
+++++++++++row
+++++++++++++cell name='Cell B1' ariaCellColumnIndex=1 ariaCellRowIndex=3
+++++++++++++++staticText name='Cell B1'
+++++++++++++++++inlineTextBox name='Cell B1'
+++++++++++++cell name='Cell B2' ariaCellColumnIndex=2 ariaCellRowIndex=3
+++++++++++++++staticText name='Cell B2'
+++++++++++++++++inlineTextBox name='Cell B2'
+++++++paragraph ignored
diff --git a/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-mac.txt b/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-mac.txt
index fb7fc51..75c0c9a 100644
--- a/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-mac.txt
+++ b/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-mac.txt
@@ -1,25 +1,43 @@
 AXWebArea
-++AXTable AXARIAColumnCount='3' AXARIARowCount='3'
+++AXTable AXARIAColumnCount=3 AXARIARowCount=3
 ++++AXRow
-++++++AXCell AXARIAColumnIndex='1' AXARIARowIndex='1'
+++++++AXCell AXARIAColumnIndex=1 AXARIARowIndex=1
 ++++++++AXStaticText AXValue='Column 1'
-++++++AXCell AXARIAColumnIndex='2' AXARIARowIndex='1'
+++++++AXCell AXARIAColumnIndex=2 AXARIARowIndex=1
 ++++++++AXStaticText AXValue='Column 2'
-++++++AXCell AXARIAColumnIndex='3' AXARIARowIndex='1'
+++++++AXCell AXARIAColumnIndex=3 AXARIARowIndex=1
 ++++++++AXStaticText AXValue='Column 3'
 ++++AXRow
-++++++AXCell AXARIAColumnIndex='2' AXARIARowIndex='2'
+++++++AXCell AXARIAColumnIndex=2 AXARIARowIndex=2
 ++++++++AXStaticText AXValue='Cell A2'
-++++++AXCell AXARIAColumnIndex='3' AXARIARowIndex='2'
+++++++AXCell AXARIAColumnIndex=3 AXARIARowIndex=2
 ++++++++AXStaticText AXValue='Cell A3'
 ++++AXRow
-++++++AXCell AXARIAColumnIndex='1' AXARIARowIndex='3'
+++++++AXCell AXARIAColumnIndex=1 AXARIARowIndex=3
 ++++++++AXStaticText AXValue='Cell B1'
-++++++AXCell AXARIAColumnIndex='2' AXARIARowIndex='3'
+++++++AXCell AXARIAColumnIndex=2 AXARIARowIndex=3
 ++++++++AXStaticText AXValue='Cell B2'
 ++++AXColumn
+++++++AXCell AXARIAColumnIndex=1 AXARIARowIndex=1
+++++++++AXStaticText AXValue='Column 1'
+++++++AXCell AXARIAColumnIndex=2 AXARIARowIndex=2
+++++++++AXStaticText AXValue='Cell A2'
+++++++AXCell AXARIAColumnIndex=1 AXARIARowIndex=3
+++++++++AXStaticText AXValue='Cell B1'
 ++++AXColumn
+++++++AXCell AXARIAColumnIndex=2 AXARIARowIndex=1
+++++++++AXStaticText AXValue='Column 2'
+++++++AXCell AXARIAColumnIndex=3 AXARIARowIndex=2
+++++++++AXStaticText AXValue='Cell A3'
+++++++AXCell AXARIAColumnIndex=2 AXARIARowIndex=3
+++++++++AXStaticText AXValue='Cell B2'
 ++++AXColumn
+++++++AXCell AXARIAColumnIndex=3 AXARIARowIndex=1
+++++++++AXStaticText AXValue='Column 3'
 ++++AXGroup
-++AXGroup
-++++AXStaticText AXValue='done'
+++++++AXCell AXARIAColumnIndex=1 AXARIARowIndex=1
+++++++++AXStaticText AXValue='Column 1'
+++++++AXCell AXARIAColumnIndex=2 AXARIARowIndex=1
+++++++++AXStaticText AXValue='Column 2'
+++++++AXCell AXARIAColumnIndex=3 AXARIARowIndex=1
+++++++++AXStaticText AXValue='Column 3'
diff --git a/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-uia-win.txt b/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-uia-win.txt
new file mode 100644
index 0000000..c1ba01f
--- /dev/null
+++ b/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-uia-win.txt
@@ -0,0 +1,19 @@
+Document
+++DataGrid Grid.ColumnCount=3 Grid.RowCount=3 Selection.CanSelectMultiple=false Selection.IsSelectionRequired=false Table.RowOrColumnMajor='RowMajor'
+++++DataItem IsControlElement=false
+++++++DataItem Name='Column 1' GridItem.Column=1 GridItem.ColumnSpan=1 GridItem.Row=1 GridItem.RowSpan=1
+++++++++Text Name='Column 1' IsControlElement=false
+++++++DataItem Name='Column 2' GridItem.Column=2 GridItem.ColumnSpan=1 GridItem.Row=1 GridItem.RowSpan=1
+++++++++Text Name='Column 2' IsControlElement=false
+++++++DataItem Name='Column 3' GridItem.Column=3 GridItem.ColumnSpan=1 GridItem.Row=1 GridItem.RowSpan=1
+++++++++Text Name='Column 3' IsControlElement=false
+++++DataItem IsControlElement=false
+++++++DataItem Name='Cell A2' GridItem.Column=2 GridItem.ColumnSpan=1 GridItem.Row=2 GridItem.RowSpan=1
+++++++++Text Name='Cell A2' IsControlElement=false
+++++++DataItem Name='Cell A3' GridItem.Column=3 GridItem.ColumnSpan=1 GridItem.Row=2 GridItem.RowSpan=1
+++++++++Text Name='Cell A3' IsControlElement=false
+++++DataItem IsControlElement=false
+++++++DataItem Name='Cell B1' GridItem.Column=1 GridItem.ColumnSpan=1 GridItem.Row=3 GridItem.RowSpan=1
+++++++++Text Name='Cell B1' IsControlElement=false
+++++++DataItem Name='Cell B2' GridItem.Column=2 GridItem.ColumnSpan=1 GridItem.Row=3 GridItem.RowSpan=1
+++++++++Text Name='Cell B2' IsControlElement=false
diff --git a/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-win.txt b/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-win.txt
index a963493..fadf51d 100644
--- a/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-win.txt
+++ b/content/test/data/accessibility/aria/aria-mismatched-table-attr-expected-win.txt
@@ -1,5 +1,5 @@
 ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE
-++ROLE_SYSTEM_TABLE colcount:3 rowcount:3
+++ROLE_SYSTEM_TABLE
 ++++ROLE_SYSTEM_ROW
 ++++++ROLE_SYSTEM_COLUMNHEADER name='Column 1' colindex:1 rowindex:1
 ++++++++ROLE_SYSTEM_STATICTEXT name='Column 1'
@@ -17,5 +17,3 @@
 ++++++++ROLE_SYSTEM_STATICTEXT name='Cell B1'
 ++++++ROLE_SYSTEM_CELL name='Cell B2' FOCUSABLE colindex:2 rowindex:3
 ++++++++ROLE_SYSTEM_STATICTEXT name='Cell B2'
-++IA2_ROLE_PARAGRAPH
-++++ROLE_SYSTEM_STATICTEXT name='done'
diff --git a/content/test/data/accessibility/aria/aria-mismatched-table-attr.html b/content/test/data/accessibility/aria/aria-mismatched-table-attr.html
index 10f1e096..82eeb35 100644
--- a/content/test/data/accessibility/aria/aria-mismatched-table-attr.html
+++ b/content/test/data/accessibility/aria/aria-mismatched-table-attr.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
-@WAIT-FOR:done
 @WIN-ALLOW:colcount*
 @WIN-ALLOW:colindex*
 @WIN-ALLOW:rowcount*
 @WIN-ALLOW:rowindex*
-@MAC-ALLOW:AXARIAColumnCount
-@MAC-ALLOW:AXARIARowCount
-@MAC-ALLOW:AXARIARowIndex
+@MAC-ALLOW:AXARIAColumnCount*
+@MAC-ALLOW:AXARIARowCount*
+@MAC-ALLOW:AXARIARowIndex*
+@MAC-ALLOW:AXARIAColumnIndex*
 @BLINK-ALLOW:*ColumnCount*
 @BLINK-ALLOW:ariaCellColumnIndex*
 @BLINK-ALLOW:*RowCount*
diff --git a/content/test/data/accessibility/aria/aria-row-attr-expected-uia-win.txt b/content/test/data/accessibility/aria/aria-row-attr-expected-uia-win.txt
new file mode 100644
index 0000000..0c7b8ed
--- /dev/null
+++ b/content/test/data/accessibility/aria/aria-row-attr-expected-uia-win.txt
@@ -0,0 +1,14 @@
+Document
+++DataGrid Grid.ColumnCount=3 Grid.RowCount=5 Selection.CanSelectMultiple=false Selection.IsSelectionRequired=false Table.RowOrColumnMajor='RowMajor'
+++++DataItem
+++++++DataItem Name='cell 2' GridItem.Column=0 GridItem.ColumnSpan=1 GridItem.Row=3 GridItem.RowSpan=1
+++++++++Text Name='cell 2' IsControlElement=false
+++++++DataItem Name='cell 3' GridItem.Column=1 GridItem.ColumnSpan=1 GridItem.Row=3 GridItem.RowSpan=1
+++++++++Text Name='cell 3' IsControlElement=false
+++++++DataItem Name='cell 4' GridItem.Column=2 GridItem.ColumnSpan=1 GridItem.Row=3 GridItem.RowSpan=1
+++++++++Text Name='cell 4' IsControlElement=false
+++++DataItem
+++++++DataItem Name='cell 2' GridItem.Column=0 GridItem.ColumnSpan=1 GridItem.Row=1 GridItem.RowSpan=1
+++++++++Text Name='cell 2' IsControlElement=false
+++++++DataItem Name='cell 3' GridItem.Column=1 GridItem.ColumnSpan=1 GridItem.Row=1 GridItem.RowSpan=1
+++++++++Text Name='cell 3' IsControlElement=false
diff --git a/content/test/data/accessibility/aria/aria-spinbutton-expected-auralinux.txt b/content/test/data/accessibility/aria/aria-spinbutton-expected-auralinux.txt
index 5de7af9..b95bbfd 100644
--- a/content/test/data/accessibility/aria/aria-spinbutton-expected-auralinux.txt
+++ b/content/test/data/accessibility/aria/aria-spinbutton-expected-auralinux.txt
@@ -1,3 +1,5 @@
 [document web]
 ++[spin button] current=5.000000 minimum=0.000000 maximum=0.000000
-++[spin button] current=5.000000 minimum=1.000000 maximum=10.000000
\ No newline at end of file
+++++[static] name='Inner text'
+++[spin button] current=5.000000 minimum=1.000000 maximum=10.000000
+++++[static] name='Inner text'
diff --git a/content/test/data/accessibility/aria/aria-spinbutton-expected-mac.txt b/content/test/data/accessibility/aria/aria-spinbutton-expected-mac.txt
index d4eb9ac..230db30 100644
--- a/content/test/data/accessibility/aria/aria-spinbutton-expected-mac.txt
+++ b/content/test/data/accessibility/aria/aria-spinbutton-expected-mac.txt
@@ -1,3 +1,5 @@
 AXWebArea AXRoleDescription='HTML content'
 ++AXIncrementor AXRoleDescription='stepper' AXValue=5
-++AXIncrementor AXRoleDescription='stepper' AXValue=5
\ No newline at end of file
+++++AXStaticText AXRoleDescription='text' AXValue='Inner text'
+++AXIncrementor AXRoleDescription='stepper' AXValue=5
+++++AXStaticText AXRoleDescription='text' AXValue='Inner text'
diff --git a/content/test/data/accessibility/aria/aria-spinbutton-expected-win.txt b/content/test/data/accessibility/aria/aria-spinbutton-expected-win.txt
index 9b3d44c..7947487e 100644
--- a/content/test/data/accessibility/aria/aria-spinbutton-expected-win.txt
+++ b/content/test/data/accessibility/aria/aria-spinbutton-expected-win.txt
@@ -1,3 +1,5 @@
 ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE ia2_hypertext='<obj0><obj1>'
-++ROLE_SYSTEM_SPINBUTTON value='5' FOCUSABLE currentValue=5.00
-++ROLE_SYSTEM_SPINBUTTON value='5' FOCUSABLE currentValue=5.00 minimumValue=1.00 maximumValue=10.00
\ No newline at end of file
+++ROLE_SYSTEM_SPINBUTTON value='5' FOCUSABLE ia2_hypertext='Inner text' currentValue=5.00
+++++ROLE_SYSTEM_STATICTEXT name='Inner text' ia2_hypertext='Inner text'
+++ROLE_SYSTEM_SPINBUTTON value='5' FOCUSABLE ia2_hypertext='Inner text' currentValue=5.00 minimumValue=1.00 maximumValue=10.00
+++++ROLE_SYSTEM_STATICTEXT name='Inner text' ia2_hypertext='Inner text'
diff --git a/content/test/data/accessibility/aria/aria-textbox-with-rich-text-expected-auralinux.txt b/content/test/data/accessibility/aria/aria-textbox-with-rich-text-expected-auralinux.txt
index 2b136cd..9ba4d7b 100644
--- a/content/test/data/accessibility/aria/aria-textbox-with-rich-text-expected-auralinux.txt
+++ b/content/test/data/accessibility/aria/aria-textbox-with-rich-text-expected-auralinux.txt
@@ -1,9 +1,9 @@
 [document web] caret_offset=0
-++[entry] editable multi-line selectable-text xml-roles:textbox caret_offset=0
+++[entry] editable single-line selectable-text xml-roles:textbox caret_offset=0
 ++++[heading] name='TextBox1' editable xml-roles:heading
 ++++++[static] name='TextBox1' editable
 ++[entry] editable multi-line selectable-text xml-roles:textbox
 ++++[heading] name='TextBox2' editable xml-roles:heading
 ++++++[static] name='TextBox2' editable
 ++++[paragraph] editable
-++++++[static] name='Some text.' editable
\ No newline at end of file
+++++++[static] name='Some text.' editable
diff --git a/content/test/data/accessibility/aria/aria-textbox-with-rich-text-expected-win.txt b/content/test/data/accessibility/aria/aria-textbox-with-rich-text-expected-win.txt
index 6b6e5d3..da8c57ce 100644
--- a/content/test/data/accessibility/aria/aria-textbox-with-rich-text-expected-win.txt
+++ b/content/test/data/accessibility/aria/aria-textbox-with-rich-text-expected-win.txt
@@ -1,9 +1,9 @@
 ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE ia2_hypertext='<obj0><obj1>' n_characters=2 caret_offset=0 n_selections=0
-++ROLE_SYSTEM_TEXT value='TextBox1' FOCUSABLE IA2_STATE_MULTI_LINE xml-roles:textbox ia2_hypertext='<obj0>' n_characters=1 caret_offset=0 n_selections=0
+++ROLE_SYSTEM_TEXT value='TextBox1' FOCUSABLE IA2_STATE_SINGLE_LINE xml-roles:textbox ia2_hypertext='<obj0>' n_characters=1 caret_offset=0 n_selections=0
 ++++IA2_ROLE_HEADING name='TextBox1' xml-roles:heading ia2_hypertext='TextBox1' n_characters=8 n_selections=0
 ++++++ROLE_SYSTEM_STATICTEXT name='TextBox1' ia2_hypertext='TextBox1' n_characters=8 n_selections=0
 ++ROLE_SYSTEM_TEXT value='TextBox2<newline><newline>Some text.' FOCUSABLE IA2_STATE_MULTI_LINE xml-roles:textbox ia2_hypertext='<obj0><obj1>' n_characters=2 n_selections=0
 ++++IA2_ROLE_HEADING name='TextBox2' xml-roles:heading ia2_hypertext='TextBox2' n_characters=8 n_selections=0
 ++++++ROLE_SYSTEM_STATICTEXT name='TextBox2' ia2_hypertext='TextBox2' n_characters=8 n_selections=0
 ++++IA2_ROLE_PARAGRAPH ia2_hypertext='Some text.' n_characters=10 n_selections=0
-++++++ROLE_SYSTEM_STATICTEXT name='Some text.' ia2_hypertext='Some text.' n_characters=10 n_selections=0
\ No newline at end of file
+++++++ROLE_SYSTEM_STATICTEXT name='Some text.' ia2_hypertext='Some text.' n_characters=10 n_selections=0
diff --git a/content/test/data/accessibility/aria/aria-valuemax-expected-auralinux.txt b/content/test/data/accessibility/aria/aria-valuemax-expected-auralinux.txt
index 458f0af1..539751b 100644
--- a/content/test/data/accessibility/aria/aria-valuemax-expected-auralinux.txt
+++ b/content/test/data/accessibility/aria/aria-valuemax-expected-auralinux.txt
@@ -2,4 +2,5 @@
 ++[progress bar] current=51.000000 minimum=1.000000 maximum=101.000000
 ++[scroll bar] current=52.000000 minimum=2.000000 maximum=102.000000
 ++[slider] horizontal current=53.000000 minimum=3.000000 maximum=103.000000
-++[spin button] current=54.000000 minimum=4.000000 maximum=104.000000
\ No newline at end of file
+++[spin button] current=54.000000 minimum=4.000000 maximum=104.000000
+++++[static] name='Spin'
diff --git a/content/test/data/accessibility/aria/aria-valuemax-expected-mac.txt b/content/test/data/accessibility/aria/aria-valuemax-expected-mac.txt
index 36e816d5..b6f49ae82 100644
--- a/content/test/data/accessibility/aria/aria-valuemax-expected-mac.txt
+++ b/content/test/data/accessibility/aria/aria-valuemax-expected-mac.txt
@@ -2,4 +2,5 @@
 ++AXProgressIndicator AXMaxValue=101 AXValue=51
 ++AXScrollBar AXMaxValue=102 AXValue=52
 ++AXSlider AXMaxValue=103 AXValue=53
-++AXIncrementor AXMaxValue=104 AXValue=54
\ No newline at end of file
+++AXIncrementor AXMaxValue=104 AXValue=54
+++++AXStaticText AXValue='Spin'
diff --git a/content/test/data/accessibility/aria/aria-valuemax-expected-win.txt b/content/test/data/accessibility/aria/aria-valuemax-expected-win.txt
index 20b49d4..543b1f83 100644
--- a/content/test/data/accessibility/aria/aria-valuemax-expected-win.txt
+++ b/content/test/data/accessibility/aria/aria-valuemax-expected-win.txt
@@ -2,4 +2,5 @@
 ++ROLE_SYSTEM_PROGRESSBAR value='51' READONLY maximumValue=101.00
 ++ROLE_SYSTEM_SCROLLBAR value='52' maximumValue=102.00
 ++ROLE_SYSTEM_SLIDER value='53' IA2_STATE_HORIZONTAL maximumValue=103.00
-++ROLE_SYSTEM_SPINBUTTON value='54' maximumValue=104.00
\ No newline at end of file
+++ROLE_SYSTEM_SPINBUTTON value='54' maximumValue=104.00
+++++ROLE_SYSTEM_STATICTEXT name='Spin'
diff --git a/content/test/data/accessibility/aria/aria-valuemin-expected-auralinux.txt b/content/test/data/accessibility/aria/aria-valuemin-expected-auralinux.txt
index 458f0af1..539751b 100644
--- a/content/test/data/accessibility/aria/aria-valuemin-expected-auralinux.txt
+++ b/content/test/data/accessibility/aria/aria-valuemin-expected-auralinux.txt
@@ -2,4 +2,5 @@
 ++[progress bar] current=51.000000 minimum=1.000000 maximum=101.000000
 ++[scroll bar] current=52.000000 minimum=2.000000 maximum=102.000000
 ++[slider] horizontal current=53.000000 minimum=3.000000 maximum=103.000000
-++[spin button] current=54.000000 minimum=4.000000 maximum=104.000000
\ No newline at end of file
+++[spin button] current=54.000000 minimum=4.000000 maximum=104.000000
+++++[static] name='Spin'
diff --git a/content/test/data/accessibility/aria/aria-valuemin-expected-mac.txt b/content/test/data/accessibility/aria/aria-valuemin-expected-mac.txt
index fab651f..76077451 100644
--- a/content/test/data/accessibility/aria/aria-valuemin-expected-mac.txt
+++ b/content/test/data/accessibility/aria/aria-valuemin-expected-mac.txt
@@ -2,4 +2,5 @@
 ++AXProgressIndicator AXMinValue=1
 ++AXScrollBar AXMinValue=2
 ++AXSlider AXMinValue=3
-++AXIncrementor AXMinValue=4
\ No newline at end of file
+++AXIncrementor AXMinValue=4
+++++AXStaticText
diff --git a/content/test/data/accessibility/aria/aria-valuemin-expected-win.txt b/content/test/data/accessibility/aria/aria-valuemin-expected-win.txt
index 617d181..46ef6e366 100644
--- a/content/test/data/accessibility/aria/aria-valuemin-expected-win.txt
+++ b/content/test/data/accessibility/aria/aria-valuemin-expected-win.txt
@@ -2,4 +2,5 @@
 ++ROLE_SYSTEM_PROGRESSBAR value='51' READONLY minimumValue=1.00
 ++ROLE_SYSTEM_SCROLLBAR value='52' minimumValue=2.00
 ++ROLE_SYSTEM_SLIDER value='53' IA2_STATE_HORIZONTAL minimumValue=3.00
-++ROLE_SYSTEM_SPINBUTTON value='54' minimumValue=4.00
\ No newline at end of file
+++ROLE_SYSTEM_SPINBUTTON value='54' minimumValue=4.00
+++++ROLE_SYSTEM_STATICTEXT name='Spin'
diff --git a/content/test/data/accessibility/aria/input-text-aria-placeholder-expected-mac.txt b/content/test/data/accessibility/aria/input-text-aria-placeholder-expected-mac.txt
index ba62a8e..8a75fec 100644
--- a/content/test/data/accessibility/aria/input-text-aria-placeholder-expected-mac.txt
+++ b/content/test/data/accessibility/aria/input-text-aria-placeholder-expected-mac.txt
@@ -6,4 +6,4 @@
 ++AXTextField AXDescription='aria-label5' AXHelp='aria-description5' AXPlaceholderValue='placeholder5' AXRoleDescription='text field'
 ++AXGroup AXRoleDescription='group'
 ++++AXStaticText AXRoleDescription='text' AXValue='aria-description5'
-++AXTextField AXDescription='aria-placeholder6' AXHelp='title6' AXPlaceholderValue='aria-placeholder6' AXRoleDescription='text field'
\ No newline at end of file
+++AXTextField AXDescription='aria-placeholder6' AXHelp='title6' AXPlaceholderValue='aria-placeholder6' AXRoleDescription='text field'
diff --git a/content/test/data/accessibility/aria/table-column-hidden-expected-uia-win.txt b/content/test/data/accessibility/aria/table-column-hidden-expected-uia-win.txt
new file mode 100644
index 0000000..1d83b53
--- /dev/null
+++ b/content/test/data/accessibility/aria/table-column-hidden-expected-uia-win.txt
@@ -0,0 +1,25 @@
+Document
+++DataGrid Grid.ColumnCount=5 Grid.RowCount=4 Selection.CanSelectMultiple=false Selection.IsSelectionRequired=false Table.RowOrColumnMajor='RowMajor'
+++++DataItem IsControlElement=false
+++++++DataItem Name='Month' GridItem.Column=2 GridItem.ColumnSpan=1 GridItem.Row=2 GridItem.RowSpan=1
+++++++++Text Name='Month' IsControlElement=false
+++++++DataItem Name='Day' GridItem.Column=3 GridItem.ColumnSpan=1 GridItem.Row=2 GridItem.RowSpan=1
+++++++++Text Name='Day' IsControlElement=false
+++++++DataItem Name='Weather' GridItem.Column=5 GridItem.ColumnSpan=1 GridItem.Row=2 GridItem.RowSpan=1
+++++++++Text Name='Weather' IsControlElement=false
+++++DataItem IsControlElement=false
+++++++DataItem Name='January' GridItem.Column=2 GridItem.ColumnSpan=1 GridItem.Row=3 GridItem.RowSpan=1
+++++++++Text Name='January' IsControlElement=false
+++++++DataItem Name='01' GridItem.Column=3 GridItem.ColumnSpan=1 GridItem.Row=3 GridItem.RowSpan=1
+++++++++Text Name='01' IsControlElement=false
+++++++DataItem Name='Sunny' GridItem.Column=5 GridItem.ColumnSpan=1 GridItem.Row=3 GridItem.RowSpan=1
+++++++++Text Name='Sunny' IsControlElement=false
+++++DataItem IsControlElement=false
+++++++DataItem Name='January' GridItem.Column=2 GridItem.ColumnSpan=1 GridItem.Row=4 GridItem.RowSpan=1
+++++++++Text Name='January' IsControlElement=false
+++++++DataItem Name='02' GridItem.Column=3 GridItem.ColumnSpan=1 GridItem.Row=4 GridItem.RowSpan=1
+++++++++Text Name='02' IsControlElement=false
+++++++DataItem Name='Rainy' GridItem.Column=5 GridItem.ColumnSpan=1 GridItem.Row=4 GridItem.RowSpan=1
+++++++++Text Name='Rainy' IsControlElement=false
+++Group IsControlElement=false
+++++Text Name='done'
diff --git a/content/test/data/accessibility/event/text-selection-changed-expected-auralinux.txt b/content/test/data/accessibility/event/text-selection-changed-expected-auralinux.txt
index 5f24d145..fd408a6 100644
--- a/content/test/data/accessibility/event/text-selection-changed-expected-auralinux.txt
+++ b/content/test/data/accessibility/event/text-selection-changed-expected-auralinux.txt
@@ -13,4 +13,3 @@
 STATE-CHANGE:FOCUSED:FALSE role=ROLE_ENTRY name='input' EDITABLE,ENABLED,FOCUSABLE,SENSITIVE,SHOWING,SINGLE-LINE,VISIBLE,SELECTABLE-TEXT
 STATE-CHANGE:FOCUSED:TRUE role=ROLE_ENTRY name='textarea' EDITABLE,ENABLED,FOCUSABLE,FOCUSED,MULTI-LINE,SENSITIVE,SHOWING,VISIBLE,SELECTABLE-TEXT
 TEXT-CARET-MOVED role=ROLE_ENTRY name='textarea' EDITABLE,ENABLED,FOCUSABLE,FOCUSED,MULTI-LINE,SENSITIVE,SHOWING,VISIBLE,SELECTABLE-TEXT
-TEXT-SELECTION-CHANGED role=ROLE_ENTRY name='textarea' EDITABLE,ENABLED,FOCUSABLE,FOCUSED,MULTI-LINE,SENSITIVE,SHOWING,VISIBLE,SELECTABLE-TEXT
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/action-verbs-expected-blink.txt b/content/test/data/accessibility/html/action-verbs-expected-blink.txt
index 7940831..94d05048 100644
--- a/content/test/data/accessibility/html/action-verbs-expected-blink.txt
+++ b/content/test/data/accessibility/html/action-verbs-expected-blink.txt
@@ -19,7 +19,7 @@
 ++++++++genericContainer
 ++++++textField multiline defaultActionVerb=activate
 ++++++++genericContainer
-++++++textField multiline defaultActionVerb=activate
+++++++textField defaultActionVerb=activate
 ++++++checkBox defaultActionVerb=check checkedState=false
 ++++++checkBox defaultActionVerb=uncheck checkedState=true
 ++++++radioButton defaultActionVerb=check checkedState=false
@@ -59,4 +59,4 @@
 ++++++genericContainer activedescendantId=button
 ++++++++button name='ARIA button that is an active descendant' defaultActionVerb=press
 ++++++++++staticText name='ARIA button that is an active descendant'
-++++++++++++inlineTextBox name='ARIA button that is an active descendant'
\ No newline at end of file
+++++++++++++inlineTextBox name='ARIA button that is an active descendant'
diff --git a/content/test/data/accessibility/html/action-verbs-expected-win.txt b/content/test/data/accessibility/html/action-verbs-expected-win.txt
index 29e24f0..a07d143 100644
--- a/content/test/data/accessibility/html/action-verbs-expected-win.txt
+++ b/content/test/data/accessibility/html/action-verbs-expected-win.txt
@@ -9,7 +9,7 @@
 ++ROLE_SYSTEM_TEXT FOCUSABLE default_action='activate' action_name='activate'
 ++ROLE_SYSTEM_TEXT FOCUSABLE default_action='activate' action_name='activate'
 ++ROLE_SYSTEM_TEXT FOCUSABLE IA2_STATE_MULTI_LINE default_action='activate' action_name='activate'
-++ROLE_SYSTEM_TEXT FOCUSABLE IA2_STATE_MULTI_LINE default_action='activate' action_name='activate'
+++ROLE_SYSTEM_TEXT FOCUSABLE default_action='activate' action_name='activate'
 ++ROLE_SYSTEM_CHECKBUTTON FOCUSABLE IA2_STATE_CHECKABLE checkable:true default_action='check' action_name='check'
 ++ROLE_SYSTEM_CHECKBUTTON CHECKED FOCUSABLE IA2_STATE_CHECKABLE checkable:true default_action='uncheck' action_name='uncheck'
 ++ROLE_SYSTEM_RADIOBUTTON FOCUSABLE IA2_STATE_CHECKABLE checkable:true default_action='check' action_name='check'
@@ -31,4 +31,4 @@
 ++ROLE_SYSTEM_PUSHBUTTON name='ARIA button with tab index' FOCUSABLE default_action='press' action_name='press'
 ++ROLE_SYSTEM_PUSHBUTTON name='ARIA button with negative tab index' FOCUSABLE default_action='press' action_name='press'
 ++IA2_ROLE_SECTION
-++++ROLE_SYSTEM_PUSHBUTTON name='ARIA button that is an active descendant' FOCUSABLE default_action='press' action_name='press'
\ No newline at end of file
+++++ROLE_SYSTEM_PUSHBUTTON name='ARIA button that is an active descendant' FOCUSABLE default_action='press' action_name='press'
diff --git a/content/test/data/accessibility/html/contenteditable-br-disable-ng-layout-expected-blink.txt b/content/test/data/accessibility/html/contenteditable-br-disable-ng-layout-expected-blink.txt
index 69c9afc..0b83919b 100644
--- a/content/test/data/accessibility/html/contenteditable-br-disable-ng-layout-expected-blink.txt
+++ b/content/test/data/accessibility/html/contenteditable-br-disable-ng-layout-expected-blink.txt
@@ -1,11 +1,11 @@
 rootWebArea
 ++genericContainer ignored
 ++++genericContainer ignored
-++++++textField multiline value='A paragraph with a br<newline>inside of it'
+++++++textField value='A paragraph with a br<newline>inside of it'
 ++++++++paragraph
 ++++++++++staticText name='A paragraph with a br' nextOnLineId=inlineTextBox:"<newline>"
 ++++++++++++inlineTextBox name='A paragraph with a br' nextOnLineId=inlineTextBox:"<newline>"
 ++++++++++lineBreak name='<newline>' previousOnLineId=inlineTextBox:"A paragraph with a br"
 ++++++++++++inlineTextBox name='<newline>' previousOnLineId=inlineTextBox:"A paragraph with a br"
 ++++++++++staticText name='inside of it'
-++++++++++++inlineTextBox name='inside of it'
\ No newline at end of file
+++++++++++++inlineTextBox name='inside of it'
diff --git a/content/test/data/accessibility/html/contenteditable-br-expected-blink.txt b/content/test/data/accessibility/html/contenteditable-br-expected-blink.txt
index 69c9afc..0b83919b 100644
--- a/content/test/data/accessibility/html/contenteditable-br-expected-blink.txt
+++ b/content/test/data/accessibility/html/contenteditable-br-expected-blink.txt
@@ -1,11 +1,11 @@
 rootWebArea
 ++genericContainer ignored
 ++++genericContainer ignored
-++++++textField multiline value='A paragraph with a br<newline>inside of it'
+++++++textField value='A paragraph with a br<newline>inside of it'
 ++++++++paragraph
 ++++++++++staticText name='A paragraph with a br' nextOnLineId=inlineTextBox:"<newline>"
 ++++++++++++inlineTextBox name='A paragraph with a br' nextOnLineId=inlineTextBox:"<newline>"
 ++++++++++lineBreak name='<newline>' previousOnLineId=inlineTextBox:"A paragraph with a br"
 ++++++++++++inlineTextBox name='<newline>' previousOnLineId=inlineTextBox:"A paragraph with a br"
 ++++++++++staticText name='inside of it'
-++++++++++++inlineTextBox name='inside of it'
\ No newline at end of file
+++++++++++++inlineTextBox name='inside of it'
diff --git a/content/test/data/accessibility/html/contenteditable-descendants-expected-auralinux.txt b/content/test/data/accessibility/html/contenteditable-descendants-expected-auralinux.txt
index efc977b2..4c3a4dba 100644
--- a/content/test/data/accessibility/html/contenteditable-descendants-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/contenteditable-descendants-expected-auralinux.txt
@@ -15,10 +15,10 @@
 ++++++++++[static] name='Always expose editable tables as tables.' editable
 ++++[list] editable
 ++++++[list item] editable
-++++++++[panel]
+++++++++[panel] editable
 ++++++++++[static] name='1. '
 ++++++++[static] name='Editable list item.' editable
 ++[paragraph]
 ++++[static] name='Non-editable paragraph.'
 ++[paragraph] editable multi-line selectable-text
-++++[static] name='Should keep the role but change the state.' editable
\ No newline at end of file
+++++[static] name='Should keep the role but change the state.' editable
diff --git a/content/test/data/accessibility/html/contenteditable-descendants-expected-blink.txt b/content/test/data/accessibility/html/contenteditable-descendants-expected-blink.txt
index 8175721..ee12142b 100644
--- a/content/test/data/accessibility/html/contenteditable-descendants-expected-blink.txt
+++ b/content/test/data/accessibility/html/contenteditable-descendants-expected-blink.txt
@@ -4,36 +4,36 @@
 ++++++genericContainer editable multiline richlyEditable value='A contenteditable with a link and an  and a .<newline><newline>Always expose editable tables as tables.<newline>Editable list item.' editableRoot=true
 ++++++++paragraph editable richlyEditable
 ++++++++++staticText editable richlyEditable name='A contenteditable with a '
-++++++++++++inlineTextBox editable richlyEditable name='A contenteditable with a '
+++++++++++++inlineTextBox name='A contenteditable with a '
 ++++++++++link editable linked richlyEditable name='link'
 ++++++++++++staticText editable linked richlyEditable name='link'
-++++++++++++++inlineTextBox editable richlyEditable name='link'
+++++++++++++++inlineTextBox name='link'
 ++++++++++staticText editable richlyEditable name=' and an '
-++++++++++++inlineTextBox editable richlyEditable name=' and an '
+++++++++++++inlineTextBox name=' and an '
 ++++++++++image editable richlyEditable name='Image'
 ++++++++++staticText editable richlyEditable name=' and a '
-++++++++++++inlineTextBox editable richlyEditable name=' and a '
+++++++++++++inlineTextBox name=' and a '
 ++++++++++button editable richlyEditable name='Button'
 ++++++++++++staticText name='Button'
 ++++++++++++++inlineTextBox name='Button'
 ++++++++++staticText editable richlyEditable name='.'
-++++++++++++inlineTextBox editable richlyEditable name='.'
+++++++++++++inlineTextBox name='.'
 ++++++++table editable richlyEditable
 ++++++++++rowGroup editable ignored richlyEditable
 ++++++++++++row editable richlyEditable
 ++++++++++++++cell editable richlyEditable name='Always expose editable tables as tables.'
 ++++++++++++++++staticText editable richlyEditable name='Always expose editable tables as tables.'
-++++++++++++++++++inlineTextBox editable richlyEditable name='Always expose editable tables as tables.'
+++++++++++++++++++inlineTextBox name='Always expose editable tables as tables.'
 ++++++++list editable richlyEditable
 ++++++++++listItem editable richlyEditable
-++++++++++++listMarker name='1. '
+++++++++++++listMarker editable richlyEditable name='1. '
 ++++++++++++++staticText name='1. '
 ++++++++++++++++inlineTextBox name='1. '
 ++++++++++++staticText editable richlyEditable name='Editable list item.'
-++++++++++++++inlineTextBox editable richlyEditable name='Editable list item.'
+++++++++++++++inlineTextBox name='Editable list item.'
 ++++++paragraph
 ++++++++staticText name='Non-editable paragraph.'
 ++++++++++inlineTextBox name='Non-editable paragraph.'
 ++++++paragraph editable multiline richlyEditable value='Should keep the role but change the state.' editableRoot=true
 ++++++++staticText editable richlyEditable name='Should keep the role but change the state.'
-++++++++++inlineTextBox editable richlyEditable name='Should keep the role but change the state.'
\ No newline at end of file
+++++++++++inlineTextBox name='Should keep the role but change the state.'
diff --git a/content/test/data/accessibility/html/contenteditable-descendants-expected-win.txt b/content/test/data/accessibility/html/contenteditable-descendants-expected-win.txt
index 8df7632..81243aba 100644
--- a/content/test/data/accessibility/html/contenteditable-descendants-expected-win.txt
+++ b/content/test/data/accessibility/html/contenteditable-descendants-expected-win.txt
@@ -15,7 +15,7 @@
 ++++++++++ROLE_SYSTEM_STATICTEXT name='Always expose editable tables as tables.' IA2_STATE_EDITABLE ia2_hypertext='Always expose editable tables as tables.' n_selections=0
 ++++ROLE_SYSTEM_LIST IA2_STATE_EDITABLE ia2_hypertext='<obj0>' n_selections=0
 ++++++ROLE_SYSTEM_LISTITEM IA2_STATE_EDITABLE ia2_hypertext='<obj0>Editable list item.' n_selections=0
-++++++++IA2_ROLE_REDUNDANT_OBJECT ia2_hypertext='1. ' n_selections=0
+++++++++IA2_ROLE_REDUNDANT_OBJECT IA2_STATE_EDITABLE ia2_hypertext='1. ' n_selections=0
 ++++++++++ROLE_SYSTEM_STATICTEXT name='1. ' ia2_hypertext='1. ' n_selections=0
 ++++++++ROLE_SYSTEM_STATICTEXT name='Editable list item.' IA2_STATE_EDITABLE ia2_hypertext='Editable list item.' n_selections=0
 ++IA2_ROLE_PARAGRAPH ia2_hypertext='Non-editable paragraph.' n_selections=0
diff --git a/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-auralinux.txt b/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-auralinux.txt
index 6452edf..87602c67 100644
--- a/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-auralinux.txt
@@ -15,6 +15,6 @@
 ++++++++++[static] name='Always expose editable tables as tables.' editable selection_start=0 selection_end=3
 ++++[list] editable selection_start=0 selection_end=3
 ++++++[list item] editable selection_start=0 selection_end=3
-++++++++[panel] selection_start=0 selection_end=3
+++++++++[panel] editable selection_start=0 selection_end=3
 ++++++++++[static] name='1. ' selection_start=0 selection_end=3
-++++++++[static] name='Editable list item.' editable selection_start=0 selection_end=3
\ No newline at end of file
+++++++++[static] name='Editable list item.' editable selection_start=0 selection_end=3
diff --git a/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-blink.txt b/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-blink.txt
index e4d20c5..f61c629 100644
--- a/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-blink.txt
+++ b/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-blink.txt
@@ -4,30 +4,30 @@
 ++++++genericContainer editable multiline richlyEditable value='A contenteditable with a link and an  and a .<newline><newline>Always expose editable tables as tables.<newline>Editable list item.' editableRoot=true TreeData.textSelStartOffset=0 TreeData.textSelEndOffset=3
 ++++++++paragraph editable richlyEditable
 ++++++++++staticText editable richlyEditable name='A contenteditable with a '
-++++++++++++inlineTextBox editable richlyEditable name='A contenteditable with a '
+++++++++++++inlineTextBox name='A contenteditable with a '
 ++++++++++link editable richlyEditable name='link'
 ++++++++++++staticText editable richlyEditable name='link'
-++++++++++++++inlineTextBox editable richlyEditable name='link'
+++++++++++++++inlineTextBox name='link'
 ++++++++++staticText editable richlyEditable name=' and an '
-++++++++++++inlineTextBox editable richlyEditable name=' and an '
+++++++++++++inlineTextBox name=' and an '
 ++++++++++image editable richlyEditable name='Image'
 ++++++++++staticText editable richlyEditable name=' and a '
-++++++++++++inlineTextBox editable richlyEditable name=' and a '
+++++++++++++inlineTextBox name=' and a '
 ++++++++++button editable richlyEditable name='Button'
 ++++++++++++staticText name='Button'
 ++++++++++++++inlineTextBox name='Button'
 ++++++++++staticText editable richlyEditable name='.'
-++++++++++++inlineTextBox editable richlyEditable name='.'
+++++++++++++inlineTextBox name='.'
 ++++++++table editable richlyEditable
 ++++++++++rowGroup editable ignored richlyEditable
 ++++++++++++row editable richlyEditable
 ++++++++++++++cell editable richlyEditable name='Always expose editable tables as tables.'
 ++++++++++++++++staticText editable richlyEditable name='Always expose editable tables as tables.'
-++++++++++++++++++inlineTextBox editable richlyEditable name='Always expose editable tables as tables.'
+++++++++++++++++++inlineTextBox name='Always expose editable tables as tables.'
 ++++++++list editable richlyEditable
 ++++++++++listItem editable richlyEditable
-++++++++++++listMarker name='1. '
+++++++++++++listMarker editable richlyEditable name='1. '
 ++++++++++++++staticText name='1. '
 ++++++++++++++++inlineTextBox name='1. '
 ++++++++++++staticText editable richlyEditable name='Editable list item.'
-++++++++++++++inlineTextBox editable richlyEditable name='Editable list item.'
\ No newline at end of file
+++++++++++++++inlineTextBox name='Editable list item.'
diff --git a/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-win.txt b/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-win.txt
index 8960048..a8c8d9b 100644
--- a/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-win.txt
+++ b/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-win.txt
@@ -15,6 +15,6 @@
 ++++++++++ROLE_SYSTEM_STATICTEXT name='Always expose editable tables as tables.' IA2_STATE_EDITABLE ia2_hypertext='Always expose editable tables as tables.' n_selections=1 selection_start=0 selection_end=3
 ++++ROLE_SYSTEM_LIST IA2_STATE_EDITABLE ia2_hypertext='<obj0>' n_selections=1 selection_start=0 selection_end=3
 ++++++ROLE_SYSTEM_LISTITEM IA2_STATE_EDITABLE ia2_hypertext='<obj0>Editable list item.' n_selections=1 selection_start=0 selection_end=3
-++++++++IA2_ROLE_REDUNDANT_OBJECT ia2_hypertext='1. ' n_selections=1 selection_start=0 selection_end=3
+++++++++IA2_ROLE_REDUNDANT_OBJECT IA2_STATE_EDITABLE ia2_hypertext='1. ' n_selections=1 selection_start=0 selection_end=3
 ++++++++++ROLE_SYSTEM_STATICTEXT name='1. ' ia2_hypertext='1. ' n_selections=1 selection_start=0 selection_end=3
 ++++++++ROLE_SYSTEM_STATICTEXT name='Editable list item.' IA2_STATE_EDITABLE ia2_hypertext='Editable list item.' n_selections=1 selection_start=0 selection_end=3
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/contenteditable-docs-li-disable-ng-layout-expected-blink.txt b/content/test/data/accessibility/html/contenteditable-docs-li-disable-ng-layout-expected-blink.txt
index d014d96..6adc191 100644
--- a/content/test/data/accessibility/html/contenteditable-docs-li-disable-ng-layout-expected-blink.txt
+++ b/content/test/data/accessibility/html/contenteditable-docs-li-disable-ng-layout-expected-blink.txt
@@ -1,7 +1,7 @@
 rootWebArea isLineBreakingObject=true
 ++genericContainer ignored isLineBreakingObject=true
 ++++genericContainer ignored isLineBreakingObject=true
-++++++textField multiline value='Beginning<newline><newline>A plain list item<newline>A list item<newline>with a br (line break) inside it<newline><newline>A list item with an inner p role=presentation<newline><newline>A list item with both a br and<newline>an inner p role=presentation<newline><newline>A list item with inner spans on each line<newline>and separated by a br<newline><newline>A list item with a role presentation, and two inner spans, each separated by a space<newline><newline>A list item with a role presentation, and two inner spans,<newline>each separated by a br<newline><newline>Hello world this is like docs markup without the weird presentational br<newline><newline>Hello<newline>world this<newline>is just like docs, and your kitchen sink<newline><newline>The end' isLineBreakingObject=true
+++++++textField value='Beginning<newline><newline>A plain list item<newline>A list item<newline>with a br (line break) inside it<newline><newline>A list item with an inner p role=presentation<newline><newline>A list item with both a br and<newline>an inner p role=presentation<newline><newline>A list item with inner spans on each line<newline>and separated by a br<newline><newline>A list item with a role presentation, and two inner spans, each separated by a space<newline><newline>A list item with a role presentation, and two inner spans,<newline>each separated by a br<newline><newline>Hello world this is like docs markup without the weird presentational br<newline><newline>Hello<newline>world this<newline>is just like docs, and your kitchen sink<newline><newline>The end' isLineBreakingObject=true
 ++++++++paragraph isLineBreakingObject=true
 ++++++++++staticText name='Beginning'
 ++++++++++++inlineTextBox name='Beginning'
diff --git a/content/test/data/accessibility/html/contenteditable-docs-li-expected-blink.txt b/content/test/data/accessibility/html/contenteditable-docs-li-expected-blink.txt
index 3aba6db4..d2fb218 100644
--- a/content/test/data/accessibility/html/contenteditable-docs-li-expected-blink.txt
+++ b/content/test/data/accessibility/html/contenteditable-docs-li-expected-blink.txt
@@ -1,7 +1,7 @@
 rootWebArea isLineBreakingObject=true
 ++genericContainer ignored isLineBreakingObject=true
 ++++genericContainer ignored isLineBreakingObject=true
-++++++textField multiline value='Beginning<newline><newline>A plain list item<newline>A list item<newline>with a br (line break) inside it<newline><newline>A list item with an inner p role=presentation<newline><newline>A list item with both a br and<newline>an inner p role=presentation<newline><newline>A list item with inner spans on each line<newline>and separated by a br<newline><newline>A list item with a role presentation, and two inner spans, each separated by a space<newline><newline>A list item with a role presentation, and two inner spans,<newline>each separated by a br<newline><newline>Hello world this is like docs markup without the weird presentational br<newline><newline>Hello<newline>world this<newline>is just like docs, and your kitchen sink<newline><newline>The end' isLineBreakingObject=true
+++++++textField value='Beginning<newline><newline>A plain list item<newline>A list item<newline>with a br (line break) inside it<newline><newline>A list item with an inner p role=presentation<newline><newline>A list item with both a br and<newline>an inner p role=presentation<newline><newline>A list item with inner spans on each line<newline>and separated by a br<newline><newline>A list item with a role presentation, and two inner spans, each separated by a space<newline><newline>A list item with a role presentation, and two inner spans,<newline>each separated by a br<newline><newline>Hello world this is like docs markup without the weird presentational br<newline><newline>Hello<newline>world this<newline>is just like docs, and your kitchen sink<newline><newline>The end' isLineBreakingObject=true
 ++++++++paragraph isLineBreakingObject=true
 ++++++++++staticText name='Beginning'
 ++++++++++++inlineTextBox name='Beginning'
diff --git a/content/test/data/accessibility/html/contenteditable-spans-disable-ng-layout-expected-blink.txt b/content/test/data/accessibility/html/contenteditable-spans-disable-ng-layout-expected-blink.txt
index 9243d89..750e14ea 100644
--- a/content/test/data/accessibility/html/contenteditable-spans-disable-ng-layout-expected-blink.txt
+++ b/content/test/data/accessibility/html/contenteditable-spans-disable-ng-layout-expected-blink.txt
@@ -1,7 +1,7 @@
 rootWebArea
 ++genericContainer ignored
 ++++genericContainer ignored
-++++++textField multiline value='ABCDEF<newline><newline>XYZ123'
+++++++textField value='ABCDEF<newline><newline>XYZ123'
 ++++++++paragraph
 ++++++++++staticText name='ABC' nextOnLineId=inlineTextBox:"DEF"
 ++++++++++++inlineTextBox name='ABC' nextOnLineId=inlineTextBox:"DEF"
@@ -11,4 +11,4 @@
 ++++++++++staticText name='XYZ' nextOnLineId=inlineTextBox:"123"
 ++++++++++++inlineTextBox name='XYZ' nextOnLineId=inlineTextBox:"123"
 ++++++++++staticText name='123' previousOnLineId=inlineTextBox:"XYZ"
-++++++++++++inlineTextBox name='123' previousOnLineId=inlineTextBox:"XYZ"
\ No newline at end of file
+++++++++++++inlineTextBox name='123' previousOnLineId=inlineTextBox:"XYZ"
diff --git a/content/test/data/accessibility/html/contenteditable-spans-expected-blink.txt b/content/test/data/accessibility/html/contenteditable-spans-expected-blink.txt
index 9243d89..750e14ea 100644
--- a/content/test/data/accessibility/html/contenteditable-spans-expected-blink.txt
+++ b/content/test/data/accessibility/html/contenteditable-spans-expected-blink.txt
@@ -1,7 +1,7 @@
 rootWebArea
 ++genericContainer ignored
 ++++genericContainer ignored
-++++++textField multiline value='ABCDEF<newline><newline>XYZ123'
+++++++textField value='ABCDEF<newline><newline>XYZ123'
 ++++++++paragraph
 ++++++++++staticText name='ABC' nextOnLineId=inlineTextBox:"DEF"
 ++++++++++++inlineTextBox name='ABC' nextOnLineId=inlineTextBox:"DEF"
@@ -11,4 +11,4 @@
 ++++++++++staticText name='XYZ' nextOnLineId=inlineTextBox:"123"
 ++++++++++++inlineTextBox name='XYZ' nextOnLineId=inlineTextBox:"123"
 ++++++++++staticText name='123' previousOnLineId=inlineTextBox:"XYZ"
-++++++++++++inlineTextBox name='123' previousOnLineId=inlineTextBox:"XYZ"
\ No newline at end of file
+++++++++++++inlineTextBox name='123' previousOnLineId=inlineTextBox:"XYZ"
diff --git a/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-auralinux.txt b/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-auralinux.txt
index 04b6beb4..d7b072b 100644
--- a/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-auralinux.txt
@@ -6,5 +6,5 @@
 ++++[static] name='<newline>'
 ++++[paragraph] editable multi-line selectable-text
 ++++++[static] name='But this one is.' editable
-++++[paragraph] editable multi-line selectable-text
-++++++[static] name='So is this one.' editable
\ No newline at end of file
+++++[paragraph] editable
+++++++[static] name='So is this one.' editable
diff --git a/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-blink.txt b/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-blink.txt
index e26ba29..e281d41e 100644
--- a/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-blink.txt
+++ b/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-blink.txt
@@ -4,7 +4,7 @@
 ++++++genericContainer editable multiline richlyEditable value='This is editable.<newline><newline>This is not editable.<newline><newline><newline>But this one is.<newline><newline>So is this one.' editableRoot=true
 ++++++++paragraph editable richlyEditable
 ++++++++++staticText editable richlyEditable name='This is editable.'
-++++++++++++inlineTextBox editable richlyEditable name='This is editable.'
+++++++++++++inlineTextBox name='This is editable.'
 ++++++++genericContainer ignored
 ++++++++++staticText name='This is not editable.'
 ++++++++++++inlineTextBox name='This is not editable.'
@@ -12,7 +12,7 @@
 ++++++++++++inlineTextBox name='<newline>'
 ++++++++++paragraph editable multiline richlyEditable value='But this one is.' editableRoot=true
 ++++++++++++staticText editable richlyEditable name='But this one is.'
-++++++++++++++inlineTextBox editable richlyEditable name='But this one is.'
-++++++++paragraph editable multiline richlyEditable value='So is this one.' editableRoot=true
+++++++++++++++inlineTextBox name='But this one is.'
+++++++++paragraph editable multiline richlyEditable value='So is this one.'
 ++++++++++staticText editable richlyEditable name='So is this one.'
-++++++++++++inlineTextBox editable richlyEditable name='So is this one.'
\ No newline at end of file
+++++++++++++inlineTextBox name='So is this one.'
diff --git a/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-mac.txt b/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-mac.txt
index 83d98fd7..2338f66 100644
--- a/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-mac.txt
+++ b/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-mac.txt
@@ -6,5 +6,5 @@
 ++++AXGroup AXTitle='<newline>'
 ++++AXTextArea AXValue='But this one is.'
 ++++++AXStaticText AXValue='But this one is.'
-++++AXTextArea AXValue='So is this one.'
-++++++AXStaticText AXValue='So is this one.'
\ No newline at end of file
+++++AXGroup
+++++++AXStaticText AXValue='So is this one.'
diff --git a/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-win.txt b/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-win.txt
index 60c6953..4f7b7de9 100644
--- a/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-win.txt
+++ b/content/test/data/accessibility/html/contenteditable-with-embedded-contenteditables-expected-win.txt
@@ -6,5 +6,5 @@
 ++++ROLE_SYSTEM_WHITESPACE name='<newline>' ia2_hypertext='<newline>' n_selections=0
 ++++IA2_ROLE_PARAGRAPH value='But this one is.' FOCUSABLE IA2_STATE_EDITABLE IA2_STATE_MULTI_LINE ia2_hypertext='But this one is.' n_selections=0
 ++++++ROLE_SYSTEM_STATICTEXT name='But this one is.' IA2_STATE_EDITABLE ia2_hypertext='But this one is.' n_selections=0
-++++IA2_ROLE_PARAGRAPH value='So is this one.' IA2_STATE_EDITABLE IA2_STATE_MULTI_LINE ia2_hypertext='So is this one.' n_selections=0
-++++++ROLE_SYSTEM_STATICTEXT name='So is this one.' IA2_STATE_EDITABLE ia2_hypertext='So is this one.' n_selections=0
\ No newline at end of file
+++++IA2_ROLE_PARAGRAPH IA2_STATE_EDITABLE ia2_hypertext='So is this one.' n_selections=0
+++++++ROLE_SYSTEM_STATICTEXT name='So is this one.' IA2_STATE_EDITABLE ia2_hypertext='So is this one.' n_selections=0
diff --git a/content/test/data/accessibility/html/design-mode-expected-blink.txt b/content/test/data/accessibility/html/design-mode-expected-blink.txt
index b4e70bd..8e7177c 100644
--- a/content/test/data/accessibility/html/design-mode-expected-blink.txt
+++ b/content/test/data/accessibility/html/design-mode-expected-blink.txt
@@ -1,6 +1,6 @@
 rootWebArea editable richlyEditable htmlTag='#document'
 ++genericContainer editable ignored richlyEditable htmlTag='html' editableRoot=true
-++++genericContainer editable richlyEditable htmlTag='body' editableRoot=true
+++++genericContainer editable ignored richlyEditable htmlTag='body' editableRoot=true
 ++++++paragraph editable richlyEditable htmlTag='p'
 ++++++++staticText editable richlyEditable name='Hello'
-++++++++++inlineTextBox editable richlyEditable name='Hello'
\ No newline at end of file
+++++++++++inlineTextBox name='Hello'
diff --git a/content/test/data/accessibility/html/input-date-expected-auralinux.txt b/content/test/data/accessibility/html/input-date-expected-auralinux.txt
index d45fba2..7043d05 100644
--- a/content/test/data/accessibility/html/input-date-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/input-date-expected-auralinux.txt
@@ -4,17 +4,23 @@
 ++++++[section]
 ++++++++[section]
 ++++++++++[spin button] name='Month' current=9.000000 minimum=1.000000 maximum=12.000000
+++++++++++++[static] name='09'
 ++++++++++[static] name='/'
 ++++++++++[spin button] name='Day' current=1.000000 minimum=1.000000 maximum=31.000000
+++++++++++++[static] name='01'
 ++++++++++[static] name='/'
 ++++++++++[spin button] name='Year' current=2008.000000 minimum=1.000000 maximum=275760.000000
+++++++++++++[static] name='2008'
 ++++++[push button] name='Show date picker'
 ++++[dateeditor] name='When'
 ++++++[section]
 ++++++++[section]
 ++++++++++[spin button] name='Month When' current=9.000000 minimum=1.000000 maximum=12.000000
+++++++++++++[static] name='09'
 ++++++++++[static] name='/'
 ++++++++++[spin button] name='Day When' current=1.000000 minimum=1.000000 maximum=31.000000
+++++++++++++[static] name='01'
 ++++++++++[static] name='/'
 ++++++++++[spin button] name='Year When' current=2008.000000 minimum=1.000000 maximum=275760.000000
-++++++[push button] name='Show date picker'
\ No newline at end of file
+++++++++++++[static] name='2008'
+++++++[push button] name='Show date picker'
diff --git a/content/test/data/accessibility/html/input-date-expected-mac.txt b/content/test/data/accessibility/html/input-date-expected-mac.txt
index 0ba4cf5..0ec0e39 100644
--- a/content/test/data/accessibility/html/input-date-expected-mac.txt
+++ b/content/test/data/accessibility/html/input-date-expected-mac.txt
@@ -4,17 +4,23 @@
 ++++++AXGroup AXRoleDescription='group'
 ++++++++AXGroup AXRoleDescription='group'
 ++++++++++AXIncrementor AXDescription='Month' AXRoleDescription='stepper' AXValue=9
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='09'
 ++++++++++AXStaticText AXRoleDescription='text' AXValue='/'
 ++++++++++AXIncrementor AXDescription='Day' AXRoleDescription='stepper' AXValue=1
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='01'
 ++++++++++AXStaticText AXRoleDescription='text' AXValue='/'
 ++++++++++AXIncrementor AXDescription='Year' AXRoleDescription='stepper' AXValue=2008
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='2008'
 ++++++AXPopUpButton AXDescription='Show date picker' AXRoleDescription='pop up button'
 ++++AXDateField AXDescription='When' AXRoleDescription='date field' AXValue='2008-09-01'
 ++++++AXGroup AXRoleDescription='group'
 ++++++++AXGroup AXRoleDescription='group'
 ++++++++++AXIncrementor AXDescription='Month When' AXRoleDescription='stepper' AXValue=9
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='09'
 ++++++++++AXStaticText AXRoleDescription='text' AXValue='/'
 ++++++++++AXIncrementor AXDescription='Day When' AXRoleDescription='stepper' AXValue=1
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='01'
 ++++++++++AXStaticText AXRoleDescription='text' AXValue='/'
 ++++++++++AXIncrementor AXDescription='Year When' AXRoleDescription='stepper' AXValue=2008
-++++++AXPopUpButton AXDescription='Show date picker' AXRoleDescription='pop up button'
\ No newline at end of file
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='2008'
+++++++AXPopUpButton AXDescription='Show date picker' AXRoleDescription='pop up button'
diff --git a/content/test/data/accessibility/html/input-date-expected-uia-win.txt b/content/test/data/accessibility/html/input-date-expected-uia-win.txt
index 1f12a4ac..18d3aa8 100644
--- a/content/test/data/accessibility/html/input-date-expected-uia-win.txt
+++ b/content/test/data/accessibility/html/input-date-expected-uia-win.txt
@@ -4,17 +4,23 @@
 ++++++Group IsControlElement=false
 ++++++++Group IsControlElement=false
 ++++++++++Spinner Name='Month' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=12.00 RangeValue.Minimum=1.00 RangeValue.Value=9.00 Value.Value='09'
+++++++++++++Text Name='09'
 ++++++++++Text Name='/'
 ++++++++++Spinner Name='Day' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=31.00 RangeValue.Minimum=1.00 RangeValue.Value=1.00 Value.Value='01'
+++++++++++++Text Name='01'
 ++++++++++Text Name='/'
 ++++++++++Spinner Name='Year' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=275760.00 RangeValue.Minimum=1.00 RangeValue.Value=2008.00 Value.Value='2008'
+++++++++++++Text Name='2008'
 ++++++Button Name='Show date picker' ExpandCollapse.ExpandCollapseState='Collapsed'
 ++++Edit LocalizedControlType='date picker' Name='When' Value.Value='2008-09-01'
 ++++++Group IsControlElement=false
 ++++++++Group IsControlElement=false
 ++++++++++Spinner Name='Month When' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=12.00 RangeValue.Minimum=1.00 RangeValue.Value=9.00 Value.Value='09'
+++++++++++++Text Name='09'
 ++++++++++Text Name='/'
 ++++++++++Spinner Name='Day When' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=31.00 RangeValue.Minimum=1.00 RangeValue.Value=1.00 Value.Value='01'
+++++++++++++Text Name='01'
 ++++++++++Text Name='/'
 ++++++++++Spinner Name='Year When' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=275760.00 RangeValue.Minimum=1.00 RangeValue.Value=2008.00 Value.Value='2008'
-++++++Button Name='Show date picker' ExpandCollapse.ExpandCollapseState='Collapsed'
\ No newline at end of file
+++++++++++++Text Name='2008'
+++++++Button Name='Show date picker' ExpandCollapse.ExpandCollapseState='Collapsed'
diff --git a/content/test/data/accessibility/html/input-date-expected-win.txt b/content/test/data/accessibility/html/input-date-expected-win.txt
index 1499a21..1eebb4c3 100644
--- a/content/test/data/accessibility/html/input-date-expected-win.txt
+++ b/content/test/data/accessibility/html/input-date-expected-win.txt
@@ -3,18 +3,24 @@
 ++++IA2_ROLE_DATE_EDITOR value='2008-09-01' FOCUSABLE ia2_hypertext='<obj0><obj1>'
 ++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>'
 ++++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>/<obj2>/<obj4>'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Month' value='09' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Month' value='09' FOCUSABLE ia2_hypertext='09'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='09' ia2_hypertext='09'
 ++++++++++ROLE_SYSTEM_STATICTEXT name='/' ia2_hypertext='/'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Day' value='01' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Day' value='01' FOCUSABLE ia2_hypertext='01'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='01' ia2_hypertext='01'
 ++++++++++ROLE_SYSTEM_STATICTEXT name='/' ia2_hypertext='/'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Year' value='2008' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Year' value='2008' FOCUSABLE ia2_hypertext='2008'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='2008' ia2_hypertext='2008'
 ++++++ROLE_SYSTEM_BUTTONMENU name='Show date picker' FOCUSABLE HASPOPUP
 ++++IA2_ROLE_DATE_EDITOR name='When' value='2008-09-01' FOCUSABLE ia2_hypertext='<obj0><obj1>'
 ++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>'
 ++++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>/<obj2>/<obj4>'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Month When' value='09' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Month When' value='09' FOCUSABLE ia2_hypertext='09'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='09' ia2_hypertext='09'
 ++++++++++ROLE_SYSTEM_STATICTEXT name='/' ia2_hypertext='/'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Day When' value='01' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Day When' value='01' FOCUSABLE ia2_hypertext='01'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='01' ia2_hypertext='01'
 ++++++++++ROLE_SYSTEM_STATICTEXT name='/' ia2_hypertext='/'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Year When' value='2008' FOCUSABLE
-++++++ROLE_SYSTEM_BUTTONMENU name='Show date picker' FOCUSABLE HASPOPUP
\ No newline at end of file
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Year When' value='2008' FOCUSABLE ia2_hypertext='2008'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='2008' ia2_hypertext='2008'
+++++++ROLE_SYSTEM_BUTTONMENU name='Show date picker' FOCUSABLE HASPOPUP
diff --git a/content/test/data/accessibility/html/input-date-with-popup-open-expected-auralinux.txt b/content/test/data/accessibility/html/input-date-with-popup-open-expected-auralinux.txt
index 1e85fea..93a2f622 100644
--- a/content/test/data/accessibility/html/input-date-with-popup-open-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/input-date-with-popup-open-expected-auralinux.txt
@@ -4,10 +4,13 @@
 ++++++[section]
 ++++++++[section]
 ++++++++++[spin button] name='Month' current=9.000000 minimum=1.000000 maximum=12.000000
+++++++++++++[static] name='09'
 ++++++++++[static] name='/'
 ++++++++++[spin button] name='Day' current=1.000000 minimum=1.000000 maximum=31.000000
+++++++++++++[static] name='01'
 ++++++++++[static] name='/'
 ++++++++++[spin button] name='Year' current=2008.000000 minimum=1.000000 maximum=275760.000000
+++++++++++++[static] name='2008'
 ++++++[push button] name='Show date picker'
 ++++++[document web] controlled-by
 ++++++++[section]
@@ -129,4 +132,4 @@
 ++++++++++++++++++++++++[static] name='10'
 ++++++++++++++++++++++[table cell] name='Saturday, October 11, 2008' selectable (row=5, col=6, row_span=1, col_span=1, n_row_headers=0, n_col_headers=0)
 ++++++++++++++++++++++++[static] name='11'
-++++++++++++++++[push button] name='Today'
\ No newline at end of file
+++++++++++++++++[push button] name='Today'
diff --git a/content/test/data/accessibility/html/input-date-with-popup-open-expected-mac.txt b/content/test/data/accessibility/html/input-date-with-popup-open-expected-mac.txt
index 36099a8..2798338 100644
--- a/content/test/data/accessibility/html/input-date-with-popup-open-expected-mac.txt
+++ b/content/test/data/accessibility/html/input-date-with-popup-open-expected-mac.txt
@@ -4,10 +4,13 @@
 ++++++AXGroup AXRoleDescription='group'
 ++++++++AXGroup AXRoleDescription='group'
 ++++++++++AXIncrementor AXDescription='Month' AXRoleDescription='stepper' AXValue=9
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='09'
 ++++++++++AXStaticText AXRoleDescription='text' AXValue='/'
 ++++++++++AXIncrementor AXDescription='Day' AXRoleDescription='stepper' AXValue=1
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='01'
 ++++++++++AXStaticText AXRoleDescription='text' AXValue='/'
 ++++++++++AXIncrementor AXDescription='Year' AXRoleDescription='stepper' AXValue=2008
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='2008'
 ++++++AXPopUpButton AXDescription='Show date picker' AXRoleDescription='pop up button'
 ++++++AXWebArea AXRoleDescription='HTML content'
 ++++++++AXGroup AXRoleDescription='group'
@@ -221,4 +224,4 @@
 ++++++++++++++++++++AXStaticText AXRoleDescription='text' AXValue='4'
 ++++++++++++++++++AXCell AXDescription='Saturday, October 11, 2008' AXRoleDescription='cell'
 ++++++++++++++++++++AXStaticText AXRoleDescription='text' AXValue='11'
-++++++++++++++++AXGroup AXRoleDescription='group'
\ No newline at end of file
+++++++++++++++++AXGroup AXRoleDescription='group'
diff --git a/content/test/data/accessibility/html/input-date-with-popup-open-expected-uia-win.txt b/content/test/data/accessibility/html/input-date-with-popup-open-expected-uia-win.txt
index e1ca90d..0f5c8f1f 100644
--- a/content/test/data/accessibility/html/input-date-with-popup-open-expected-uia-win.txt
+++ b/content/test/data/accessibility/html/input-date-with-popup-open-expected-uia-win.txt
@@ -4,10 +4,13 @@
 ++++++Group IsControlElement=false
 ++++++++Group IsControlElement=false
 ++++++++++Spinner Name='Month' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=12.00 RangeValue.Minimum=1.00 RangeValue.Value=9.00 Value.Value='09'
+++++++++++++Text Name='09'
 ++++++++++Text Name='/'
 ++++++++++Spinner Name='Day' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=31.00 RangeValue.Minimum=1.00 RangeValue.Value=1.00 Value.Value='01'
+++++++++++++Text Name='01'
 ++++++++++Text Name='/'
 ++++++++++Spinner Name='Year' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=275760.00 RangeValue.Minimum=1.00 RangeValue.Value=2008.00 Value.Value='2008'
+++++++++++++Text Name='2008'
 ++++++Button Name='Show date picker' ExpandCollapse.ExpandCollapseState='Collapsed'
 ++++++Pane Name='Chrome Legacy Window' IsControlElement=false
 ++++++++Document
@@ -130,4 +133,4 @@
 ++++++++++++++++++++++++++Text Name='10' IsControlElement=false
 ++++++++++++++++++++++++DataItem Name='Saturday, October 11, 2008' GridItem.Column=6 GridItem.ColumnSpan=1 GridItem.Row=5 GridItem.RowSpan=1 SelectionItem.IsSelected=false
 ++++++++++++++++++++++++++Text Name='11' IsControlElement=false
-++++++++++++++++++Button Name='Today'
\ No newline at end of file
+++++++++++++++++++Button Name='Today'
diff --git a/content/test/data/accessibility/html/input-date-with-popup-open-expected-win.txt b/content/test/data/accessibility/html/input-date-with-popup-open-expected-win.txt
index 0db0913..513fbb1 100644
--- a/content/test/data/accessibility/html/input-date-with-popup-open-expected-win.txt
+++ b/content/test/data/accessibility/html/input-date-with-popup-open-expected-win.txt
@@ -3,11 +3,14 @@
 ++++IA2_ROLE_DATE_EDITOR value='2008-09-01' FOCUSABLE ia2_hypertext='<obj0><obj1><obj2>'
 ++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>'
 ++++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>/<obj2>/<obj4>'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Month' value='09' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Month' value='09' FOCUSABLE ia2_hypertext='09'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='09' ia2_hypertext='09'
 ++++++++++ROLE_SYSTEM_STATICTEXT name='/' ia2_hypertext='/'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Day' value='01' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Day' value='01' FOCUSABLE ia2_hypertext='01'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='01' ia2_hypertext='01'
 ++++++++++ROLE_SYSTEM_STATICTEXT name='/' ia2_hypertext='/'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Year' value='2008' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Year' value='2008' FOCUSABLE ia2_hypertext='2008'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='2008' ia2_hypertext='2008'
 ++++++ROLE_SYSTEM_BUTTONMENU name='Show date picker' FOCUSABLE HASPOPUP
 ++++++ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE ia2_hypertext='<obj0>'
 ++++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>'
@@ -129,4 +132,4 @@
 ++++++++++++++++++++++++ROLE_SYSTEM_STATICTEXT name='10' ia2_hypertext='10'
 ++++++++++++++++++++++ROLE_SYSTEM_CELL name='Saturday, October 11, 2008' FOCUSABLE ia2_hypertext='11'
 ++++++++++++++++++++++++ROLE_SYSTEM_STATICTEXT name='11' ia2_hypertext='11'
-++++++++++++++++ROLE_SYSTEM_PUSHBUTTON name='Today' FOCUSABLE ia2_hypertext='Today'
\ No newline at end of file
+++++++++++++++++ROLE_SYSTEM_PUSHBUTTON name='Today' FOCUSABLE ia2_hypertext='Today'
diff --git a/content/test/data/accessibility/html/input-datetime-local-expected-auralinux.txt b/content/test/data/accessibility/html/input-datetime-local-expected-auralinux.txt
index 15606cc..04369a6 100644
--- a/content/test/data/accessibility/html/input-datetime-local-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/input-datetime-local-expected-auralinux.txt
@@ -4,14 +4,20 @@
 ++++++[section]
 ++++++++[section]
 ++++++++++[spin button] name='Month' current=0.000000 minimum=1.000000 maximum=12.000000
+++++++++++++[static] name='mm'
 ++++++++++[static] name='/'
 ++++++++++[spin button] name='Day' current=0.000000 minimum=1.000000 maximum=31.000000
+++++++++++++[static] name='dd'
 ++++++++++[static] name='/'
 ++++++++++[spin button] name='Year' current=0.000000 minimum=1.000000 maximum=275760.000000
+++++++++++++[static] name='yyyy'
 ++++++++++[static] name=', '
 ++++++++++[spin button] name='Hours' current=0.000000 minimum=1.000000 maximum=12.000000
+++++++++++++[static] name='--'
 ++++++++++[static] name=':'
 ++++++++++[spin button] name='Minutes' current=0.000000 minimum=0.000000 maximum=59.000000
+++++++++++++[static] name='--'
 ++++++++++[static] name=' '
 ++++++++++[spin button] name='AM/PM' current=0.000000 minimum=1.000000 maximum=2.000000
-++++++[push button] name='Show local date and time picker' haspopup:menu
\ No newline at end of file
+++++++++++++[static] name='--'
+++++++[push button] name='Show local date and time picker' haspopup:menu
diff --git a/content/test/data/accessibility/html/input-datetime-local-expected-uia-win.txt b/content/test/data/accessibility/html/input-datetime-local-expected-uia-win.txt
index 3823fbf..b3510762 100644
--- a/content/test/data/accessibility/html/input-datetime-local-expected-uia-win.txt
+++ b/content/test/data/accessibility/html/input-datetime-local-expected-uia-win.txt
@@ -4,14 +4,20 @@
 ++++++Group IsControlElement=false
 ++++++++Group IsControlElement=false
 ++++++++++Spinner Name='Month' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=12.00 RangeValue.Minimum=1.00 RangeValue.Value=0.00 Value.Value='0'
+++++++++++++Text Name='mm'
 ++++++++++Text Name='/'
 ++++++++++Spinner Name='Day' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=31.00 RangeValue.Minimum=1.00 RangeValue.Value=0.00 Value.Value='0'
+++++++++++++Text Name='dd'
 ++++++++++Text Name='/'
 ++++++++++Spinner Name='Year' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=275760.00 RangeValue.Minimum=1.00 RangeValue.Value=0.00 Value.Value='0'
+++++++++++++Text Name='yyyy'
 ++++++++++Text Name=' '
 ++++++++++Spinner Name='Hours' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=12.00 RangeValue.Minimum=1.00 RangeValue.Value=0.00 Value.Value='0'
+++++++++++++Text Name='--'
 ++++++++++Text Name=':'
 ++++++++++Spinner Name='Minutes' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=59.00 RangeValue.Minimum=0.00 RangeValue.Value=0.00 Value.Value='0'
+++++++++++++Text Name='--'
 ++++++++++Text Name=' '
 ++++++++++Spinner Name='AM/PM' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=2.00 RangeValue.Minimum=1.00 RangeValue.Value=0.00 Value.Value='0'
-++++++Button Name='Show local date and time picker' ExpandCollapse.ExpandCollapseState='Collapsed'
\ No newline at end of file
+++++++++++++Text Name='--'
+++++++Button Name='Show local date and time picker' ExpandCollapse.ExpandCollapseState='Collapsed'
diff --git a/content/test/data/accessibility/html/input-datetime-local-expected-win.txt b/content/test/data/accessibility/html/input-datetime-local-expected-win.txt
index 8a4ad4a..902dad5 100644
--- a/content/test/data/accessibility/html/input-datetime-local-expected-win.txt
+++ b/content/test/data/accessibility/html/input-datetime-local-expected-win.txt
@@ -3,15 +3,21 @@
 ++++IA2_ROLE_DATE_EDITOR FOCUSABLE ia2_hypertext='<obj0><obj1>'
 ++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>'
 ++++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>/<obj2>/<obj4> <obj6>:<obj8> <obj10>'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Month' value='0' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Month' value='0' FOCUSABLE ia2_hypertext='mm'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='mm' ia2_hypertext='mm'
 ++++++++++ROLE_SYSTEM_STATICTEXT name='/' ia2_hypertext='/'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Day' value='0' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Day' value='0' FOCUSABLE ia2_hypertext='dd'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='dd' ia2_hypertext='dd'
 ++++++++++ROLE_SYSTEM_STATICTEXT name='/' ia2_hypertext='/'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Year' value='0' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Year' value='0' FOCUSABLE ia2_hypertext='yyyy'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='yyyy' ia2_hypertext='yyyy'
 ++++++++++ROLE_SYSTEM_STATICTEXT name=' ' ia2_hypertext=' '
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Hours' value='0' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Hours' value='0' FOCUSABLE ia2_hypertext='--'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='--' ia2_hypertext='--'
 ++++++++++ROLE_SYSTEM_STATICTEXT name=':' ia2_hypertext=':'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Minutes' value='0' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Minutes' value='0' FOCUSABLE ia2_hypertext='--'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='--' ia2_hypertext='--'
 ++++++++++ROLE_SYSTEM_STATICTEXT name=' ' ia2_hypertext=' '
-++++++++++ROLE_SYSTEM_SPINBUTTON name='AM/PM' value='0' FOCUSABLE
-++++++ROLE_SYSTEM_BUTTONMENU name='Show local date and time picker' FOCUSABLE HASPOPUP haspopup:menu
\ No newline at end of file
+++++++++++ROLE_SYSTEM_SPINBUTTON name='AM/PM' value='0' FOCUSABLE ia2_hypertext='--'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='--' ia2_hypertext='--'
+++++++ROLE_SYSTEM_BUTTONMENU name='Show local date and time picker' FOCUSABLE HASPOPUP haspopup:menu
diff --git a/content/test/data/accessibility/html/input-month-expected-auralinux.txt b/content/test/data/accessibility/html/input-month-expected-auralinux.txt
index f470085..73c4e5e6 100644
--- a/content/test/data/accessibility/html/input-month-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/input-month-expected-auralinux.txt
@@ -4,6 +4,8 @@
 ++++++[section]
 ++++++++[section]
 ++++++++++[spin button] name='Month' valuetext:0 current=0.000000 minimum=1.000000 maximum=12.000000
+++++++++++++[static] name='---------'
 ++++++++++[static] name=' '
 ++++++++++[spin button] name='Year' valuetext:0 current=0.000000 minimum=1.000000 maximum=275760.000000
-++++++[push button] name='Show month picker' haspopup:menu
\ No newline at end of file
+++++++++++++[static] name='----'
+++++++[push button] name='Show month picker' haspopup:menu
diff --git a/content/test/data/accessibility/html/input-month-expected-mac.txt b/content/test/data/accessibility/html/input-month-expected-mac.txt
index cbefdc2..d3f9891 100644
--- a/content/test/data/accessibility/html/input-month-expected-mac.txt
+++ b/content/test/data/accessibility/html/input-month-expected-mac.txt
@@ -4,6 +4,8 @@
 ++++++AXGroup AXRoleDescription='group'
 ++++++++AXGroup AXRoleDescription='group'
 ++++++++++AXIncrementor AXDescription='Month' AXRoleDescription='stepper' AXValue=0
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='---------'
 ++++++++++AXStaticText AXRoleDescription='text' AXValue=' '
 ++++++++++AXIncrementor AXDescription='Year' AXRoleDescription='stepper' AXValue=0
-++++++AXPopUpButton AXDescription='Show month picker' AXRoleDescription='pop up button'
\ No newline at end of file
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='----'
+++++++AXPopUpButton AXDescription='Show month picker' AXRoleDescription='pop up button'
diff --git a/content/test/data/accessibility/html/input-number-expected-android.txt b/content/test/data/accessibility/html/input-number-expected-android.txt
index fd8b664..eeff4e8 100644
--- a/content/test/data/accessibility/html/input-number-expected-android.txt
+++ b/content/test/data/accessibility/html/input-number-expected-android.txt
@@ -1,4 +1,4 @@
 android.webkit.WebView focusable focused scrollable
 ++android.view.View
-++++android.widget.EditText role_description='spin button' clickable focusable range name='1' item_count=100 input_type=2 range_current_value=1
-++++android.widget.EditText role_description='spin button' clickable focusable range name='6' item_index=20 item_count=100 input_type=2 range_min=5 range_max=10 range_current_value=6
\ No newline at end of file
+++++android.widget.EditText role_description='spin button' clickable editable_text focusable has_non_empty_value range name='1' item_count=100 input_type=2 range_current_value=1 text_change_added_count=1
+++++android.widget.EditText role_description='spin button' clickable editable_text focusable has_non_empty_value range name='6' item_index=20 item_count=100 input_type=2 range_min=5 range_max=10 range_current_value=6 text_change_added_count=1
diff --git a/content/test/data/accessibility/html/input-number-expected-auralinux.txt b/content/test/data/accessibility/html/input-number-expected-auralinux.txt
index 1fea7c5..fd5fff3 100644
--- a/content/test/data/accessibility/html/input-number-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/input-number-expected-auralinux.txt
@@ -1,4 +1,4 @@
 [document web]
 ++[section]
-++++[spin button] valuetext:1 current=1.000000 minimum=0.000000 maximum=0.000000
-++++[spin button] valuetext:6 current=6.000000 minimum=5.000000 maximum=10.000000
\ No newline at end of file
+++++[spin button] selectable-text text-input-type:number valuetext:1 current=1.000000 minimum=0.000000 maximum=0.000000
+++++[spin button] selectable-text text-input-type:number valuetext:6 current=6.000000 minimum=5.000000 maximum=10.000000
diff --git a/content/test/data/accessibility/html/input-number-expected-mac.txt b/content/test/data/accessibility/html/input-number-expected-mac.txt
index 5028bb5..14e6f08f 100644
--- a/content/test/data/accessibility/html/input-number-expected-mac.txt
+++ b/content/test/data/accessibility/html/input-number-expected-mac.txt
@@ -1,4 +1,4 @@
 AXWebArea AXRoleDescription='HTML content'
 ++AXGroup AXRoleDescription='group'
 ++++AXIncrementor AXRoleDescription='stepper' AXValue=1
-++++AXIncrementor AXRoleDescription='stepper' AXValue=6
\ No newline at end of file
+++++AXIncrementor AXRoleDescription='stepper' AXValue=6
diff --git a/content/test/data/accessibility/html/input-number-expected-win.txt b/content/test/data/accessibility/html/input-number-expected-win.txt
index ef0aad1..0d89d868 100644
--- a/content/test/data/accessibility/html/input-number-expected-win.txt
+++ b/content/test/data/accessibility/html/input-number-expected-win.txt
@@ -1,4 +1,4 @@
 ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE ia2_hypertext='<obj0>'
 ++IA2_ROLE_SECTION ia2_hypertext='<obj0><obj1>'
-++++ROLE_SYSTEM_SPINBUTTON value='1' FOCUSABLE valuetext:1 currentValue=1.00
-++++ROLE_SYSTEM_SPINBUTTON value='6' FOCUSABLE valuetext:6 currentValue=6.00 minimumValue=5.00 maximumValue=10.00
\ No newline at end of file
+++++ROLE_SYSTEM_SPINBUTTON value='1' FOCUSABLE valuetext:1 text-input-type:number ia2_hypertext='1' currentValue=1.00
+++++ROLE_SYSTEM_SPINBUTTON value='6' FOCUSABLE valuetext:6 text-input-type:number ia2_hypertext='6' currentValue=6.00 minimumValue=5.00 maximumValue=10.00
diff --git a/content/test/data/accessibility/html/input-text-expected-mac.txt b/content/test/data/accessibility/html/input-text-expected-mac.txt
index 205c932..036501d 100644
--- a/content/test/data/accessibility/html/input-text-expected-mac.txt
+++ b/content/test/data/accessibility/html/input-text-expected-mac.txt
@@ -1,3 +1,3 @@
 AXWebArea AXRoleDescription='HTML content'
 ++AXGroup AXRoleDescription='group'
-++++AXTextField AXDescription='Name' AXEditableAncestor=:3 AXHighestEditableAncestor=:3 AXPlaceholderValue='Name' AXRoleDescription='text field'
\ No newline at end of file
+++++AXTextField AXDescription='Name' AXEditableAncestor=:3 AXHighestEditableAncestor=:3 AXPlaceholderValue='Name' AXRoleDescription='text field'
diff --git a/content/test/data/accessibility/html/input-text-read-only-expected-mac.txt b/content/test/data/accessibility/html/input-text-read-only-expected-mac.txt
index 4fb761da2..31bf17d0 100644
--- a/content/test/data/accessibility/html/input-text-read-only-expected-mac.txt
+++ b/content/test/data/accessibility/html/input-text-read-only-expected-mac.txt
@@ -1,3 +1,3 @@
 AXWebArea AXRoleDescription='HTML content'
 ++AXGroup AXRoleDescription='group'
-++++AXTextField AXDescription='Name' AXPlaceholderValue='Name' AXRoleDescription='text field'
\ No newline at end of file
+++++AXTextField AXDescription='Name' AXPlaceholderValue='Name' AXRoleDescription='text field'
diff --git a/content/test/data/accessibility/html/input-time-expected-auralinux.txt b/content/test/data/accessibility/html/input-time-expected-auralinux.txt
index 386999f..947470c 100644
--- a/content/test/data/accessibility/html/input-time-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/input-time-expected-auralinux.txt
@@ -4,17 +4,23 @@
 ++++++[section]
 ++++++++[section]
 ++++++++++[spin button] name='Hours' xml-roles:spinbutton current=12.000000 minimum=1.000000 maximum=12.000000
+++++++++++++[static] name='12'
 ++++++++++[static] name=':'
 ++++++++++[spin button] name='Minutes' xml-roles:spinbutton current=0.000000 minimum=0.000000 maximum=59.000000
+++++++++++++[static] name='00'
 ++++++++++[static] name=' '
 ++++++++++[spin button] name='AM/PM' xml-roles:spinbutton current=1.000000 minimum=1.000000 maximum=2.000000
+++++++++++++[static] name='AM'
 ++++++[push button] name='Show time picker' xml-roles:button
 ++++[dateeditor] name='Breakfast'
 ++++++[section]
 ++++++++[section]
 ++++++++++[spin button] name='Hours Breakfast' xml-roles:spinbutton current=12.000000 minimum=1.000000 maximum=12.000000
+++++++++++++[static] name='12'
 ++++++++++[static] name=':'
 ++++++++++[spin button] name='Minutes Breakfast' xml-roles:spinbutton current=0.000000 minimum=0.000000 maximum=59.000000
+++++++++++++[static] name='00'
 ++++++++++[static] name=' '
 ++++++++++[spin button] name='AM/PM Breakfast' xml-roles:spinbutton current=1.000000 minimum=1.000000 maximum=2.000000
-++++++[push button] name='Show time picker' xml-roles:button
\ No newline at end of file
+++++++++++++[static] name='AM'
+++++++[push button] name='Show time picker' xml-roles:button
diff --git a/content/test/data/accessibility/html/input-time-expected-uia-win.txt b/content/test/data/accessibility/html/input-time-expected-uia-win.txt
index 989df3df..017e2f92 100644
--- a/content/test/data/accessibility/html/input-time-expected-uia-win.txt
+++ b/content/test/data/accessibility/html/input-time-expected-uia-win.txt
@@ -4,17 +4,23 @@
 ++++++Group IsControlElement=false
 ++++++++Group IsControlElement=false
 ++++++++++Spinner Name='Hours' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=12.00 RangeValue.Minimum=1.00 RangeValue.Value=12.00 Value.Value='12'
+++++++++++++Text Name='12'
 ++++++++++Text Name=':'
 ++++++++++Spinner Name='Minutes' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=59.00 RangeValue.Minimum=0.00 RangeValue.Value=0.00 Value.Value='00'
+++++++++++++Text Name='00'
 ++++++++++Text Name=' '
 ++++++++++Spinner Name='AM/PM' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=2.00 RangeValue.Minimum=1.00 RangeValue.Value=1.00 Value.Value='AM'
+++++++++++++Text Name='AM'
 ++++++Button Name='Show time picker' ExpandCollapse.ExpandCollapseState='Collapsed'
 ++++Group Name='Breakfast' Value.Value='00:00:00'
 ++++++Group IsControlElement=false
 ++++++++Group IsControlElement=false
 ++++++++++Spinner Name='Hours Breakfast' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=12.00 RangeValue.Minimum=1.00 RangeValue.Value=12.00 Value.Value='12'
+++++++++++++Text Name='12'
 ++++++++++Text Name=':'
 ++++++++++Spinner Name='Minutes Breakfast' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=59.00 RangeValue.Minimum=0.00 RangeValue.Value=0.00 Value.Value='00'
+++++++++++++Text Name='00'
 ++++++++++Text Name=' '
 ++++++++++Spinner Name='AM/PM Breakfast' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=2.00 RangeValue.Minimum=1.00 RangeValue.Value=1.00 Value.Value='AM'
-++++++Button Name='Show time picker' ExpandCollapse.ExpandCollapseState='Collapsed'
\ No newline at end of file
+++++++++++++Text Name='AM'
+++++++Button Name='Show time picker' ExpandCollapse.ExpandCollapseState='Collapsed'
diff --git a/content/test/data/accessibility/html/input-time-expected-win.txt b/content/test/data/accessibility/html/input-time-expected-win.txt
index 565b5a8..0925761 100644
--- a/content/test/data/accessibility/html/input-time-expected-win.txt
+++ b/content/test/data/accessibility/html/input-time-expected-win.txt
@@ -3,18 +3,24 @@
 ++++ROLE_SYSTEM_GROUPING value='00:00:00' FOCUSABLE ia2_hypertext='<obj0><obj1>'
 ++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>'
 ++++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>:<obj2> <obj4>'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Hours' value='12' FOCUSABLE xml-roles:spinbutton
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Hours' value='12' FOCUSABLE xml-roles:spinbutton ia2_hypertext='12'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='12' ia2_hypertext='12'
 ++++++++++ROLE_SYSTEM_STATICTEXT name=':' ia2_hypertext=':'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Minutes' value='00' FOCUSABLE xml-roles:spinbutton
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Minutes' value='00' FOCUSABLE xml-roles:spinbutton ia2_hypertext='00'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='00' ia2_hypertext='00'
 ++++++++++ROLE_SYSTEM_STATICTEXT name=' ' ia2_hypertext=' '
-++++++++++ROLE_SYSTEM_SPINBUTTON name='AM/PM' value='AM' FOCUSABLE xml-roles:spinbutton
+++++++++++ROLE_SYSTEM_SPINBUTTON name='AM/PM' value='AM' FOCUSABLE xml-roles:spinbutton ia2_hypertext='AM'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='AM' ia2_hypertext='AM'
 ++++++ROLE_SYSTEM_BUTTONMENU name='Show time picker' FOCUSABLE HASPOPUP xml-roles:button
 ++++ROLE_SYSTEM_GROUPING name='Breakfast' value='00:00:00' FOCUSABLE ia2_hypertext='<obj0><obj1>'
 ++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>'
 ++++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>:<obj2> <obj4>'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Hours Breakfast' value='12' FOCUSABLE xml-roles:spinbutton
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Hours Breakfast' value='12' FOCUSABLE xml-roles:spinbutton ia2_hypertext='12'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='12' ia2_hypertext='12'
 ++++++++++ROLE_SYSTEM_STATICTEXT name=':' ia2_hypertext=':'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Minutes Breakfast' value='00' FOCUSABLE xml-roles:spinbutton
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Minutes Breakfast' value='00' FOCUSABLE xml-roles:spinbutton ia2_hypertext='00'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='00' ia2_hypertext='00'
 ++++++++++ROLE_SYSTEM_STATICTEXT name=' ' ia2_hypertext=' '
-++++++++++ROLE_SYSTEM_SPINBUTTON name='AM/PM Breakfast' value='AM' FOCUSABLE xml-roles:spinbutton
-++++++ROLE_SYSTEM_BUTTONMENU name='Show time picker' FOCUSABLE HASPOPUP xml-roles:button
\ No newline at end of file
+++++++++++ROLE_SYSTEM_SPINBUTTON name='AM/PM Breakfast' value='AM' FOCUSABLE xml-roles:spinbutton ia2_hypertext='AM'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='AM' ia2_hypertext='AM'
+++++++ROLE_SYSTEM_BUTTONMENU name='Show time picker' FOCUSABLE HASPOPUP xml-roles:button
diff --git a/content/test/data/accessibility/html/input-time-with-popup-open-expected-auralinux.txt b/content/test/data/accessibility/html/input-time-with-popup-open-expected-auralinux.txt
index acdf650..78424ae3 100644
--- a/content/test/data/accessibility/html/input-time-with-popup-open-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/input-time-with-popup-open-expected-auralinux.txt
@@ -4,14 +4,19 @@
 ++++++[section]
 ++++++++[section]
 ++++++++++[spin button] name='Hours' current=1.000000 minimum=1.000000 maximum=12.000000
+++++++++++++[static] name='01'
 ++++++++++[static] name=':'
 ++++++++++[spin button] name='Minutes' current=50.000000 minimum=0.000000 maximum=59.000000
+++++++++++++[static] name='50'
 ++++++++++[static] name=':'
 ++++++++++[spin button] name='Seconds' current=2.000000 minimum=0.000000 maximum=59.000000
+++++++++++++[static] name='02'
 ++++++++++[static] name='.'
 ++++++++++[spin button] name='Milliseconds' current=922.000000 minimum=0.000000 maximum=999.000000
+++++++++++++[static] name='922'
 ++++++++++[static] name=' '
 ++++++++++[spin button] name='AM/PM' current=2.000000 minimum=1.000000 maximum=2.000000
+++++++++++++[static] name='PM'
 ++++++[push button] name='Show time picker'
 ++++++[document web]
 ++++++++[section]
@@ -164,4 +169,4 @@
 ++++++++++++++[list item] name='000' selectable
 ++++++++++++[list box] name='AM/PM'
 ++++++++++++++[list item] name='PM' selectable selected
-++++++++++++++[list item] name='AM' selectable
\ No newline at end of file
+++++++++++++++[list item] name='AM' selectable
diff --git a/content/test/data/accessibility/html/input-time-with-popup-open-expected-mac.txt b/content/test/data/accessibility/html/input-time-with-popup-open-expected-mac.txt
index 0eb6df6..9c87420 100644
--- a/content/test/data/accessibility/html/input-time-with-popup-open-expected-mac.txt
+++ b/content/test/data/accessibility/html/input-time-with-popup-open-expected-mac.txt
@@ -4,14 +4,19 @@
 ++++++AXGroup AXRoleDescription='group'
 ++++++++AXGroup AXRoleDescription='group'
 ++++++++++AXIncrementor AXDescription='Hours' AXRoleDescription='stepper' AXValue=1
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='01'
 ++++++++++AXStaticText AXRoleDescription='text' AXValue=':'
 ++++++++++AXIncrementor AXDescription='Minutes' AXRoleDescription='stepper' AXValue=50
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='50'
 ++++++++++AXStaticText AXRoleDescription='text' AXValue=':'
 ++++++++++AXIncrementor AXDescription='Seconds' AXRoleDescription='stepper' AXValue=2
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='02'
 ++++++++++AXStaticText AXRoleDescription='text' AXValue='.'
 ++++++++++AXIncrementor AXDescription='Milliseconds' AXRoleDescription='stepper' AXValue=922
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='922'
 ++++++++++AXStaticText AXRoleDescription='text' AXValue=' '
 ++++++++++AXIncrementor AXDescription='AM/PM' AXRoleDescription='stepper' AXValue=2
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='PM'
 ++++++AXPopUpButton AXDescription='Show time picker' AXRoleDescription='pop up button'
 ++++++AXWebArea AXRoleDescription='HTML content'
 ++++++++AXGroup AXRoleDescription='group'
@@ -164,4 +169,4 @@
 ++++++++++++++AXStaticText AXRoleDescription='text' AXValue='000'
 ++++++++++++AXList AXDescription='AM/PM' AXRoleDescription='list'
 ++++++++++++++AXStaticText AXRoleDescription='text' AXValue='PM'
-++++++++++++++AXStaticText AXRoleDescription='text' AXValue='AM'
\ No newline at end of file
+++++++++++++++AXStaticText AXRoleDescription='text' AXValue='AM'
diff --git a/content/test/data/accessibility/html/input-time-with-popup-open-expected-uia-win.txt b/content/test/data/accessibility/html/input-time-with-popup-open-expected-uia-win.txt
index 28953ce..a04fb80 100644
--- a/content/test/data/accessibility/html/input-time-with-popup-open-expected-uia-win.txt
+++ b/content/test/data/accessibility/html/input-time-with-popup-open-expected-uia-win.txt
@@ -4,14 +4,19 @@
 ++++++Group IsControlElement=false
 ++++++++Group IsControlElement=false
 ++++++++++Spinner Name='Hours' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=12.00 RangeValue.Minimum=1.00 RangeValue.Value=1.00 Value.Value='01'
+++++++++++++Text Name='01'
 ++++++++++Text Name=':'
 ++++++++++Spinner Name='Minutes' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=59.00 RangeValue.Minimum=0.00 RangeValue.Value=50.00 Value.Value='50'
+++++++++++++Text Name='50'
 ++++++++++Text Name=':'
 ++++++++++Spinner Name='Seconds' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=59.00 RangeValue.Minimum=0.00 RangeValue.Value=2.00 Value.Value='02'
+++++++++++++Text Name='02'
 ++++++++++Text Name='.'
 ++++++++++Spinner Name='Milliseconds' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=999.00 RangeValue.Minimum=0.00 RangeValue.Value=922.00 Value.Value='922'
+++++++++++++Text Name='922'
 ++++++++++Text Name=' '
 ++++++++++Spinner Name='AM/PM' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=2.00 RangeValue.Minimum=1.00 RangeValue.Value=2.00 Value.Value='PM'
+++++++++++++Text Name='PM'
 ++++++Button Name='Show time picker' ExpandCollapse.ExpandCollapseState='Collapsed'
 ++++++Pane Name='Chrome Legacy Window' IsControlElement=false
 ++++++++Document
@@ -165,4 +170,4 @@
 ++++++++++++++++ListItem Name='000' SelectionItem.IsSelected=false SelectionItem.SelectionContainer='Milliseconds'
 ++++++++++++++List Name='AM/PM' Selection.CanSelectMultiple=false Selection.IsSelectionRequired=false
 ++++++++++++++++ListItem Name='PM' SelectionItem.IsSelected=true SelectionItem.SelectionContainer='AM/PM'
-++++++++++++++++ListItem Name='AM' SelectionItem.IsSelected=false SelectionItem.SelectionContainer='AM/PM'
\ No newline at end of file
+++++++++++++++++ListItem Name='AM' SelectionItem.IsSelected=false SelectionItem.SelectionContainer='AM/PM'
diff --git a/content/test/data/accessibility/html/input-time-with-popup-open-expected-win.txt b/content/test/data/accessibility/html/input-time-with-popup-open-expected-win.txt
index 3db3c817..66b61a0 100644
--- a/content/test/data/accessibility/html/input-time-with-popup-open-expected-win.txt
+++ b/content/test/data/accessibility/html/input-time-with-popup-open-expected-win.txt
@@ -3,15 +3,20 @@
 ++++ROLE_SYSTEM_GROUPING value='13:50:02.922' FOCUSABLE ia2_hypertext='<obj0><obj1><obj2>'
 ++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>'
 ++++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>:<obj2>:<obj4>.<obj6> <obj8>'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Hours' value='01' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Hours' value='01' FOCUSABLE ia2_hypertext='01'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='01' ia2_hypertext='01'
 ++++++++++ROLE_SYSTEM_STATICTEXT name=':' ia2_hypertext=':'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Minutes' value='50' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Minutes' value='50' FOCUSABLE ia2_hypertext='50'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='50' ia2_hypertext='50'
 ++++++++++ROLE_SYSTEM_STATICTEXT name=':' ia2_hypertext=':'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Seconds' value='02'
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Seconds' value='02' ia2_hypertext='02'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='02' ia2_hypertext='02'
 ++++++++++ROLE_SYSTEM_STATICTEXT name='.' ia2_hypertext='.'
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Milliseconds' value='922'
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Milliseconds' value='922' ia2_hypertext='922'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='922' ia2_hypertext='922'
 ++++++++++ROLE_SYSTEM_STATICTEXT name=' ' ia2_hypertext=' '
-++++++++++ROLE_SYSTEM_SPINBUTTON name='AM/PM' value='PM' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='AM/PM' value='PM' FOCUSABLE ia2_hypertext='PM'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='PM' ia2_hypertext='PM'
 ++++++ROLE_SYSTEM_BUTTONMENU name='Show time picker' FOCUSABLE HASPOPUP
 ++++++ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE ia2_hypertext='<obj0>'
 ++++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>'
@@ -164,4 +169,4 @@
 ++++++++++++++ROLE_SYSTEM_LISTITEM name='000' FOCUSABLE ia2_hypertext='000'
 ++++++++++++ROLE_SYSTEM_LIST name='AM/PM' FOCUSABLE ia2_hypertext='<obj0><obj1>'
 ++++++++++++++ROLE_SYSTEM_LISTITEM name='PM' SELECTED FOCUSABLE ia2_hypertext='PM'
-++++++++++++++ROLE_SYSTEM_LISTITEM name='AM' FOCUSABLE ia2_hypertext='AM'
\ No newline at end of file
+++++++++++++++ROLE_SYSTEM_LISTITEM name='AM' FOCUSABLE ia2_hypertext='AM'
diff --git a/content/test/data/accessibility/html/input-types-expected-android.txt b/content/test/data/accessibility/html/input-types-expected-android.txt
index e609550..7d97f1e 100644
--- a/content/test/data/accessibility/html/input-types-expected-android.txt
+++ b/content/test/data/accessibility/html/input-types-expected-android.txt
@@ -21,7 +21,7 @@
 ++++++android.widget.Button role_description='button' clickable focusable name='Image:'
 ++++android.view.View
 ++++++android.widget.TextView name='Number: '
-++++++android.widget.EditText role_description='spin button' clickable focusable range name='Number:' item_count=100 input_type=2
+++++++android.widget.EditText role_description='spin button' clickable editable_text focusable range name='Number:' item_count=100 input_type=2
 ++++android.view.View
 ++++++android.widget.TextView name='Password: '
 ++++++android.widget.EditText clickable editable_text focusable password hint='Password:' input_type=225
@@ -46,4 +46,4 @@
 ++++++android.widget.EditText clickable editable_text focusable hint='Text:' input_type=1
 ++++android.view.View
 ++++++android.widget.TextView name='Url: '
-++++++android.widget.EditText clickable editable_text focusable hint='Url:' input_type=17
\ No newline at end of file
+++++++android.widget.EditText clickable editable_text focusable hint='Url:' input_type=17
diff --git a/content/test/data/accessibility/html/input-types-expected-auralinux.txt b/content/test/data/accessibility/html/input-types-expected-auralinux.txt
index 30e1efa..9502421 100644
--- a/content/test/data/accessibility/html/input-types-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/input-types-expected-auralinux.txt
@@ -24,7 +24,7 @@
 ++++++++[static] name='Submit'
 ++++[label] label-for
 ++++++[static] name='Number: '
-++++++[spin button] name='Number:' labelled-by current=0.000000 minimum=0.000000 maximum=0.000000
+++++++[spin button] name='Number:' selectable-text labelled-by text-input-type:number current=0.000000 minimum=0.000000 maximum=0.000000
 ++++[label] label-for
 ++++++[static] name='Password: '
 ++++++[password text] name='Password:' selectable-text labelled-by text-input-type:password
@@ -49,4 +49,4 @@
 ++++++[entry] name='Text:' selectable-text labelled-by text-input-type:text
 ++++[label] label-for
 ++++++[static] name='Url: '
-++++++[entry] name='Url:' selectable-text labelled-by text-input-type:url
\ No newline at end of file
+++++++[entry] name='Url:' selectable-text labelled-by text-input-type:url
diff --git a/content/test/data/accessibility/html/input-types-expected-blink.txt b/content/test/data/accessibility/html/input-types-expected-blink.txt
index 2210597..a7b5e192 100644
--- a/content/test/data/accessibility/html/input-types-expected-blink.txt
+++ b/content/test/data/accessibility/html/input-types-expected-blink.txt
@@ -4,7 +4,7 @@
 ++++++labelText
 ++++++++staticText name='Default: '
 ++++++++++inlineTextBox name='Default: '
-++++++++textField editable name='Default:'
+++++++++textField editable name='Default:' editableRoot=true
 ++++++++++genericContainer editable
 ++++++labelText
 ++++++++staticText name='Button: '
@@ -20,7 +20,7 @@
 ++++++labelText
 ++++++++staticText name='Email: '
 ++++++++++inlineTextBox name='Email: '
-++++++++textField editable name='Email:'
+++++++++textField editable name='Email:' editableRoot=true
 ++++++++++genericContainer editable
 ++++++labelText
 ++++++++staticText name='File: '
@@ -41,7 +41,7 @@
 ++++++labelText
 ++++++++staticText name='Number: '
 ++++++++++inlineTextBox name='Number: '
-++++++++spinButton editable name='Number:'
+++++++++spinButton editable name='Number:' editableRoot=true
 ++++++++++genericContainer ignored
 ++++++++++++genericContainer ignored
 ++++++++++++++genericContainer editable
@@ -49,7 +49,7 @@
 ++++++labelText
 ++++++++staticText name='Password: '
 ++++++++++inlineTextBox name='Password: '
-++++++++textField editable protected name='Password:'
+++++++++textField editable protected name='Password:' editableRoot=true
 ++++++++++genericContainer editable
 ++++++radioButton name='Radio:' checkedState=false
 ++++++labelText
@@ -65,7 +65,7 @@
 ++++++labelText
 ++++++++staticText name='Search: '
 ++++++++++inlineTextBox name='Search: '
-++++++++searchBox editable name='Search:'
+++++++++searchBox editable name='Search:' editableRoot=true
 ++++++++++genericContainer ignored
 ++++++++++++genericContainer ignored
 ++++++++++++++genericContainer editable
@@ -79,15 +79,15 @@
 ++++++labelText
 ++++++++staticText name='Tel: '
 ++++++++++inlineTextBox name='Tel: '
-++++++++textField editable name='Tel:'
+++++++++textField editable name='Tel:' editableRoot=true
 ++++++++++genericContainer editable
 ++++++labelText
 ++++++++staticText name='Text: '
 ++++++++++inlineTextBox name='Text: '
-++++++++textField editable name='Text:'
+++++++++textField editable name='Text:' editableRoot=true
 ++++++++++genericContainer editable
 ++++++labelText
 ++++++++staticText name='Url: '
 ++++++++++inlineTextBox name='Url: '
-++++++++textField editable name='Url:'
+++++++++textField editable name='Url:' editableRoot=true
 ++++++++++genericContainer editable
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/input-types-expected-mac.txt b/content/test/data/accessibility/html/input-types-expected-mac.txt
index d4b2efc..7246d2fb 100644
--- a/content/test/data/accessibility/html/input-types-expected-mac.txt
+++ b/content/test/data/accessibility/html/input-types-expected-mac.txt
@@ -49,4 +49,4 @@
 ++++++AXTextField AXTitle='Text:'
 ++++AXGroup
 ++++++AXStaticText AXValue='Url: '
-++++++AXTextField AXTitle='Url:'
\ No newline at end of file
+++++++AXTextField AXTitle='Url:'
diff --git a/content/test/data/accessibility/html/input-types-expected-win.txt b/content/test/data/accessibility/html/input-types-expected-win.txt
index 02654a1..b459e064 100644
--- a/content/test/data/accessibility/html/input-types-expected-win.txt
+++ b/content/test/data/accessibility/html/input-types-expected-win.txt
@@ -24,7 +24,7 @@
 ++++++++ROLE_SYSTEM_STATICTEXT name='Submit'
 ++++IA2_ROLE_LABEL
 ++++++ROLE_SYSTEM_STATICTEXT name='Number: '
-++++++ROLE_SYSTEM_SPINBUTTON name='Number:' FOCUSABLE
+++++++ROLE_SYSTEM_SPINBUTTON name='Number:' FOCUSABLE text-input-type:number
 ++++IA2_ROLE_LABEL
 ++++++ROLE_SYSTEM_STATICTEXT name='Password: '
 ++++++ROLE_SYSTEM_TEXT name='Password:' FOCUSABLE PROTECTED text-input-type:password
diff --git a/content/test/data/accessibility/html/input-types-with-placeholder-expected-blink.txt b/content/test/data/accessibility/html/input-types-with-placeholder-expected-blink.txt
index ee6bfa0..3fb2b1f 100644
--- a/content/test/data/accessibility/html/input-types-with-placeholder-expected-blink.txt
+++ b/content/test/data/accessibility/html/input-types-with-placeholder-expected-blink.txt
@@ -4,13 +4,13 @@
 ++++++labelText
 ++++++++staticText name='Email: '
 ++++++++++inlineTextBox name='Email: '
-++++++++textField editable name='Email:' placeholder='email@example.com'
+++++++++textField editable name='Email:' placeholder='email@example.com' editableRoot=true
 ++++++++++genericContainer ignored
 ++++++++++genericContainer editable
 ++++++labelText
 ++++++++staticText name='Number: '
 ++++++++++inlineTextBox name='Number: '
-++++++++spinButton editable name='Number:' placeholder='3'
+++++++++spinButton editable name='Number:' placeholder='3' editableRoot=true
 ++++++++++genericContainer ignored
 ++++++++++genericContainer ignored
 ++++++++++++genericContainer ignored
@@ -19,13 +19,13 @@
 ++++++labelText
 ++++++++staticText name='Password: '
 ++++++++++inlineTextBox name='Password: '
-++++++++textField editable protected name='Password:' placeholder='pwd'
+++++++++textField editable protected name='Password:' placeholder='pwd' editableRoot=true
 ++++++++++genericContainer ignored
 ++++++++++genericContainer editable
 ++++++labelText
 ++++++++staticText name='Search: '
 ++++++++++inlineTextBox name='Search: '
-++++++++searchBox editable name='Search:' placeholder='search'
+++++++++searchBox editable name='Search:' placeholder='search' editableRoot=true
 ++++++++++genericContainer ignored
 ++++++++++genericContainer ignored
 ++++++++++++genericContainer ignored
@@ -34,18 +34,18 @@
 ++++++labelText
 ++++++++staticText name='Tel: '
 ++++++++++inlineTextBox name='Tel: '
-++++++++textField editable name='Tel:' placeholder='555-1212'
+++++++++textField editable name='Tel:' placeholder='555-1212' editableRoot=true
 ++++++++++genericContainer ignored
 ++++++++++genericContainer editable
 ++++++labelText
 ++++++++staticText name='Text: '
 ++++++++++inlineTextBox name='Text: '
-++++++++textField editable name='Text:' placeholder='just text'
+++++++++textField editable name='Text:' placeholder='just text' editableRoot=true
 ++++++++++genericContainer ignored
 ++++++++++genericContainer editable
 ++++++labelText
 ++++++++staticText name='Url: '
 ++++++++++inlineTextBox name='Url: '
-++++++++textField editable name='Url:' placeholder='https://www.example.com'
+++++++++textField editable name='Url:' placeholder='https://www.example.com' editableRoot=true
 ++++++++++genericContainer ignored
-++++++++++genericContainer editable
\ No newline at end of file
+++++++++++genericContainer editable
diff --git a/content/test/data/accessibility/html/input-types-with-value-and-placeholder-expected-blink.txt b/content/test/data/accessibility/html/input-types-with-value-and-placeholder-expected-blink.txt
index bfa6ae4..0143d98 100644
--- a/content/test/data/accessibility/html/input-types-with-value-and-placeholder-expected-blink.txt
+++ b/content/test/data/accessibility/html/input-types-with-value-and-placeholder-expected-blink.txt
@@ -4,62 +4,62 @@
 ++++++labelText
 ++++++++staticText name='Email: '
 ++++++++++inlineTextBox name='Email: '
-++++++++textField editable name='Email:' placeholder='placeholder' value='email@example.com'
+++++++++textField editable name='Email:' placeholder='placeholder' value='email@example.com' editableRoot=true
 ++++++++++genericContainer ignored invisible
 ++++++++++genericContainer editable
 ++++++++++++staticText editable name='email@example.com'
-++++++++++++++inlineTextBox editable name='email@example.com'
+++++++++++++++inlineTextBox name='email@example.com'
 ++++++labelText
 ++++++++staticText name='Number: '
 ++++++++++inlineTextBox name='Number: '
-++++++++spinButton editable name='Number:' placeholder='placeholder' value='3' valueForRange=3.00
+++++++++spinButton editable name='Number:' placeholder='placeholder' value='3' editableRoot=true valueForRange=3.00
 ++++++++++genericContainer ignored invisible
 ++++++++++genericContainer ignored
 ++++++++++++genericContainer ignored
 ++++++++++++++genericContainer editable
 ++++++++++++++++staticText editable name='3'
-++++++++++++++++++inlineTextBox editable name='3'
+++++++++++++++++++inlineTextBox name='3'
 ++++++++++++genericContainer ignored
 ++++++labelText
 ++++++++staticText name='Password: '
 ++++++++++inlineTextBox name='Password: '
-++++++++textField editable protected name='Password:' placeholder='placeholder' value='%E2%80%A2%E2%80%A2%E2%80%A2'
+++++++++textField editable protected name='Password:' placeholder='placeholder' value='%E2%80%A2%E2%80%A2%E2%80%A2' editableRoot=true
 ++++++++++genericContainer ignored invisible
 ++++++++++genericContainer editable
 ++++++++++++staticText editable name='%E2%80%A2%E2%80%A2%E2%80%A2'
-++++++++++++++inlineTextBox editable name='%E2%80%A2%E2%80%A2%E2%80%A2'
+++++++++++++++inlineTextBox name='%E2%80%A2%E2%80%A2%E2%80%A2'
 ++++++labelText
 ++++++++staticText name='Search: '
 ++++++++++inlineTextBox name='Search: '
-++++++++searchBox editable name='Search:' placeholder='placeholder' value='search'
+++++++++searchBox editable name='Search:' placeholder='placeholder' value='search' editableRoot=true
 ++++++++++genericContainer ignored invisible
 ++++++++++genericContainer ignored
 ++++++++++++genericContainer ignored
 ++++++++++++++genericContainer editable
 ++++++++++++++++staticText editable name='search'
-++++++++++++++++++inlineTextBox editable name='search'
+++++++++++++++++++inlineTextBox name='search'
 ++++++++++++genericContainer ignored
 ++++++labelText
 ++++++++staticText name='Tel: '
 ++++++++++inlineTextBox name='Tel: '
-++++++++textField editable name='Tel:' placeholder='placeholder' value='555-1212'
+++++++++textField editable name='Tel:' placeholder='placeholder' value='555-1212' editableRoot=true
 ++++++++++genericContainer ignored invisible
 ++++++++++genericContainer editable
 ++++++++++++staticText editable name='555-1212'
-++++++++++++++inlineTextBox editable name='555-1212'
+++++++++++++++inlineTextBox name='555-1212'
 ++++++labelText
 ++++++++staticText name='Text: '
 ++++++++++inlineTextBox name='Text: '
-++++++++textField editable name='Text:' placeholder='placeholder' value='just text'
+++++++++textField editable name='Text:' placeholder='placeholder' value='just text' editableRoot=true
 ++++++++++genericContainer ignored invisible
 ++++++++++genericContainer editable
 ++++++++++++staticText editable name='just text'
-++++++++++++++inlineTextBox editable name='just text'
+++++++++++++++inlineTextBox name='just text'
 ++++++labelText
 ++++++++staticText name='Url: '
 ++++++++++inlineTextBox name='Url: '
-++++++++textField editable name='Url:' placeholder='placeholder'
+++++++++textField editable name='Url:' placeholder='placeholder' editableRoot=true
 ++++++++++genericContainer ignored invisible
 ++++++++++genericContainer editable
 ++++++++++++staticText editable name='https://www.example.com'
-++++++++++++++inlineTextBox editable name='https://www.example.com'
\ No newline at end of file
+++++++++++++++inlineTextBox name='https://www.example.com'
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/input-types-with-value-expected-blink.txt b/content/test/data/accessibility/html/input-types-with-value-expected-blink.txt
index ecb6c281..df6b77a 100644
--- a/content/test/data/accessibility/html/input-types-with-value-expected-blink.txt
+++ b/content/test/data/accessibility/html/input-types-with-value-expected-blink.txt
@@ -4,74 +4,74 @@
 ++++++labelText
 ++++++++staticText name='Email: '
 ++++++++++inlineTextBox name='Email: '
-++++++++textField editable name='Email:' value='email@example.com'
+++++++++textField editable name='Email:' value='email@example.com' editableRoot=true
 ++++++++++genericContainer editable
 ++++++++++++staticText editable name='email@example.com'
-++++++++++++++inlineTextBox editable name='email@example.com'
+++++++++++++++inlineTextBox name='email@example.com'
 ++++++labelText
 ++++++++staticText name='Number: '
 ++++++++++inlineTextBox name='Number: '
-++++++++spinButton editable name='Number:' value='3' valueForRange=3.00
+++++++++spinButton editable name='Number:' value='3' editableRoot=true valueForRange=3.00
 ++++++++++genericContainer ignored
 ++++++++++++genericContainer ignored
 ++++++++++++++genericContainer editable
 ++++++++++++++++staticText editable name='3'
-++++++++++++++++++inlineTextBox editable name='3'
+++++++++++++++++++inlineTextBox name='3'
 ++++++++++++genericContainer ignored
 ++++++labelText
 ++++++++staticText name='Password: '
 ++++++++++inlineTextBox name='Password: '
-++++++++textField editable protected name='Password:' value='%E2%80%A2%E2%80%A2%E2%80%A2'
+++++++++textField editable protected name='Password:' value='%E2%80%A2%E2%80%A2%E2%80%A2' editableRoot=true
 ++++++++++genericContainer editable
 ++++++++++++staticText editable name='%E2%80%A2%E2%80%A2%E2%80%A2'
-++++++++++++++inlineTextBox editable name='%E2%80%A2%E2%80%A2%E2%80%A2'
+++++++++++++++inlineTextBox name='%E2%80%A2%E2%80%A2%E2%80%A2'
 ++++++labelText
 ++++++++staticText name='Search: '
 ++++++++++inlineTextBox name='Search: '
-++++++++searchBox editable name='Search:' value='search'
+++++++++searchBox editable name='Search:' value='search' editableRoot=true
 ++++++++++genericContainer ignored
 ++++++++++++genericContainer ignored
 ++++++++++++++genericContainer editable
 ++++++++++++++++staticText editable name='search'
-++++++++++++++++++inlineTextBox editable name='search'
+++++++++++++++++++inlineTextBox name='search'
 ++++++++++++genericContainer ignored
 ++++++labelText
 ++++++++staticText name='Tel: '
 ++++++++++inlineTextBox name='Tel: '
-++++++++textField editable name='Tel:' value='555-1212'
+++++++++textField editable name='Tel:' value='555-1212' editableRoot=true
 ++++++++++genericContainer editable
 ++++++++++++staticText editable name='555-1212'
-++++++++++++++inlineTextBox editable name='555-1212'
+++++++++++++++inlineTextBox name='555-1212'
 ++++++labelText
 ++++++++staticText name='Text: '
 ++++++++++inlineTextBox name='Text: '
-++++++++textField editable name='Text:' value='just text'
+++++++++textField editable name='Text:' value='just text' editableRoot=true
 ++++++++++genericContainer editable
 ++++++++++++staticText editable name='just text'
-++++++++++++++inlineTextBox editable name='just text'
+++++++++++++++inlineTextBox name='just text'
 ++++++labelText
 ++++++++staticText name='Url: '
 ++++++++++inlineTextBox name='Url: '
-++++++++textField editable name='Url:'
+++++++++textField editable name='Url:' editableRoot=true
 ++++++++++genericContainer editable
 ++++++++++++staticText editable name='https://www.example.com'
-++++++++++++++inlineTextBox editable name='https://www.example.com'
+++++++++++++++inlineTextBox name='https://www.example.com'
 ++++++labelText
 ++++++++staticText name='Textarea: '
 ++++++++++inlineTextBox name='Textarea: '
-++++++++textField editable multiline name='Textarea:' value='Sometext'
+++++++++textField editable multiline name='Textarea:' value='Sometext' editableRoot=true
 ++++++++++genericContainer editable
 ++++++++++++staticText editable name='Sometext'
-++++++++++++++inlineTextBox editable name='Sometext'
-++++++genericContainer editable multiline value='Plain contenteditable' editableRoot=true
+++++++++++++++inlineTextBox name='Sometext'
+++++++genericContainer editable editableRoot=true
 ++++++++staticText editable name='Plain contenteditable'
-++++++++++inlineTextBox editable name='Plain contenteditable'
+++++++++++inlineTextBox name='Plain contenteditable'
 ++++++genericContainer editable multiline richlyEditable value='Rich contenteditable' editableRoot=true
 ++++++++staticText editable richlyEditable name='Rich contenteditable'
-++++++++++inlineTextBox editable richlyEditable name='Rich contenteditable'
-++++++textField editable multiline value='Plain contenteditable' editableRoot=true
+++++++++++inlineTextBox name='Rich contenteditable'
+++++++textField editable value='Plain contenteditable' editableRoot=true
 ++++++++staticText editable name='Plain contenteditable'
-++++++++++inlineTextBox editable name='Plain contenteditable'
-++++++textField editable multiline richlyEditable value='Rich contenteditable' editableRoot=true
+++++++++++inlineTextBox name='Plain contenteditable'
+++++++textField editable richlyEditable value='Rich contenteditable' editableRoot=true
 ++++++++staticText editable richlyEditable name='Rich contenteditable'
-++++++++++inlineTextBox editable richlyEditable name='Rich contenteditable'
\ No newline at end of file
+++++++++++inlineTextBox name='Rich contenteditable'
\ No newline at end of file
diff --git a/content/test/data/accessibility/html/input-week-expected-auralinux.txt b/content/test/data/accessibility/html/input-week-expected-auralinux.txt
index 5e26dbe..8658b5d 100644
--- a/content/test/data/accessibility/html/input-week-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/input-week-expected-auralinux.txt
@@ -5,6 +5,8 @@
 ++++++++[section]
 ++++++++++[static] name='Week '
 ++++++++++[spin button] name='Week' current=0.000000 minimum=1.000000 maximum=53.000000
+++++++++++++[static] name='--'
 ++++++++++[static] name=', '
 ++++++++++[spin button] name='Year' current=0.000000 minimum=1.000000 maximum=275760.000000
-++++++[push button] name='Show week picker' haspopup:menu
\ No newline at end of file
+++++++++++++[static] name='----'
+++++++[push button] name='Show week picker' haspopup:menu
diff --git a/content/test/data/accessibility/html/input-week-expected-mac.txt b/content/test/data/accessibility/html/input-week-expected-mac.txt
index 2428f14f..745ecad 100644
--- a/content/test/data/accessibility/html/input-week-expected-mac.txt
+++ b/content/test/data/accessibility/html/input-week-expected-mac.txt
@@ -5,6 +5,8 @@
 ++++++++AXGroup AXRoleDescription='group'
 ++++++++++AXStaticText AXRoleDescription='text' AXValue='Week '
 ++++++++++AXIncrementor AXDescription='Week' AXRoleDescription='stepper' AXValue=0
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='--'
 ++++++++++AXStaticText AXRoleDescription='text' AXValue=', '
 ++++++++++AXIncrementor AXDescription='Year' AXRoleDescription='stepper' AXValue=0
-++++++AXPopUpButton AXDescription='Show week picker' AXRoleDescription='pop up button'
\ No newline at end of file
+++++++++++++AXStaticText AXRoleDescription='text' AXValue='----'
+++++++AXPopUpButton AXDescription='Show week picker' AXRoleDescription='pop up button'
diff --git a/content/test/data/accessibility/html/input-week-expected-uia-win.txt b/content/test/data/accessibility/html/input-week-expected-uia-win.txt
index c93249c..3d8c20f 100644
--- a/content/test/data/accessibility/html/input-week-expected-uia-win.txt
+++ b/content/test/data/accessibility/html/input-week-expected-uia-win.txt
@@ -5,6 +5,8 @@
 ++++++++Group IsControlElement=false
 ++++++++++Text Name='Week '
 ++++++++++Spinner Name='Week' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=53.00 RangeValue.Minimum=1.00 RangeValue.Value=0.00 Value.Value='0'
+++++++++++++Text Name='--'
 ++++++++++Text Name=', '
 ++++++++++Spinner Name='Year' RangeValue.IsReadOnly=false RangeValue.LargeChange=0.00 RangeValue.SmallChange=0.00 RangeValue.Maximum=275760.00 RangeValue.Minimum=1.00 RangeValue.Value=0.00 Value.Value='0'
-++++++Button Name='Show week picker' ExpandCollapse.ExpandCollapseState='Collapsed'
\ No newline at end of file
+++++++++++++Text Name='----'
+++++++Button Name='Show week picker' ExpandCollapse.ExpandCollapseState='Collapsed'
diff --git a/content/test/data/accessibility/html/input-week-expected-win.txt b/content/test/data/accessibility/html/input-week-expected-win.txt
index 9057f42..50f94cd2 100644
--- a/content/test/data/accessibility/html/input-week-expected-win.txt
+++ b/content/test/data/accessibility/html/input-week-expected-win.txt
@@ -4,7 +4,9 @@
 ++++++IA2_ROLE_SECTION ia2_hypertext='<obj0>'
 ++++++++IA2_ROLE_SECTION ia2_hypertext='Week <obj1>, <obj3>'
 ++++++++++ROLE_SYSTEM_STATICTEXT name='Week ' ia2_hypertext='Week '
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Week' value='0' FOCUSABLE
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Week' value='0' FOCUSABLE ia2_hypertext='--'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='--' ia2_hypertext='--'
 ++++++++++ROLE_SYSTEM_STATICTEXT name=', ' ia2_hypertext=', '
-++++++++++ROLE_SYSTEM_SPINBUTTON name='Year' value='0' FOCUSABLE
-++++++ROLE_SYSTEM_BUTTONMENU name='Show week picker' FOCUSABLE HASPOPUP haspopup:menu
\ No newline at end of file
+++++++++++ROLE_SYSTEM_SPINBUTTON name='Year' value='0' FOCUSABLE ia2_hypertext='----'
+++++++++++++ROLE_SYSTEM_STATICTEXT name='----' ia2_hypertext='----'
+++++++ROLE_SYSTEM_BUTTONMENU name='Show week picker' FOCUSABLE HASPOPUP haspopup:menu
diff --git a/content/test/data/accessibility/html/node-changed-crash-in-editable-text-expected-win.txt b/content/test/data/accessibility/html/node-changed-crash-in-editable-text-expected-win.txt
index 23d066f..d0eaeac 100644
--- a/content/test/data/accessibility/html/node-changed-crash-in-editable-text-expected-win.txt
+++ b/content/test/data/accessibility/html/node-changed-crash-in-editable-text-expected-win.txt
@@ -1,4 +1,4 @@
-ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE
+ROLE_SYSTEM_DOCUMENT FOCUSABLE
 ++IA2_ROLE_SECTION name='Done' FOCUSABLE IA2_STATE_MULTI_LINE
 ++++IA2_ROLE_SECTION
-++++IA2_ROLE_SECTION
\ No newline at end of file
+++++IA2_ROLE_SECTION
diff --git a/content/test/data/accessibility/html/output-expected-android.txt b/content/test/data/accessibility/html/output-expected-android.txt
index 9426d10b..7fc3b7f 100644
--- a/content/test/data/accessibility/html/output-expected-android.txt
+++ b/content/test/data/accessibility/html/output-expected-android.txt
@@ -1,7 +1,7 @@
 android.webkit.WebView focusable focused scrollable
 ++android.view.View
-++++android.widget.EditText role_description='spin button' clickable focusable range item_count=100 input_type=2
+++++android.widget.EditText role_description='spin button' clickable editable_text focusable range item_count=100 input_type=2
 ++++android.widget.TextView name=' + '
-++++android.widget.EditText role_description='spin button' clickable focusable range item_count=100 input_type=2
+++++android.widget.EditText role_description='spin button' clickable editable_text focusable range item_count=100 input_type=2
 ++++android.widget.TextView name=' ='
-++++android.view.View role_description='status' live_region_type=1
\ No newline at end of file
+++++android.view.View role_description='status' live_region_type=1
diff --git a/content/test/data/accessibility/html/output-expected-mac.txt b/content/test/data/accessibility/html/output-expected-mac.txt
index 2df1066..a0c35404 100644
--- a/content/test/data/accessibility/html/output-expected-mac.txt
+++ b/content/test/data/accessibility/html/output-expected-mac.txt
@@ -4,4 +4,4 @@
 ++++AXStaticText AXValue=' + '
 ++++AXIncrementor
 ++++AXStaticText AXValue=' ='
-++++AXGroup
\ No newline at end of file
+++++AXGroup
diff --git a/content/test/data/accessibility/html/ul-contenteditable-expected-blink.txt b/content/test/data/accessibility/html/ul-contenteditable-expected-blink.txt
index 89b374b..fced7a3c 100644
--- a/content/test/data/accessibility/html/ul-contenteditable-expected-blink.txt
+++ b/content/test/data/accessibility/html/ul-contenteditable-expected-blink.txt
@@ -1,7 +1,7 @@
 rootWebArea
 ++genericContainer ignored
 ++++genericContainer ignored
-++++++textField multiline value='Hello<newline><newline>Bye'
+++++++textField value='Hello<newline><newline>Bye'
 ++++++++list
 ++++++++++listItem
 ++++++++++++listMarker name='%E2%80%A2 '
diff --git a/content/test/data/accessibility/html/ul-contenteditable-expected-win.txt b/content/test/data/accessibility/html/ul-contenteditable-expected-win.txt
index e4104cd..8197db6 100644
--- a/content/test/data/accessibility/html/ul-contenteditable-expected-win.txt
+++ b/content/test/data/accessibility/html/ul-contenteditable-expected-win.txt
@@ -1,5 +1,5 @@
 ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE
-++ROLE_SYSTEM_TEXT value='Hello<newline><newline>Bye' FOCUSABLE IA2_STATE_MULTI_LINE
+++ROLE_SYSTEM_TEXT value='Hello<newline><newline>Bye' FOCUSABLE
 ++++ROLE_SYSTEM_LIST
 ++++++ROLE_SYSTEM_LISTITEM
 ++++++++IA2_ROLE_REDUNDANT_OBJECT
diff --git a/content/test/data/accessibility/scripts/set-selection-textarea-expected-mac.txt b/content/test/data/accessibility/scripts/set-selection-textarea-expected-mac.txt
index 2c72387..b9e0d656 100644
--- a/content/test/data/accessibility/scripts/set-selection-textarea-expected-mac.txt
+++ b/content/test/data/accessibility/scripts/set-selection-textarea-expected-mac.txt
@@ -1,4 +1,4 @@
 AXWebArea
 ++AXGroup
 ++++AXTextArea AXValue='The quick brown fox jumps over the lazy dog<newline>'
-brown
\ No newline at end of file
+brown
diff --git a/content/test/data/prerender/restriction-gamepad.html b/content/test/data/prerender/restriction-gamepad.html
new file mode 100644
index 0000000..6c379a24
--- /dev/null
+++ b/content/test/data/prerender/restriction-gamepad.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+</head>
+<body>
+<script>
+
+const prerenderingChanged = new Promise(
+  resolve => {
+    document.addEventListener('prerenderingchange', () => {
+      const [_] = navigator.getGamepads();
+      resolve(true);
+    });
+  }
+);
+
+</script>
+</body>
+</html>
diff --git a/content/web_test/renderer/test_plugin.cc b/content/web_test/renderer/test_plugin.cc
index 91e2f27..4ad54dfb 100644
--- a/content/web_test/renderer/test_plugin.cc
+++ b/content/web_test/renderer/test_plugin.cc
@@ -316,7 +316,7 @@
 bool TestPlugin::PrepareTransferableResource(
     cc::SharedBitmapIdRegistrar* bitmap_registrar,
     viz::TransferableResource* resource,
-    std::unique_ptr<viz::SingleReleaseCallback>* release_callback) {
+    viz::ReleaseCallback* release_callback) {
   if (!content_changed_)
     return false;
   gfx::Size size(rect_.size());
@@ -325,8 +325,8 @@
         mailbox_, GL_LINEAR, GL_TEXTURE_2D, sync_token_, size,
         false /* is_overlay_candidate */);
     // We pass ownership of the shared image to the callback.
-    *release_callback = viz::SingleReleaseCallback::Create(
-        base::BindOnce(&ReleaseSharedImage, context_provider_, mailbox_));
+    *release_callback =
+        base::BindOnce(&ReleaseSharedImage, context_provider_, mailbox_);
     mailbox_ = gpu::Mailbox();
     sync_token_ = gpu::SyncToken();
   } else if (shared_bitmap_) {
@@ -338,9 +338,9 @@
 
     *resource = viz::TransferableResource::MakeSoftware(
         shared_bitmap_->id(), shared_bitmap_->size(), viz::RGBA_8888);
-    *release_callback = viz::SingleReleaseCallback::Create(
+    *release_callback =
         base::BindOnce(&ReleaseSharedMemory, std::move(shared_bitmap_),
-                       std::move(registration)));
+                       std::move(registration));
   }
   resource->size = size;
   content_changed_ = false;
diff --git a/content/web_test/renderer/test_plugin.h b/content/web_test/renderer/test_plugin.h
index fddf728..5b09258 100644
--- a/content/web_test/renderer/test_plugin.h
+++ b/content/web_test/renderer/test_plugin.h
@@ -101,7 +101,7 @@
   bool PrepareTransferableResource(
       cc::SharedBitmapIdRegistrar* bitmap_registrar,
       viz::TransferableResource* resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* release_callback) override;
+      viz::ReleaseCallback* release_callback) override;
 
  private:
   TestPlugin(const blink::WebPluginParams& params,
diff --git a/extensions/common/api/management.json b/extensions/common/api/management.json
index 08c1fc89..8f30906 100644
--- a/extensions/common/api/management.json
+++ b/extensions/common/api/management.json
@@ -295,7 +295,7 @@
       },
       {
         "name": "uninstall",
-        "description": "Uninstalls a currently installed app or extension.",
+        "description": "Uninstalls a currently installed app or extension. Note: This function does not work in managed environments when the user is not allowed to uninstall the specified extension/app.",
         "parameters": [
           {
             "name": "id",
@@ -316,7 +316,7 @@
       },
       {
         "name": "uninstallSelf",
-        "description": "Uninstalls the calling extension. Note: This function can be used without requesting the 'management' permission in the manifest.",
+        "description": "Uninstalls the calling extension. Note: This function can be used without requesting the 'management' permission in the manifest. This function does not work in managed environments when the user is not allowed to uninstall the specified extension/app.",
         "parameters": [
           {
             "name": "options",
diff --git a/gpu/vulkan/vulkan_swap_chain.cc b/gpu/vulkan/vulkan_swap_chain.cc
index 68ed4cf8..80e2fc16 100644
--- a/gpu/vulkan/vulkan_swap_chain.cc
+++ b/gpu/vulkan/vulkan_swap_chain.cc
@@ -504,11 +504,14 @@
   FenceAndSemaphores fence_and_semaphores;
   do {
 #if !defined(OS_FUCHSIA)
-    // This crash key is for diagnosing OOM crash.
-    // TODO(penghuang): remove it when OOM crash is fixed, or find out it is not
-    // related.
-    SCOPED_CRASH_KEY_NUMBER("VulkanSwapChian", "queue_.size()",
-                            fence_and_semaphores_queue_.size());
+    // On Linux, some drivers may never release an image acquire fence,
+    // It should be a driver bug. When it happens, return {}, and then
+    // it will cause context lost instead of creating new fences and
+    // semaphores and causing OOM.
+    // https://crbug.com/1189069
+    constexpr size_t kQueueSizeLimit = 64;
+    if (UNLIKELY(fence_and_semaphores_queue_.size() >= kQueueSizeLimit))
+      break;
 
     if (LIKELY(!fence_and_semaphores_queue_.empty())) {
       fence_and_semaphores = fence_and_semaphores_queue_.front();
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_as.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_as.xtb
index 2a0fc1c..21f8c4e 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_as.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_as.xtb
@@ -9,6 +9,7 @@
 <translation id="1431818719585918472">Chromiumক আপোনাৰ ইনক’গনিট’ টেবসমূহ লক কৰিবলৈ দিয়ক।</translation>
 <translation id="1472013873724362412">আপোনাৰ একউণ্টটো Chromiumত কাম নকৰে। ছাইন ইন কৰিবলৈ অনুগ্ৰহ কৰি আপোনাৰ ড’মেইনৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক বা সচৰাচৰ ব্যৱহাৰ কৰা এটা Google Account ব্যৱহাৰ কৰক।</translation>
 <translation id="1507010443238049608">Chromiumৰ সুবিধা আৰু কার্যদক্ষতা উন্নত কৰাত সহায় কৰক</translation>
+<translation id="1531155317299575425">Chromiumত ছাইন ইন কৰিবলৈ প্ৰম্প্‌ট প্ৰদৰ্শন কৰে।</translation>
 <translation id="1617663976202781617">Chromium ছিংকৰ ডেটা</translation>
 <translation id="1736662517232558588">Chromium ডেটা মচা হ’ল</translation>
 <translation id="1838412507805038478">Chromiumএ সত্যাপন কৰিলে <ph name="ISSUER" />এ এই ৱেবছাইটৰ প্ৰমাণপত্ৰ প্ৰদান কৰে।</translation>
@@ -49,6 +50,7 @@
 <translation id="5396916991083608703">Chromiumক ডিফ’ল্ট হিচাপে ছেট কৰিবনে?</translation>
 <translation id="5521125884468363740">আপুনি Chromium ব্যৱহাৰ কৰা সকলো ডিভাইচৰ পৰা নিজৰ টেবসমূহ চাবলৈ ছাইন ইন কৰক আৰু ছিংক অন কৰক</translation>
 <translation id="5573014823074921752">Chromium ব্যৱহাৰৰ কিটিপ। টেবৰ অধিক বিকল্প পাবলৈ আপোনাৰ স্ক্রীণৰ একেবাৰে ওপৰত অথবা তলত থকা টুলবাৰৰ টেব দেখুৱাওক বুটামটো স্পৰ্শ কৰি ধৰি ৰাখক।</translation>
+<translation id="5651741435382092412">এই ছাইটটোত, আপোনাৰ Google একাউণ্ট আৰু Chromiumত ছাইন ইন কৰক। আপুনি পাছত ছিংক অন কৰিব পাৰে।</translation>
 <translation id="5700709190537129682">Chromiumএ আপোনাৰ পাছৱর্ডসমূহ পৰীক্ষা কৰিব নোৱাৰে</translation>
 <translation id="5742135483959137648">লিংক খুলিবলৈ Chromium ব্যৱহাৰ কৰক</translation>
 <translation id="5777187867430702742">Chromium পৃষ্ঠা</translation>
@@ -60,6 +62,7 @@
 ২) ডিফ’ল্ট ব্ৰাউজাৰ এপত টিপক
 ৩) Chromium বাছনি কৰক।</translation>
 <translation id="6268381023930128611">Chromiumৰ পৰা ছাইন আউট কৰিবনে?</translation>
+<translation id="632825460376924298">Chromiumত ছাইন ইন কৰাৰ অনুমতি দিয়ক</translation>
 <translation id="6337530241089703714">এই ডিভাইচটোৰ পৰা আপোনাৰ Chromiumৰ ডেটা মচিবনে ৰাখিব সেয়া বাছনি কৰক</translation>
 <translation id="6424492062988593837">Chromium আৰু উন্নত হৈছে! এটা নতুন সংস্কৰণ আছে।</translation>
 <translation id="6820823224820483452">Chromiumএ সকলো পাছৱৰ্ড পৰীক্ষা কৰিব নোৱাৰিলে। কাইলৈ পুনৰ চেষ্টা কৰক।</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_bn.xtb
index f4d8be3..5bf1003 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_bn.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_bn.xtb
@@ -9,6 +9,7 @@
 <translation id="1431818719585918472">Chromium-কে আপনার ছদ্মবেশী ট্যাব লক করার অনুমতি দিন।</translation>
 <translation id="1472013873724362412">আপনার অ্যাকাউন্ট Chromium-এ কাজ করে না৷ সাইন-ইন করার জন্য আপনার ডোমেন অ্যাডমিনিস্ট্রেটরের সঙ্গে যোগাযোগ করুন বা কোন সাধারণ Google অ্যাকাউন্ট ব্যবহার করুন৷</translation>
 <translation id="1507010443238049608">Chromium-এর ফিচার এবং পারফর্ম্যান্স উন্নত করতে সাহায্য করুন</translation>
+<translation id="1531155317299575425">Chromium-এ সাইন-ইন করার প্রম্পট দেখাবে।</translation>
 <translation id="1617663976202781617">Chromium সিঙ্ক থেকে ডেটা</translation>
 <translation id="1736662517232558588">Chromium ডেটা সাফ করা হয়েছে</translation>
 <translation id="1838412507805038478"><ph name="ISSUER" /> যে এই ওয়েবসাইটের শংসাপত্র প্রকাশ করেছে Chromium তা যাচাই করেছে।</translation>
@@ -49,6 +50,7 @@
 <translation id="5396916991083608703">Chromium ডিফল্ট হিসেবে সেট করতে চান?</translation>
 <translation id="5521125884468363740">একাধিক ডিভাইসে সাইন-ইন করে থাকুন ও সিঙ্ক চালু করে রাখুন, যাতে আপনি যেখান থেকেই Chromium ব্যবহার করুন না কেন, সেখানেই আপনি নিজের ট্যাবগুলি দেখতে পারেন</translation>
 <translation id="5573014823074921752">Chromium সংক্রান্ত পরামর্শ। আরও ট্যাবের বিকল্প দেখতে আপনার স্ক্রিনের নিচে অথবা উপরের দিকে থাকা টুলবারে 'ট্যাব দেখান' বিকল্পটি টাচ করে ধরে থাকুন।</translation>
+<translation id="5651741435382092412">এই সাইট, আপনার Google অ্যাকাউন্ট ও Chromium-এ সাইন-ইন করুন। আপনি পরে সিঙ্ক চালু করতে পারবেন।</translation>
 <translation id="5700709190537129682">Chromium আপনার পাসওয়ার্ড চেক করতে পারছে না</translation>
 <translation id="5742135483959137648">Chromium ব্যবহার করে লিঙ্ক খুলুন</translation>
 <translation id="5777187867430702742">Chromium পৃষ্ঠা</translation>
@@ -60,6 +62,7 @@
 ২. 'ডিফল্ট ব্রাউজার অ্যাপ' বিকল্পে ট্যাপ করুন
 ৩. Chromium বেছে নিন।</translation>
 <translation id="6268381023930128611">Chromium থেকে সাইন-আউট করবেন?</translation>
+<translation id="632825460376924298">Chromium-এ সাইন-ইন করার অনুমতি দিন</translation>
 <translation id="6337530241089703714">এই ডিভাইস থেকে আপনার Chromium ডেটা মুছবেন না রাখবেন তা বেছে নিন</translation>
 <translation id="6424492062988593837">Chrome আরও ভাল হয়েছে! একটি নতুন ভার্সন উপলব্ধ আছে৷</translation>
 <translation id="6820823224820483452">Chromium সব পাসওয়ার্ড চেক করতে পারেনি। আগামীকাল আবার চেষ্টা করে দেখুন।</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_de.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_de.xtb
index ebc20cdd..3c2744e5 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_de.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_de.xtb
@@ -9,6 +9,7 @@
 <translation id="1431818719585918472">Erlauben Sie Chromium, Ihre Inkognitotabs zu sperren.</translation>
 <translation id="1472013873724362412">Dieses Konto funktioniert in Chromium nicht. Wenden Sie sich an Ihren Domainadministrator oder melden Sie sich mit einem Google-Standardkonto an.</translation>
 <translation id="1507010443238049608">Ich möchte dabei helfen, die Funktionen und die Leistung von Chromium zu verbessern</translation>
+<translation id="1531155317299575425">Aufforderungen für die Anmeldung in Chromium werden angezeigt.</translation>
 <translation id="1617663976202781617">Daten aus der Chromium-Synchronisierung</translation>
 <translation id="1736662517232558588">Chromium-Daten gelöscht</translation>
 <translation id="1838412507805038478">Chromium hat verifiziert, dass <ph name="ISSUER" /> das Zertifikat dieser Website ausgestellt hat.</translation>
@@ -48,6 +49,7 @@
 <translation id="5396916991083608703">Chromium als Standardbrowser festlegen?</translation>
 <translation id="5521125884468363740">Melden Sie sich an und aktivieren Sie die Synchronisierung, um Ihre Tabs überall dort aufzurufen, wo Sie Chromium verwenden</translation>
 <translation id="5573014823074921752">Chromium-Tipp: Wenn Sie weitere Tab-Optionen sehen möchten, berühren und halten Sie die Schaltfläche "Tabs anzeigen" in der Symbolleiste. Diese befindet sich unten oder oben auf dem Bildschirm.</translation>
+<translation id="5651741435382092412">Melden Sie sich bei dieser Website, Ihrem Google-Konto und Chromium an. Sie können die Synchronisierung dann später aktivieren.</translation>
 <translation id="5700709190537129682">Chromium kann Ihre Passwörter nicht prüfen</translation>
 <translation id="5742135483959137648">Chromium zum Öffnen von Links verwenden</translation>
 <translation id="5777187867430702742">Chromium-Seite</translation>
@@ -59,6 +61,7 @@
 2. Tippen Sie auf „Standard-Browser-App“
 3. Wählen Sie Chromium aus.</translation>
 <translation id="6268381023930128611">Von Chromium abmelden?</translation>
+<translation id="632825460376924298">Anmeldung in Chromium zulassen</translation>
 <translation id="6337530241089703714">Möchten Sie Ihre Chromium-Daten von diesem Gerät löschen oder sie behalten?</translation>
 <translation id="6424492062988593837">Chromium ist jetzt noch besser! Es ist eine neue Version verfügbar.</translation>
 <translation id="6820823224820483452">Chromium konnte nicht alle Passwörter prüfen. Versuchen Sie es morgen noch einmal.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_fr.xtb
index ac598d93..f07df11 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_fr.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_fr.xtb
@@ -9,6 +9,7 @@
 <translation id="1431818719585918472">Chromium peut verrouiller vos onglets de navigation privée.</translation>
 <translation id="1472013873724362412">Votre compte n'est pas compatible avec Chromium. Veuillez contacter l'administrateur de votre domaine ou utiliser un compte Google standard pour vous connecter.</translation>
 <translation id="1507010443238049608">Contribuer à l'amélioration des fonctionnalités et des performances de Chromium</translation>
+<translation id="1531155317299575425">Permet d'afficher des invites de connexion à Chromium.</translation>
 <translation id="1617663976202781617">Données issues de la synchronisation Chromium</translation>
 <translation id="1736662517232558588">Données de Chromium effacées</translation>
 <translation id="1838412507805038478">Chromium a confirmé que le certificat de ce site Web a bien été émis par <ph name="ISSUER" />.</translation>
@@ -46,9 +47,10 @@
 <translation id="4999538639245140991">Comme vous vous déconnectez d'un compte géré par <ph name="SIGNOUT_MANAGED_DOMAIN" />, vos données Chromium seront supprimées de cet appareil, mais elles seront conservées dans votre compte Google.</translation>
 <translation id="5224391634244552924">Aucun mot de passe enregistré. Chromium ne peut vérifier vos mots de passe que si vous les enregistrez.</translation>
 <translation id="5308226104666789935">Chromium ne parvient pas à rechercher les mises à jour</translation>
-<translation id="5396916991083608703">Définir Chromium en tant que navigateur par défaut ?</translation>
+<translation id="5396916991083608703">Utiliser Chromium par défaut ?</translation>
 <translation id="5521125884468363740">Pour retrouver vos onglets Chromium quel que soit l'appareil utilisé, connectez-vous et activez la synchronisation</translation>
 <translation id="5573014823074921752">Astuce Chromium : Pour afficher plus d'options d'onglets, appuyez de manière prolongée sur le bouton "Afficher les onglets" situé dans la barre d'outils affichée dans la partie inférieure ou supérieure de l'écran.</translation>
+<translation id="5651741435382092412">Connectez-vous à ce site, à votre compte Google et à Chromium. Vous pouvez activer la synchronisation plus tard.</translation>
 <translation id="5700709190537129682">Chromium ne parvient pas à vérifier vos mots de passe</translation>
 <translation id="5742135483959137648">Utiliser Chromium pour ouvrir des liens</translation>
 <translation id="5777187867430702742">Page Chromium</translation>
@@ -59,6 +61,7 @@
 1. Accédez à "Réglages" Appuyez sur "Navigateur par défaut"
 3. Sélectionnez "Chromium".</translation>
 <translation id="6268381023930128611">Se déconnecter de Chromium ?</translation>
+<translation id="632825460376924298">Autoriser la connexion à Chromium</translation>
 <translation id="6337530241089703714">Indiquez si vous voulez effacer ou garder les données Chromium de cet appareil</translation>
 <translation id="6424492062988593837">Chromium a été amélioré ! Une nouvelle version est désormais disponible.</translation>
 <translation id="6820823224820483452">Chromium n'est pas parvenu à vérifier tous les mots de passe. Réessayez demain.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb
index 0f7a51b..ca1cc52 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb
@@ -9,6 +9,7 @@
 <translation id="1431818719585918472">Chromiumને તમારી છૂપી ટૅબ લૉક કરવા દો.</translation>
 <translation id="1472013873724362412">તમારું એકાઉન્ટ Chromium પર કાર્ય કરતું નથી. કૃપા કરીને તમારા ડોમેન એડમિનનો સંપર્ક કરો અથવા સાઇન ઇન કરવા માટે નિયમિત Google એકાઉન્ટનો ઉપયોગ કરો.</translation>
 <translation id="1507010443238049608">Chromiumની સુવિધાઓ અને કાર્યપ્રદર્શનને બહેતર બનાવવામાં સહાય કરો</translation>
+<translation id="1531155317299575425">Chromiumમાં સાઇન ઇન કરવા માટેના સંકેતો બતાવો.</translation>
 <translation id="1617663976202781617">Chromium સિંકમાંનો ડેટા</translation>
 <translation id="1736662517232558588">Chromium ડેટા સાફ કર્યો</translation>
 <translation id="1838412507805038478">Chromium એ ચકાસણી કરી છે કે <ph name="ISSUER" /> એ આ વેબસાઇટનું પ્રમાણપત્ર જારી કર્યું છે.</translation>
@@ -49,6 +50,7 @@
 <translation id="5396916991083608703">Chromiumને ડિફૉલ્ટ તરીકે સેટ કરીએ?</translation>
 <translation id="5521125884468363740">તમે જ્યાંથી Chromiumનો ઉપયોગ કરો ત્યાંથી તમારી ટૅબ જોવા માટે, સાઇન ઇન કરો અને સિંક કરવાનું ચાલુ કરો</translation>
 <translation id="5573014823074921752">Chromium ટિપ. ટૅબના વધુ વિકલ્પો માટે, તમારી સ્ક્રીનના તળિયે અથવા ટોચે આવેલા ટૂલબારમાંના 'ટૅબ બતાવો' બટનને ટચ કરીને થોડીવાર દબાવી રાખો.</translation>
+<translation id="5651741435382092412">આ સાઇટમાં, તમારા Google એકાઉન્ટમાં અને Chromiumમાં સાઇન ઇન કરો. તમે થોડા સમય પછી સિંક ચાલુ કરી શકો છો.</translation>
 <translation id="5700709190537129682">Chromium તમારા પાસવર્ડ ચેક કરી શકતું નથી</translation>
 <translation id="5742135483959137648">લિંક ખોલવા માટે Chromiumનો ઉપયોગ કરો</translation>
 <translation id="5777187867430702742">Chromium પેજ</translation>
@@ -60,6 +62,7 @@
 2. ડિફૉલ્ટ બ્રાઉઝર ઍપ પર ટૅપ કરો
 3. Chromium પસંદ કરો.</translation>
 <translation id="6268381023930128611">Chromiumમાંથી સાઇન આઉટ કરીએ?</translation>
+<translation id="632825460376924298">Chromiumમાં સાઇન-ઇનની મંજૂરી આપો</translation>
 <translation id="6337530241089703714">આ ડિવાઇસમાંથી તમારો Chromium ડેટા સાફ કરવો છે કે તેને જાળવી રાખવો છે તે પસંદ કરો</translation>
 <translation id="6424492062988593837">Chrome હવે વધારે સારું બન્યું છે! નવું વર્ઝન ઉપલબ્ધ છે.</translation>
 <translation id="6820823224820483452">Chromium બધા પાસવર્ડ ચેક કરી શક્યું નથી. આવતી કાલે ફરી પ્રયાસ કરો.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb
index 5cf63ba..07a6e34 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb
@@ -9,6 +9,7 @@
 <translation id="1431818719585918472">Chromium ला तुमचे गुप्त टॅब लॉक करू द्या.</translation>
 <translation id="1472013873724362412">तुमचे खाते Chromium वर कार्य करत नाही. कृपया तुमच्या डोमेन ॲडमिनिस्ट्रेटरशी संपर्क साधा किंवा साइन इन करण्यासाठी एक नियमित Google खाते वापरा.</translation>
 <translation id="1507010443238049608">Chromium च्या वैशिष्ट्ये आणि परफॉर्मन्समध्ये सुधारणा करण्यात मदत करा</translation>
+<translation id="1531155317299575425">Chromium मध्ये साइन इन करण्यासाठी सूचना दाखवते.</translation>
 <translation id="1617663976202781617">Chromium सिंकवरील डेटा</translation>
 <translation id="1736662517232558588">Chromium डेटा साफ करण्यात आला</translation>
 <translation id="1838412507805038478"><ph name="ISSUER" /> ने या वेबसाइटचे सर्टिफिकेट जारी केले हे Chromium ने पडताळले.</translation>
@@ -49,6 +50,7 @@
 <translation id="5396916991083608703">Chromium ला डीफॉल्ट म्हणून सेट करायचे आहे का?</translation>
 <translation id="5521125884468363740">तुम्ही जेथून Chromium वापरत असाल तेथून तुमचे टॅब पाहण्यासाठी, साइन इन करा आणि सिंक सुरू करा</translation>
 <translation id="5573014823074921752">Chromium टीप. आणखी टॅब पर्यायांसाठी, तुमच्या स्क्रीनच्या तळाशी किंवा सर्वात वर असलेल्या टूलबारवरील टॅब दाखवा बटणाला स्पर्श करा आणि धरून ठेवा.</translation>
+<translation id="5651741435382092412">ही साइट, तुमचे Google खाते आणि Chromium यांमध्ये साइन इन करा. तुम्ही सिंक नंतर सुरू करू शकता.</translation>
 <translation id="5700709190537129682">Chromium तुमचे पासवर्ड तपासू शकत नाही</translation>
 <translation id="5742135483959137648">लिंक उघडण्यासाठी Chromium वापरा</translation>
 <translation id="5777187867430702742">Chromium पेज</translation>
@@ -60,6 +62,7 @@
 २. डीफॉल्ट ब्राउझर अ‍ॅप वर टॅप करा
 ३. Chromium निवडा.</translation>
 <translation id="6268381023930128611">Chromium मधून साइन आउट करायचे?</translation>
+<translation id="632825460376924298">Chromium मध्ये साइन-इन करण्याची अनुमती द्या</translation>
 <translation id="6337530241089703714">या डिव्हाइसवरून तुमचा Chromium डेटा साफ करायचा की ठेवायचा ते निवडा</translation>
 <translation id="6424492062988593837">Chrome आता सर्वोत्तम झाले आहे! नवीन आवृत्ती उपलब्ध आहे.</translation>
 <translation id="6820823224820483452">Chromium ला सर्व पासवर्ड तपासता आले नाहीत. उद्या पुन्हा प्रयत्न करा.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_or.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_or.xtb
index f4c2869..0daddc31 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_or.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_or.xtb
@@ -9,6 +9,7 @@
 <translation id="1431818719585918472">Chromiumକୁ ଆପଣଙ୍କ ଇନକଗ୍ନିଟୋ ଟାବଗୁଡ଼ିକୁ ଲକ୍ କରିବାକୁ ଦିଅନ୍ତୁ।</translation>
 <translation id="1472013873724362412">ଆପଣଙ୍କର ଆକାଉଣ୍ଟ Chromiumରେ କାର୍ଯ୍ୟ କରେ ନାହିଁ। ଦୟାକରି, ଆପଣଙ୍କ ଡୋମେନ୍‍ ବ୍ୟବସ୍ଥାପକଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ କିମ୍ବା ସାଇନ୍‍ ଇନ୍‍ କରିବା ପାଇଁ ଏକ ନିୟମିତ Google ଆକାଉଣ୍ଟ ବ୍ୟବହାର କରନ୍ତୁ।</translation>
 <translation id="1507010443238049608">Chromiumର ଫିଚର୍ ଓ କାର୍ଯ୍ୟଦକ୍ଷତାକୁ ଉନ୍ନତ କରିବାରେ ସାହାଯ୍ୟ କରେ</translation>
+<translation id="1531155317299575425">Chromiumରେ ସାଇନ୍ ଇନ୍ କରିବାକୁ ପ୍ରମ୍ପ୍ଟ ଦେଖାଏ।</translation>
 <translation id="1617663976202781617">Chromium ସିଙ୍କ୍‍ରୁ ଡାଟା</translation>
 <translation id="1736662517232558588">Chromium ଡାଟା ଖାଲି କରାଯାଇଛି</translation>
 <translation id="1838412507805038478">Chromium ଯାଞ୍ଚ କରିଛି ଯେ, <ph name="ISSUER" />ଏହି ୱେବସାଇଟ୍‌ର ସାର୍ଟିଫିକେଟ୍ ଜାରି କରିଛନ୍ତି।</translation>
@@ -49,6 +50,7 @@
 <translation id="5396916991083608703">Chromiumକୁ ଡିଫଲ୍ଟ ଭାବେ ସେଟ୍ କରିବେ?</translation>
 <translation id="5521125884468363740">ଆପଣ Chromium ବ୍ୟବହାର କରୁଥିବା ଯେ କୌଣସି ସ୍ଥାନରୁ ଆପଣଙ୍କ ଟାବଗୁଡ଼ିକ ଦେଖିବାକୁ, ସାଇନ୍ ଇନ୍ କରି ସିଙ୍କ୍ ଚାଲୁ କରନ୍ତୁ</translation>
 <translation id="5573014823074921752">Chromium ଟିପ୍। ଅଧିକ ଟାବ୍ ବିକଳ୍ପ ପାଇଁ, ଟୁଲ୍‌ବାର୍‌ରେ ଥିବା 'ଟାବ୍‍ଗୁଡ଼ିକ ଦେଖାନ୍ତୁ' ବଟନ୍‍କୁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ ଯାହା ଆପଣଙ୍କ ସ୍କ୍ରିନ୍‌ର ନିମ୍ନରେ କିମ୍ବା ଶୀର୍ଷରେ ରହିଥାଏ।</translation>
+<translation id="5651741435382092412">ଏହି ସାଇଟ୍, ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟ ଏବଂ Chromiumରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ। ଆପଣ ସିଙ୍କକୁ ପରେ ଚାଲୁ କରିପାରନ୍ତି।</translation>
 <translation id="5700709190537129682">Chromium ଆପଣଙ୍କ ପାସୱାର୍ଡଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରିପାରିବ ନାହିଁ</translation>
 <translation id="5742135483959137648">ଲିଙ୍କଗୁଡ଼ିକ ଖୋଲିବା ପାଇଁ Chromium ବ୍ୟବହାର କରନ୍ତୁ</translation>
 <translation id="5777187867430702742">Chromium ପୃଷ୍ଠା</translation>
@@ -60,6 +62,7 @@
 2. ଡିଫଲ୍ଟ ବ୍ରାଉଜର୍ ଆପକୁ ଟାପ୍ କରନ୍ତୁ
 3. Chromium ଚୟନ କରନ୍ତୁ।</translation>
 <translation id="6268381023930128611">Chromiumରୁ ସାଇନ୍ ଆଉଟ୍ କରିବେ କି?</translation>
+<translation id="632825460376924298">Chromiumରେ ସାଇନ୍-ଇନ୍ କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ</translation>
 <translation id="6337530241089703714">ଏହି ଡିଭାଇସରୁ ଆପଣଙ୍କ Chromium ଡାଟାକୁ ଖାଲି କରିବେ ନା ଏହାକୁ ରଖିବେ ତାହା ବାଛନ୍ତୁ</translation>
 <translation id="6424492062988593837">Chromium ବର୍ତ୍ତମାନ ଆହୁରି ଉନ୍ନତ ହୋଇଛି! ଗୋଟିଏ ନୂଆ ସଂସ୍କରଣ ଉପଲବ୍ଧ ଅଛି।</translation>
 <translation id="6820823224820483452">Chromium ସମସ୍ତ ପାସୱାର୍ଡକୁ ଯାଞ୍ଚ କରିପାରିଲା ନାହିଁ। ଆସନ୍ତାକାଲି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb
index b2c31a8..2be82c0 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb
@@ -9,6 +9,7 @@
 <translation id="1431818719585918472">மறைநிலைத் தாவல்களைப் பூட்ட Chromiumமை அனுமதிக்கவும்.</translation>
 <translation id="1472013873724362412">Chromiumமில் உங்கள் கணக்கு செயல்படாது. உங்கள் டொமைன் நிர்வாகியைத் தொடர்பு கொள்ளவும் அல்லது உள்நுழைவதற்கு வழக்கமான Google கணக்கைப் பயன்படுத்தவும்.</translation>
 <translation id="1507010443238049608">Chromiumமின் அம்சங்களையும் செயல்திறனையும் மேம்படுத்த உதவுதல்</translation>
+<translation id="1531155317299575425">Chromiumமில் உள்நுழைவதற்கான அறிவிப்புகளைக் காட்டும்.</translation>
 <translation id="1617663976202781617">Chromium ஒத்திசைவிலிருந்து தரவு</translation>
 <translation id="1736662517232558588">Chromium தரவு அழிக்கப்பட்டது</translation>
 <translation id="1838412507805038478">இந்த இணையதளச் சான்றிதழை <ph name="ISSUER" /> தான் வழங்கியுள்ளார் என்பதை Chromium சரிபார்த்தது.</translation>
@@ -49,6 +50,7 @@
 <translation id="5396916991083608703">Chromiumமை இயல்பு உலாவியாக அமைக்கவா?</translation>
 <translation id="5521125884468363740">நீங்கள் Chromiumமைப் பயன்படுத்தும் சாதனங்களில் உங்கள் தாவல்களைப் பார்க்க, உள்நுழைந்து ஒத்திசைவை இயக்கவும்</translation>
 <translation id="5573014823074921752">Chromium உதவிக்குறிப்பு. கூடுதல் தாவல் விருப்பங்களைப் பார்க்க திரையின் கீழிருக்கும் / மேலிருக்கும் கருவிப்பட்டியிலுள்ள ‘தாவல்களைக் காட்டு’ பட்டனைத் தொட்டுப் பிடிக்கவும்.</translation>
+<translation id="5651741435382092412">இந்தத் தளம், உங்கள் Google கணக்கு, Chromium ஆகியவற்றில் உள்நுழையுங்கள். ஒத்திசைவைப் பின்னர் இயக்கலாம்.</translation>
 <translation id="5700709190537129682">Chromium உலாவியால் உங்கள் கடவுச்சொற்களைச் சரிபார்க்க முடியவில்லை</translation>
 <translation id="5742135483959137648">இணைப்புகளைத் திறக்க Chromiumமைப் பயன்படுத்துங்கள்</translation>
 <translation id="5777187867430702742">Chromium பக்கம்</translation>
@@ -60,6 +62,7 @@
 2. இயல்பு உலாவி ஆப்ஸ் என்பதைத் தட்டவும்
 3. Chromiumமைத் தேர்ந்தெடுக்கவும்.</translation>
 <translation id="6268381023930128611">Chromium இலிருந்து வெளியேறவா?</translation>
+<translation id="632825460376924298">Chromium உள்நுழைவை அனுமதி</translation>
 <translation id="6337530241089703714">இந்தச் சாதனத்தில் உள்ள உங்கள் Chromium தரவை அழிக்க வேண்டுமா வைத்திருக்க வேண்டுமா என்பதைத் தேர்வுசெய்யுங்கள்</translation>
 <translation id="6424492062988593837">Chromium தற்போதுதான் சிறப்பைப் பெற்றது! புதிய பதிப்பு உள்ளது.</translation>
 <translation id="6820823224820483452">Chromium உலாவியால் கடவுச்சொற்கள் அனைத்தையும் சரிபார்க்க முடியவில்லை. நாளை முயலவும்.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ur.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ur.xtb
index 9bd86cf3..26380177 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_ur.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ur.xtb
@@ -9,6 +9,7 @@
 <translation id="1431818719585918472">‏Chromium کو آپ کی پوشیدگی ٹیبز کو مقفل کرنے دیں۔</translation>
 <translation id="1472013873724362412">‏آپ کا اکاؤنٹ Chromium پر کام نہیں کرتا ہے۔ سائن ان کرنے کیلئے براہ کرم اپنے ڈومین کے منتظم سے رابطہ کریں یا ایک مستقل Google اکاؤنٹ استعمال کریں۔</translation>
 <translation id="1507010443238049608">‏Chromium کی خصوصیات اور کارکردگی کو بہتر بنانے میں مدد کریں</translation>
+<translation id="1531155317299575425">‏Chromium میں سائن ان کرنے کے لیے پرامپٹس دکھاتا ہے۔</translation>
 <translation id="1617663976202781617">‏Chromium مطابقت پذیری کا ڈیٹا</translation>
 <translation id="1736662517232558588">‏Chromium ڈیٹا کو صاف کر دیا گیا</translation>
 <translation id="1838412507805038478">‏Chromium نے توثیق کی ہے کہ <ph name="ISSUER" /> نے اس ویب سائٹ کا سرٹیفیکیٹ جاری کیا ہے۔</translation>
@@ -49,6 +50,7 @@
 <translation id="5396916991083608703">‏Chromium کو ڈیفالٹ کے بطور سیٹ کریں؟</translation>
 <translation id="5521125884468363740">‏اپنے ٹیبز کو دیکھنے کے لئے جہاں کہیں بھی آپ Chromium استعمال کرتے ہیں، سائن ان کریں اور سِنک کو آن کریں</translation>
 <translation id="5573014823074921752">‏Chromium تجویز۔ ٹیب کے مزید اختیارات کیلئے، ٹول بار میں اس "ٹیبز دکھائيں" بٹن کو ٹچ کریں اور دبائے رکھیں جو آپ کی اسکرین کے نیچے یا اوپر ہوتا ہے۔</translation>
+<translation id="5651741435382092412">‏اس سائٹ، اپنے Google اکاؤنٹ اور Chromium میں سائن ان کریں۔ آپ مطابقت پذیری کو بعد میں آن کر سکتے ہیں۔</translation>
 <translation id="5700709190537129682">‏Chromium آپ کے پاس ورڈز چیک نہیں کر سکتا ہے</translation>
 <translation id="5742135483959137648">‏لنکس کھولنے کے لیے Chromium استعمال کریں</translation>
 <translation id="5777187867430702742">‏Chromium صفحہ</translation>
@@ -60,6 +62,7 @@
 2۔ ڈیفالٹ براؤزر ایپ پر تھپتھپائیں
 3۔ Chromium کو منتخب کریں۔</translation>
 <translation id="6268381023930128611">‏Chromium سے سائن آؤٹ کریں؟</translation>
+<translation id="632825460376924298">‏Chromium میں سائن ان کرنے کی اجازت دیں</translation>
 <translation id="6337530241089703714">‏منتخب کریں کہ آیا اپنے Chromium ڈیٹا کو اس آلے سے صاف کرنا ہے یا اسے رکھنا ہے</translation>
 <translation id="6424492062988593837">‏Chromium اور بھی بہتر ہوگیا ہے! ایک نیا ورژن دستیاب ہے۔</translation>
 <translation id="6820823224820483452">‏Chromium سبھی پاس ورڈز چیک نہیں کر سکا۔ کل دوبارہ کوشش کریں۔</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_as.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_as.xtb
index 6649b7c4..6ee6b27d 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_as.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_as.xtb
@@ -57,6 +57,7 @@
 <translation id="5876773482963502140">আপুনি যদি Chromeক আপোনাৰ অৱস্থানৰ বিষয়ে জানিবলৈ দিয়ে, Chromeএ সেয়া আপুনি অনুমতি দিয়া সকলো ছাইটলৈ পঠিয়ায়। ছাইটসমূহৰ আপোনাক ওচৰ-পাজৰৰ দোকান অথবা বাতৰিৰ দৰে স্থানীয় তথ্য দেখুৱাবলগীয়া থাকিলে সেইসমূহে আপোনাক অৱস্থানৰ বিষয়ে সুধিব পাৰে।</translation>
 <translation id="6036420186814142909">আপোনাক Google Chromeত থকা সুবিধাসমূহে নিজৰ ইণ্টাৰনেট ডেটা পৰিচালনা কৰাত আৰু কিমান ক্ষিপ্ৰতাৰে আপুনি ৱেবপৃষ্ঠাসমূহ ল'ড কৰিব পাৰে সেই ক্ষেত্ৰত সহায় কৰিব।
 <ph name="BEGIN_LINK" />অধিক জানক<ph name="END_LINK" /></translation>
+<translation id="6063091872902370735">Chromeত ছাইন ইন কৰিবলৈ দিয়ক</translation>
 <translation id="6181930887571472871">Chromeলৈ সলনি কৰক</translation>
 <translation id="6238746320622508509">Chromeক আপোনাৰ ইনক’গনিট’ টেবসমূহ লক কৰিবলৈ দিয়ক।</translation>
 <translation id="6573431926118603307">আপুনি নিজৰ অন্য ডিভাইচসমূহৰ Chromeত খোলা টেবসমূহ ইয়াত প্ৰদর্শিত হ'ব।</translation>
@@ -95,5 +96,6 @@
   ৩) Chrome বাছনি কৰক।</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8736550665979974340">Google Chromeৰ জৰিয়তে সুৰক্ষিত হৈ থাকক</translation>
+<translation id="8772179140489533211">Chromeত ছাইন ইন কৰিবলৈ প্ৰম্প্‌ট প্ৰদৰ্শন কৰে।</translation>
 <translation id="9112744793181547300">Chromeক ডিফ’ল্ট হিচাপে ছেট কৰিবনে?</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_bn.xtb
index 1ed6a99..54ab0591 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_bn.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_bn.xtb
@@ -58,6 +58,7 @@
 <translation id="5876773482963502140">আপনি Chrome-কে আপনার লোকেশন জানার অনুমতি দিলে আপনি যেসব সাইটকে লোকেশন অ্যাক্সেস করার অনুমতি দেবেন, Chrome সেই সব সাইটে এই তথ্য পাঠিয়ে দেবে। কাছাকাছি দোকান অথবা সংশ্লিষ্ট এলাকার খবরের মতো স্থানীয় তথ্য আপনাকে দেখাতে হলে, কোনও সাইট আপনার লোকেশন জানতে চাইতে পারে।</translation>
 <translation id="6036420186814142909">Google Chrome-এর একটি বৈশিষ্ট্য যা আপনাকে আপনার ইন্টারনেট ডেটা পরিচালনা করতে এবং কিভাবে আপনি ওয়েবপৃষ্ঠাগুলি দ্রুত লোড করতে পারবেন সে বিষয়ে সহায়তা করে৷
 <ph name="BEGIN_LINK" />আরো জানুন<ph name="END_LINK" /></translation>
+<translation id="6063091872902370735">Chrome-এ সাইন-ইন করার অনুমতি দিন</translation>
 <translation id="6181930887571472871">Chrome-এ পাল্টান</translation>
 <translation id="6238746320622508509">Chrome-কে আপনার ছদ্মবেশী ট্যাব লক করার অনুমতি দিন।</translation>
 <translation id="6573431926118603307">আপনার অন্য ডিভাইসগুলিতে Chrome এ আপনি যে ট্যাবগুলি খুলেছেন সেগুলি এখানে দেখা যাবে।</translation>
@@ -96,5 +97,6 @@
   ৩. Chrome বেছে নিন।</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8736550665979974340">Google Chrome-এর সাহায্যে নিরাপদে থাকুন</translation>
+<translation id="8772179140489533211">Chrome-এ সাইন-ইন করার প্রম্পট দেখাবে।</translation>
 <translation id="9112744793181547300">Chrome ডিফল্ট হিসেবে সেট করতে চান?</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_de.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_de.xtb
index 369fc79..5de67ce 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_de.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_de.xtb
@@ -58,6 +58,7 @@
 <translation id="5876773482963502140">Wenn Sie zulassen, dass Chrome Ihren Standort ermittelt, sendet der Browser diesen an Websites, für die Sie die Berechtigung dazu erteilen. Möglicherweise fragen Websites nach Ihrem Standort, wenn sie lokale Informationen wie Geschäfte in der Nähe oder Nachrichten für Sie haben.</translation>
 <translation id="6036420186814142909">Google Chrome bietet Funktionen, mit denen Sie Ihre Internetdaten und die Ladezeit von Webseiten verwalten können.
 <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation>
+<translation id="6063091872902370735">Anmeldung in Chrome zulassen</translation>
 <translation id="6181930887571472871">Zu Chrome wechseln</translation>
 <translation id="6238746320622508509">Erlauben Sie Chrome, Ihre Inkognitotabs zu sperren.</translation>
 <translation id="6573431926118603307">Hier werden Tabs angezeigt, die Sie auf Ihren anderen Geräten in Chrome geöffnet haben.</translation>
@@ -96,5 +97,6 @@
 3. Wählen Sie Chrome aus.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8736550665979974340">Sicherer surfen mit Google Chrome</translation>
+<translation id="8772179140489533211">Aufforderungen für die Anmeldung in Chrome werden angezeigt.</translation>
 <translation id="9112744793181547300">Chrome als Standardbrowser festlegen?</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fr.xtb
index 246a025..008ca5c 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fr.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fr.xtb
@@ -58,6 +58,7 @@
 <translation id="5876773482963502140">Si vous l'autorisez à connaître votre position, Chrome la communique à tous les sites que vous autorisez. Certains sites peuvent demander votre position lorsqu'ils souhaitent vous montrer des informations locales, comme des magasins à proximité ou des actualités.</translation>
 <translation id="6036420186814142909">Google Chrome dispose de fonctionnalités qui vous permettent de gérer vos données Internet et la vitesse de chargement des pages Web.
 <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation>
+<translation id="6063091872902370735">Autoriser la connexion à Chrome</translation>
 <translation id="6181930887571472871">Passer à Chrome</translation>
 <translation id="6238746320622508509">Chrome peut verrouiller vos onglets de navigation privée.</translation>
 <translation id="6573431926118603307">Les onglets que vous avez ouverts dans Chrome sur vos autres appareils s'affichent ici.</translation>
@@ -96,5 +97,6 @@
   3. Sélectionnez "Chrome".</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8736550665979974340">Restez protégé avec Google Chrome</translation>
-<translation id="9112744793181547300">Définir Chrome en tant que navigateur par défaut ?</translation>
+<translation id="8772179140489533211">Permet d'afficher des invites de connexion à Chrome.</translation>
+<translation id="9112744793181547300">Utiliser Chrome par défaut ?</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb
index 0e0125a1..b23208e 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb
@@ -58,6 +58,7 @@
 <translation id="5876773482963502140">જો તમે Chromeને તમારું સ્થાન જાણવાની મંજૂરી આપો, તો Chrome તમે જે પણ સાઇટને મંજૂરી આપશો, તેને તેની માહિતી મોકલે છે. જ્યારે સાઇટ પાસે તમને બતાવવા માટે નજીકની દુકાનો અથવા સમાચાર જેવી કોઈ સ્થાનિક માહિતી હોય, ત્યારે સાઇટ તમારા સ્થાન માટે પૂછી શકે છે.</translation>
 <translation id="6036420186814142909">Google Chrome માં એવી સુવિધાઓ છે જે તમારી તમારા ઇન્ટરનેટ ડેટા અને તમે કેવી રીતે ઝડપથી વેબપૃષ્ઠોને લોડ કરવામાં સમર્થ છો તેનું સંચાલન કરવામાં સહાય કરે છે.
 <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation>
+<translation id="6063091872902370735">Chromeમાં સાઇન-ઇનની મંજૂરી આપો</translation>
 <translation id="6181930887571472871">Chrome પર સ્વિચ કરો</translation>
 <translation id="6238746320622508509">Chromeને તમારી છૂપી ટૅબ લૉક કરવા દો.</translation>
 <translation id="6573431926118603307">તમારા અન્ય ઉપકરણો પર તમે Chrome માં ખોલેલા ટૅબ્સ અહીં દેખાશે.</translation>
@@ -96,5 +97,6 @@
   3. Chrome પસંદ કરો.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8736550665979974340">Google Chromeનો ઉપયોગ કરીને સલામત રહો</translation>
+<translation id="8772179140489533211">Chromeમાં સાઇન ઇન કરવા માટે સંકેતો બતાવો.</translation>
 <translation id="9112744793181547300">Chromeને ડિફૉલ્ટ તરીકે સેટ કરીએ?</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb
index 3c04af4..ae510b1 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb
@@ -58,6 +58,7 @@
 <translation id="5876773482963502140">तुम्ही Chrome तुमचे स्थान जाणून घेण्याची परवानगी दिल्यास, Chrome हे तुम्ही अनुमती दिलेल्या कोणत्याही साइटला ते पाठवते. साइटकडे तुम्हाला दाखवण्यासाठी जवळपासची दुकाने किंवा बातम्या यांसारखी स्थानिक माहिती असल्यास, त्या कदाचित तुमचे स्थान मागू शकतात.</translation>
 <translation id="6036420186814142909">Google Chrome कडे अशी वैशिष्ट्ये आहेत जी तुम्हाला तुमचा इंटरनेट डेटा आणि तुम्ही किती द्रुतपणे वेबपृष्ठे लोड करण्यात सक्षम होते हे व्यवस्थापित करण्यात मदत करतात.
 <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation>
+<translation id="6063091872902370735">Chrome मध्ये साइन-इन करण्यासाठी अनुमती द्या</translation>
 <translation id="6181930887571472871">Chrome वर स्विच करा</translation>
 <translation id="6238746320622508509">Chrome ला तुमचे गुप्त टॅब लॉक करू द्या.</translation>
 <translation id="6573431926118603307">आपल्या अन्य डिव्हाइसेसवर तुम्ही Chrome मध्ये उघडलेले टॅब येथे दिसतील.</translation>
@@ -97,5 +98,6 @@
   ३. Chrome निवडा.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8736550665979974340">Google Chrome सह सुरक्षित राहा</translation>
+<translation id="8772179140489533211">Chrome मध्ये साइन इन करण्यासाठी सूचना दाखवते.</translation>
 <translation id="9112744793181547300">Chrome ला डीफॉल्ट म्हणून सेट करायचे आहे का?</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_or.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_or.xtb
index 0e19b05..a4cd1a9d 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_or.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_or.xtb
@@ -58,6 +58,7 @@
 <translation id="5876773482963502140">ଯଦି ଆପଣ Chromeକୁ ଆପଣଙ୍କ ଲୋକେସନ୍ ଜାଣିବାକୁ ଅନୁମତି ଦିଅନ୍ତି ତେବେ Chrome ଏହାକୁ, ଆପଣ ଅନୁମତି ଦେଇଥିବା ଯେ କୌଣସି ସାଇଟକୁ ପଠାଏ। ଯେତେବେଳେ ସାଇଟଗୁଡ଼ିକ ପାଖରେ ଆପଣଙ୍କୁ ଦେଖାଇବା ପାଇଁ ଆଖପାଖର ଦୋକାନ କିମ୍ବା ସମାଚାର ପରି ସ୍ଥାନୀୟ ସୂଚନା ଥାଏ, ସେତେବେଳେ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ ଲୋକେସନ୍ ବିଷୟରେ ପଚାରିପାରେ।</translation>
 <translation id="6036420186814142909">Google Chromeରେ ଏପରି ବୈଶିଷ୍ଟ୍ୟ ଅଛି ଯାହା ଆପଣଙ୍କୁ ଆପଣଙ୍କର ଇଣ୍ଟର୍ନେଟ୍‌ ଡାଟା ପରିଚାଳନା କରିବାରେ ଏବଂ ଆପଣ କେତେ ଜଲଦି ୱେବ୍‌ପୃଷ୍ଠାଗୁଡ଼ିକ ଲୋଡ୍‌ କରିପାରିବେ, ସେଥିରେ ସାହାଯ୍ୟ କରିଥାଏ।
 <ph name="BEGIN_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK" /></translation>
+<translation id="6063091872902370735">Chromeରେ ସାଇନ୍-ଇନ୍ କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ</translation>
 <translation id="6181930887571472871">Chromeକୁ ସ୍ୱିଚ୍ କରନ୍ତୁ</translation>
 <translation id="6238746320622508509">Chromeକୁ ଆପଣଙ୍କ ଇନକଗ୍ନିଟୋ ଟାବଗୁଡ଼ିକୁ ଲକ୍ କରିବାକୁ ଦିଅନ୍ତୁ।</translation>
 <translation id="6573431926118603307">ଏଠାରେ ଆପଣଙ୍କର ଅନ୍ୟ ଡିଭାଇସ୍‌ର Chromeରେ ଯେଉଁ ଟାବ୍‌ ଖୋଲିଛନ୍ତି ତାହା ଦେଖାଯିବ।</translation>
@@ -96,5 +97,6 @@
   3. Chrome ଚୟନ କରନ୍ତୁ।</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8736550665979974340">Google Chrome ସହ ସୁରକ୍ଷିତ ରୁହନ୍ତୁ</translation>
+<translation id="8772179140489533211">Chromeରେ ସାଇନ୍ ଇନ୍ କରିବାକୁ ପ୍ରମ୍ପ୍ଟ ଦେଖାଏ।</translation>
 <translation id="9112744793181547300">Chromeକୁ ଡିଫଲ୍ଟ ଭାବେ ସେଟ୍ କରିବେ?</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb
index 76c49d8..ccc1027 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb
@@ -58,6 +58,7 @@
 <translation id="5876773482963502140">உங்கள் இருப்பிடத்தை Chrome அறிந்துகொள்ள அனுமதித்தால் நீங்கள் அனுமதிக்கும் தளங்களுக்கு Chrome அதை அனுப்பும். அருகிலுள்ள கடைகள்/செய்திகள் போன்ற உள்ளூர் தகவல்களைக் காட்ட வேண்டிய சூழ்நிலைகளில் உங்கள் இருப்பிடத்தைத் தளங்கள் கேட்கக்கூடும்.</translation>
 <translation id="6036420186814142909">உங்கள் இணையத் தரவை நிர்வகிக்கவும் மேலும் எவ்வளவு விரைவாக உங்களால் வலைப்பக்கங்களை ஏற்ற முடிகிறது என்பதற்கு உதவும் அம்சங்களை Google Chrome கொண்டிருக்கிறது
 <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></translation>
+<translation id="6063091872902370735">Chrome உள்நுழைவை அனுமதி</translation>
 <translation id="6181930887571472871">Chromeமிற்கு மாறுங்கள்</translation>
 <translation id="6238746320622508509">மறைநிலைத் தாவல்களைப் பூட்ட Chromeமை அனுமதிக்கவும்.</translation>
 <translation id="6573431926118603307">உங்கள் பிற சாதனங்களில் பயன்படுத்திய Chrome இல் திறந்த தாவல்கள் இங்கே தோன்றும்.</translation>
@@ -96,5 +97,6 @@
   3. Chromeமைத் தேர்ந்தெடுக்கவும்.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8736550665979974340">Google Chromeமைப் பயன்படுத்தி பாதுகாப்பாக உலாவுங்கள்</translation>
+<translation id="8772179140489533211">Chromeமில் உள்நுழைவதற்கான அறிவிப்புகளைக் காட்டும்.</translation>
 <translation id="9112744793181547300">Chromeமை இயல்பு உலாவியாக அமைக்கவா?</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ur.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ur.xtb
index 4fb39db..f3145bb 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ur.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ur.xtb
@@ -58,6 +58,7 @@
 <translation id="5876773482963502140">‏اگر آپ Chrome کو اپنا مقام جاننے کی اجازت دیتے ہیں تو Chrome اسے آپ کی کسی بھی اس سائٹ کو بھیجتا ہے جسے آپ اجازت دیتے ہیں۔ سائٹس کے پاس آپ کو دکھانے کے لیے مقامی معلومات، جیسے قریبی دکانیں یا خبریں ہوں تو وہ آپ کے مقام کے بارے میں پوچھ سکتی ہیں۔</translation>
 <translation id="6036420186814142909">‏Google Chrome میں ایسی خصوصیات ہیں جو آپ کے انٹرنیٹ ڈیٹا اور کتنی جلدی آپ ویب صفحات کو لوڈ کرنے کیلئے اہل ہیں اس کا نظم کرنے میں آپ کی مدد کرتی ہیں۔
 <ph name="BEGIN_LINK" />مزید جانیں<ph name="END_LINK" /></translation>
+<translation id="6063091872902370735">‏Chrome میں سائن ان کرنے کی اجازت دیں</translation>
 <translation id="6181930887571472871">‏Chrome پر سوئچ کریں</translation>
 <translation id="6238746320622508509">‏Chrome کو اپنے پوشیدگی ٹیبز مقفل کرنے دیں۔</translation>
 <translation id="6573431926118603307">‏اپنے دیگر آلات پر Chrome میں آپ نے جو ٹیبز کھولے ہیں وہ یہاں ظاہر ہوں گے۔</translation>
@@ -96,5 +97,6 @@
   3۔ Chrome منتخب کریں۔</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8736550665979974340">‏Google Chrome کے ساتھ محفوظ رہیں</translation>
+<translation id="8772179140489533211">‏Chrome میں سائن ان کرنے کے لیے پرامپٹس دکھاتا ہے۔</translation>
 <translation id="9112744793181547300">‏Chrome کو ڈیفالٹ کے بطور سیٹ کریں؟</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_strings_af.xtb b/ios/chrome/app/strings/resources/ios_strings_af.xtb
index ec16af0..959add2 100644
--- a/ios/chrome/app/strings/resources/ios_strings_af.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_af.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Merk …</translation>
 <translation id="3131206671572504478">Blokkeer alles</translation>
 <translation id="3153862085237805241">Stoor kaart</translation>
+<translation id="3157387275655328056">Voeg by leeslys</translation>
 <translation id="3157684681743766797">Merk alles …</translation>
 <translation id="3161291298470460782">Dit sal jou afmeld, sinkronisering afskakel en alle Chrome-data op hierdie toestel uitvee. Jou gesinkroniseerde data sal in jou Google-rekening bly.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Jou webkoekiesinstelling is van toepassing op alle oortjies. Herlaai die oortjie om 'n nuwe instelling op 'n oop oortjie toe te pas.</translation>
 <translation id="5190835502935405962">Boekmerkebalk</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Maak oortjie toe</translation>
 <translation id="5228579091201413441">Aktiveer sinkronisering</translation>
 <translation id="5234764350956374838">Verwerp</translation>
 <translation id="5245322853195994030">Kanselleer sinkronisering</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Item is verwyder</translation>
 <translation id="6136914049981179737">Sekondes gelede</translation>
 <translation id="6144589619057374135">Maak ${url} in Incognitomodus oop</translation>
-<translation id="616831107264507309">Lees later</translation>
 <translation id="6177442314419606057">Soek in Chrome</translation>
 <translation id="6184086493125982861">Wys oortjies</translation>
 <translation id="6187302354554850004">Laas gesinkroniseer: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Maak <ph name="BEGIN_LINK" />Google-dienste<ph name="END_LINK" /> oop en tik op Veiligblaai om Veiligblaai aan te skakel.</translation>
 <translation id="6303969859164067831">Meld af en skakel sinkronisering af</translation>
 <translation id="6308436439357671616">Dit laat jou foto's neem en oplaai.</translation>
+<translation id="6321526113093607004">Voeg by Boekmerke</translation>
 <translation id="6324528485781869530">Wissel gesinkroniseerde rekening</translation>
 <translation id="6324669097367352121">Aanmeldinstellings</translation>
 <translation id="6337234675334993532">Enkriptering</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Kon nie aflaai nie</translation>
 <translation id="7859704718976024901">Blaaigeskiedenis</translation>
 <translation id="7887198238286927132">Om jou privaatheid te beskerm, sal Chrome nie hierdie veld outomaties invul nie.</translation>
-<translation id="7918293828610777738">Jou leeslys is vanlyn beskikbaar. Tik op <ph name="SHARE_OPENING_ICON" /> en dan <ph name="READ_LATER_TEXT" /> om 'n bladsy by jou leeslys te voeg.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Voer wagwoorde uit …</translation>
 <translation id="7947953824732555851">Aanvaar en meld aan</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_am.xtb b/ios/chrome/app/strings/resources/ios_strings_am.xtb
index 773ebd00..f2e266e 100644
--- a/ios/chrome/app/strings/resources/ios_strings_am.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_am.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">ምልክት አድርግበት…</translation>
 <translation id="3131206671572504478">ሁሉንም አግድ</translation>
 <translation id="3153862085237805241">ካርድ አስቀምጥ</translation>
+<translation id="3157387275655328056">ወደ የንባብ ዝርዝር አክል</translation>
 <translation id="3157684681743766797">ሁሉንም ምልክት አድርግባቸው…</translation>
 <translation id="3161291298470460782">ይህ እርስዎን ዘግቶ ያስወጣዎታል፣ ስምረትን ያጠፋል እና እንዲሁም ሁሉንም የChrome ውሂብ ያጸዳል። የእርስዎ የሰመረ ውሂብ በእርስዎ የGoogle መለያ ውስጥ ይቆያል።</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">የኩኪዎችዎ ቅንብር በሁሉም ትሮች ላይ ተፈጻሚ ይሆናል። በክፍት ትር ላይ አዲስ ቅንብርን ለመተግበር ትሩን እንደገና ይጫኑት።</translation>
 <translation id="5190835502935405962">የዕልባቶች አሞሌ</translation>
 <translation id="5197255632782567636">በይነመረብ</translation>
+<translation id="5210365745912300556">ትር ዝጋ</translation>
 <translation id="5228579091201413441">ማመሳሰልን አንቃ</translation>
 <translation id="5234764350956374838">አሰናብት</translation>
 <translation id="5245322853195994030">ስምረትን ሰርዝ</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">ንጥል ተወግዷል</translation>
 <translation id="6136914049981179737">ከሰከንዶች በፊት</translation>
 <translation id="6144589619057374135">ማንነት በማያሳውቅ ሁነታ ላይ ${url}ን ይክፈቱ</translation>
-<translation id="616831107264507309">በኋላ ላይ ያንብቡ</translation>
 <translation id="6177442314419606057">በChrome ውስጥ ይፈልጉ</translation>
 <translation id="6184086493125982861">ትሮችን አሳይ</translation>
 <translation id="6187302354554850004">ለመጨረሻ ጊዜ የተመሳሰለው፦ <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">ደህንነቱ የተጠበቀ አሰሳን ለማብራት <ph name="BEGIN_LINK" />የGoogle አገልግሎቶች<ph name="END_LINK" />ን ይክፈቱ እና የጥንቃቄ አሰሳን መታ ያድርጉ።</translation>
 <translation id="6303969859164067831">ዘግተው ይውጡ እና ስምረትን ያጥፉ</translation>
 <translation id="6308436439357671616">ይህ ፎቶዎችን እንዲያነሱ እና እንዲሰቅሉ ያስችልዎታል።</translation>
+<translation id="6321526113093607004">ወደ ዕልባቶች አክል</translation>
 <translation id="6324528485781869530">የማመሳስል መቀየሪያ መለያ</translation>
 <translation id="6324669097367352121">የመግቢያ ቅንብሮች</translation>
 <translation id="6337234675334993532">ምስጠራ</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">ማውረድ አልተቻለም</translation>
 <translation id="7859704718976024901">የአሰሳ ታሪክ</translation>
 <translation id="7887198238286927132">የእርስዎን ግላዊነት ለመጠበቅ፣ Chrome ይህን መስክ በራስ-ሰር ይሞላዋል።</translation>
-<translation id="7918293828610777738">የንባብ ዝርዝርዎ ከመስመር ውጭ ይገኛል። አንድ ገጽ ወደ የንባብ ዝርዝርዎ ለማከል በመጀመሪያ <ph name="SHARE_OPENING_ICON" />ን ከዚያም <ph name="READ_LATER_TEXT" />ን መታ ያድርጉ።</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">የይለፍ ቃላትን ወደ ውጭ ላክ...</translation>
 <translation id="7947953824732555851">ተቀበል እና ግባ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
index a7826164..1b08801d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ar.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">وضع علامة...</translation>
 <translation id="3131206671572504478">حظر الكل</translation>
 <translation id="3153862085237805241">حفظ البطاقة</translation>
+<translation id="3157387275655328056">إضافة إلى قائمة القراءة</translation>
 <translation id="3157684681743766797">وضع علامة على الكل...</translation>
 <translation id="3161291298470460782">‏سيؤدي هذا الإجراء إلى تسجيل الخروج من حسابك على Chrome وإيقاف المزامنة ومحو جميع بيانات Chrome من هذا الجهاز. وستظل البيانات المتزامنة في حسابك على Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">تنطبق إعدادات ملفات تعريف الارتباط على جميع علامات التبويب. ولتطبيق إعدادات جديدة في علامة تبويب مفتوحة، يجب إعادة تحميل علامة التبويب.</translation>
 <translation id="5190835502935405962">شريط الإشارات</translation>
 <translation id="5197255632782567636">الإنترنت</translation>
+<translation id="5210365745912300556">إغلاق علامة التبويب</translation>
 <translation id="5228579091201413441">تفعيل المزامنة</translation>
 <translation id="5234764350956374838">تجاهل</translation>
 <translation id="5245322853195994030">إلغاء المزامنة</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">أُزيلَ عنصر</translation>
 <translation id="6136914049981179737">قبل ثانية</translation>
 <translation id="6144589619057374135">‏فتح {url}$ في وضع التصفُّح المتخفي</translation>
-<translation id="616831107264507309">القراءة لاحقًا</translation>
 <translation id="6177442314419606057">‏البحث في Chrome</translation>
 <translation id="6184086493125982861">إظهار علامات التبويب</translation>
 <translation id="6187302354554850004">تاريخ آخر مزامنة: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">‏لتفعيل "التصفّح الآمن"، افتح <ph name="BEGIN_LINK" />خدمات Google<ph name="END_LINK" /> وانقر على "التصفّح الآمن".</translation>
 <translation id="6303969859164067831">تسجيل الخروج وإيقاف المزامنة</translation>
 <translation id="6308436439357671616">هذا يتيح لك التقاط الصور وتحميلها.</translation>
+<translation id="6321526113093607004">إضافة إلى الإشارات المرجعية</translation>
 <translation id="6324528485781869530">تبديل حساب المزامنة</translation>
 <translation id="6324669097367352121">إعدادات تسجيل الدخول</translation>
 <translation id="6337234675334993532">ترميز</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">تعذّر التنزيل.</translation>
 <translation id="7859704718976024901">سجلّ التصفّح</translation>
 <translation id="7887198238286927132">‏لحماية خصوصيتك، لن يجري Chrome الملء التلقائي لهذا الحقل.</translation>
-<translation id="7918293828610777738">قائمة القراءة متاحة بلا اتصال بالإنترنت. لإضافة صفحة إلى قائمة القراءة، انقر على  <ph name="SHARE_OPENING_ICON" />  ثم <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">جارٍ تصدير كلمات المرور...</translation>
 <translation id="7947953824732555851">قبول وتسجيل الدخول</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_as.xtb b/ios/chrome/app/strings/resources/ios_strings_as.xtb
index ff3e248a..c5097563 100644
--- a/ios/chrome/app/strings/resources/ios_strings_as.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_as.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">চিহ্নিত কৰক…</translation>
 <translation id="3131206671572504478">সকলো অৱৰোধ কৰক</translation>
 <translation id="3153862085237805241">কাৰ্ড ছেভ কৰক</translation>
+<translation id="3157387275655328056">পঢ়াৰ সূচীত যোগ দিয়ক</translation>
 <translation id="3157684681743766797">সকলো চিহ্নিত কৰক…</translation>
 <translation id="3161291298470460782">এই কাৰ্যই আপোনাক ছাইন আউট কৰাব, ছিংক অফ কৰিব আৰু আপোনাৰ ডিভাইচটোৰ পৰা সকলো Chrome ডেটা মচিব। আপোনাৰ ছিংক কৰা ডেটা আপোনাৰ Google একাউণ্টত থাকিব।</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">আপোনাৰ কুকিসমূহৰ ছেটিং সকলো টেবত প্ৰযোজ্য হয়। এটা খোল খাই থকা টেবত এটা নতুন ছেটিং প্ৰয়োগ কৰিবলৈ টেবটো পুনৰ ল’ড কৰক।</translation>
 <translation id="5190835502935405962">বুকমাৰ্কৰ বাৰ</translation>
 <translation id="5197255632782567636">ইন্টাৰনেট</translation>
+<translation id="5210365745912300556">টেব বন্ধ কৰক</translation>
 <translation id="5228579091201413441">ছিংক সক্ষম কৰক</translation>
 <translation id="5234764350956374838">অগ্ৰাহ্য কৰক</translation>
 <translation id="5245322853195994030">ছিংক বাতিল কৰক</translation>
@@ -446,6 +448,7 @@
 <translation id="5782227691023083829">অনুবাদ কাৰ্য্য চলি আছে...</translation>
 <translation id="5803566855766646066">আপুনি এই নতুন কাৰ্ডখন প্ৰত্যাখ্যান কৰিব বিচাৰে বুলি নিশ্চিতনে?</translation>
 <translation id="5816228676161003208">এই সুবিধাই আপোনাক নিজৰ কণ্ঠস্বৰ ব্যৱহাৰ কৰি ক্ষিপ্ৰভাৱে সন্ধান কৰিবলৈ দিয়ে।</translation>
+<translation id="581659025233126501">ছিংক অন কৰক</translation>
 <translation id="5819208479324046259"><ph name="MANAGER" />এ পৰিচালনা কৰে। <ph name="BEGIN_LINK" />অধিক জানক<ph name="END_LINK" /></translation>
 <translation id="5846482154967366008">সন্ধান ইঞ্জিন</translation>
 <translation id="5854790677617711513">৩০ দিনতকৈ পুৰণি</translation>
@@ -485,7 +488,6 @@
 <translation id="6127379762771434464">বস্তুটো আঁতৰোৱা হ’ল</translation>
 <translation id="6136914049981179737">ছেকেণ্ড পূর্বে</translation>
 <translation id="6144589619057374135">${url} ইনক’গনিট’ত খোলক</translation>
-<translation id="616831107264507309">পিছত পঢ়ক</translation>
 <translation id="6177442314419606057">Chromeত সন্ধান কৰক</translation>
 <translation id="6184086493125982861">টেব দেখুওৱাক</translation>
 <translation id="6187302354554850004">অন্তিমবাৰ ছিংক কৰাৰ সময় <ph name="LAST_USED_TIME" /></translation>
@@ -493,12 +495,14 @@
 <translation id="6196207969502475924">কণ্ঠধ্বনিৰদ্বাৰা সন্ধান</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} টা টেব বন্ধ কৰক}one{{COUNT} টা টেব বন্ধ কৰক}other{{COUNT} টা টেব বন্ধ কৰক}}</translation>
 <translation id="6219688215832490856">কেতিয়াও অনুবাদ নকৰিব</translation>
+<translation id="6223816392543092032">আপোনাৰ আটাইবোৰ ডিভাইচত নিজৰ বুকমাৰ্ক, ব্ৰাউজিঙৰ ইতিহাস, পাছৱৰ্ড আৰু আন ছেটিংসমূহ পাওক।</translation>
 <translation id="6254066287920239840">ব্ৰাউজাৰৰ পৰিৱৰ্তে এপত লিংকসমূহ খোলক৷</translation>
 <translation id="6255097610484507482">ক্ৰেডিট কাৰ্ড সম্পাদনা কৰক</translation>
 <translation id="6284652193729350524"><ph name="LANGUAGE" /> অনুবাদ কৰাৰ প্ৰস্তাৱ দিয়ক</translation>
 <translation id="6293101329759844770">সুৰক্ষিত ব্ৰাউজিং অন কৰিবলৈ <ph name="BEGIN_LINK" />Google সেৱা<ph name="END_LINK" /> খোলক আৰু সুৰক্ষিত ব্ৰাউজিঙত টিপক।</translation>
 <translation id="6303969859164067831">ছাইন আউট কৰি ছিংক অফ কৰক</translation>
 <translation id="6308436439357671616">ইয়াৰ জৰিয়তে আপুনি ফট’ তুলিব আৰু আপল’ড কৰিব পাৰে।</translation>
+<translation id="6321526113093607004">বুকমাৰ্কত যোগ দিয়ক</translation>
 <translation id="6324528485781869530">বেলেগ ছিংক একাউণ্ট ব্যৱহাৰ কৰক</translation>
 <translation id="6324669097367352121">ছাইন ইন কৰাৰ ছেটিং</translation>
 <translation id="6337234675334993532">এনক্ৰিপশ্বন</translation>
@@ -525,6 +529,7 @@
 <translation id="6445981559479772097">বাৰ্তা পঠিওৱা হ’ল৷</translation>
 <translation id="6447842834002726250">কুকীসমূহ</translation>
 <translation id="6453018583485750254">কেতিয়াও পৰীক্ষা কৰা নাই।</translation>
+<translation id="6459307836338400162">গোপনীয়তা, সুৰক্ষা আৰু ডেটা সংগ্ৰহ সম্পৰ্কীয় অধিক ছেটিঙৰ বাবে <ph name="BEGIN_LINK" />ছিংক<ph name="END_LINK" /> আৰু <ph name="BEGIN_LINK" />Google সেৱাসমূহ<ph name="END_LINK" /> দুয়োটা চাওক।</translation>
 <translation id="6464071786529933911">নতুন ইনক’গনিট’ টেবত খোলক</translation>
 <translation id="6464397691496239022">ছাইটসমূহে আপোনাৰ ব্ৰাউজিঙৰ অভিজ্ঞতা উন্নত কৰিবলৈ কুকিসমূহ ব্যৱহাৰ কৰিব পাৰে, উদাহৰণস্বৰূপে, আপোনাক ছাইন ইন কৰি ৰাখিবলৈ অথবা আপোনাৰ শ্বপিং কার্টত থকা বস্তুবোৰ মনত ৰাখিবলৈ।
 
@@ -666,7 +671,6 @@
 <translation id="7856733331829174190">ডাউনল'ড কৰিব পৰা নগ'ল</translation>
 <translation id="7859704718976024901">ব্ৰাউজিঙৰ ইতিহাস</translation>
 <translation id="7887198238286927132">আপোনাৰ গোপনীয়তা সুৰক্ষিত কৰিবলৈ Chromeএ এই ক্ষেত্ৰখন স্বয়ংক্ৰিয়ভাৱে পূৰ নকৰে।</translation>
-<translation id="7918293828610777738">আপোনাৰ পঢ়াৰ সূচী অফলাইন উপলব্ধ। আপোনাৰ পঢ়াৰ সূচীত পৃষ্ঠা যোগ কৰিবলৈ <ph name="SHARE_OPENING_ICON" /> টিপক আৰু তাৰপিছত <ph name="READ_LATER_TEXT" />।</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">পাছৱর্ডসমূহ ৰপ্তানি কৰক...</translation>
 <translation id="7947953824732555851">গ্ৰহণ কৰি ছাইন ইন কৰক</translation>
@@ -705,6 +709,7 @@
 <translation id="8281886186245836920">এৰি যাওক</translation>
 <translation id="8283172974887967105">ছেট কৰক…</translation>
 <translation id="8299417921174340354">পাছৱৰ্ডসমূহ ব্যৱহাৰ কৰিবলৈ আপুনি প্ৰথমে নিজৰ ডিভাইচত এটা পাছক’ড ছেট কৰিবই লাগিব।</translation>
+<translation id="83100941411593607">ছাইন ইন কৰাটো অক্ষম কৰা হ'ল</translation>
 <translation id="8319076807703933069">নতুন সন্ধান</translation>
 <translation id="8323906514956095947">টেবৰ অধিক বিকল্পৰ বাবে স্পৰ্শ কৰি ধৰি ৰাখক</translation>
 <translation id="8328777765163860529">সকলো বন্ধ কৰক</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_az.xtb b/ios/chrome/app/strings/resources/ios_strings_az.xtb
index 8fcd8b6..bfe932b6 100644
--- a/ios/chrome/app/strings/resources/ios_strings_az.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_az.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Qeyd edin...</translation>
 <translation id="3131206671572504478">Hamısını blok edin</translation>
 <translation id="3153862085237805241">Kartı Yadda saxlayın</translation>
+<translation id="3157387275655328056">Oxu Siyahısına əlavə edin</translation>
 <translation id="3157684681743766797">Hamısını Qeyd Edin…</translation>
 <translation id="3161291298470460782">Bunun nəticəsində çıxacaqsınız, sinxronizasiya deaktiv ediləcək və bu cihazdakı bütün Chrome datası silinəcək. Sinxronlaşdırılmış data Google Hesabınızda qalacaq.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Kuki ayarınız bütün tablara tətbiq edilir. Açıq taba yeni ayar tətbiq etmək üçün tabı yenidən yükləyin.</translation>
 <translation id="5190835502935405962">Əlfəcinlər Paneli</translation>
 <translation id="5197255632782567636">internet</translation>
+<translation id="5210365745912300556">Paneli qapadın</translation>
 <translation id="5228579091201413441">Sinxronizasiyanı aktiv edin</translation>
 <translation id="5234764350956374838">Kənarlaşdırın</translation>
 <translation id="5245322853195994030">Sinxronizasiyanı Ləğv Edin</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Element silindi</translation>
 <translation id="6136914049981179737">Saniyələr əvvəl</translation>
 <translation id="6144589619057374135">${url} keçidini Anonim rejimdə açın</translation>
-<translation id="616831107264507309">Daha Sonra Oxuyun</translation>
 <translation id="6177442314419606057">Chrome'da axtarın</translation>
 <translation id="6184086493125982861">Panelləri Göstərin</translation>
 <translation id="6187302354554850004">Son sinxronizasiya: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Təhlükəsiz Baxışı aktiv etmək üçün <ph name="BEGIN_LINK" />Google Xidmətləri<ph name="END_LINK" /> bölməsini açın və Təhlükəsiz Baxış seçiminə toxunun.</translation>
 <translation id="6303969859164067831">Çıxış edin və sinxronizasiyanı deaktiv edin</translation>
 <translation id="6308436439357671616">Foto çəkməyə və yükləməyə icazə verir.</translation>
+<translation id="6321526113093607004">Əlfəcinlərə əlavə edin</translation>
 <translation id="6324528485781869530">Sinxronizasiya Hesabına keçin</translation>
 <translation id="6324669097367352121">Daxil olma ayarları</translation>
 <translation id="6337234675334993532">Şifrələmə</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Yüklənmədi</translation>
 <translation id="7859704718976024901">Brauzer Tarixçəsi</translation>
 <translation id="7887198238286927132">Chrome məxfiliyi qorumaq üçün bu sahəni avtomatik doldurmayacaq.</translation>
-<translation id="7918293828610777738">Oxu siyahısı oflayn əlçatandır. Oxu siyahısına səhifə əlavə etmək üçün <ph name="SHARE_OPENING_ICON" /> ikonasına, sonra isə <ph name="READ_LATER_TEXT" /> ikonasına klikləyin.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Parolları Eksport Edin...</translation>
 <translation id="7947953824732555851">Qəbul edin və daxil olun</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_be.xtb b/ios/chrome/app/strings/resources/ios_strings_be.xtb
index afd16aff..1ebd3e4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_be.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_be.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Пазначыць…</translation>
 <translation id="3131206671572504478">Блакіруюцца ўсе</translation>
 <translation id="3153862085237805241">Захаваць картку</translation>
+<translation id="3157387275655328056">Дадаць у спіс чытання</translation>
 <translation id="3157684681743766797">Пазначыць усе…</translation>
 <translation id="3161291298470460782">Вы выйдзеце з уліковага запісу, сінхранізацыя будзе выключана, усе даныя Chrome будуць выдалены з гэтай прылады. Сінхранізаваныя даныя застануцца ва Уліковым запісе Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Налада файлаў cookie прымяняецца да ўсіх укладак. Каб прымяніць новую наладу да адкрытай укладкі, перазагрузіце ўкладку.</translation>
 <translation id="5190835502935405962">Панэль закладак</translation>
 <translation id="5197255632782567636">Інтэрнэт</translation>
+<translation id="5210365745912300556">Закрыць укладку</translation>
 <translation id="5228579091201413441">Уключыць сінхранізацыю</translation>
 <translation id="5234764350956374838">Адхіліць</translation>
 <translation id="5245322853195994030">Скасаваць сінхранізацыю</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Элемент выдалены</translation>
 <translation id="6136914049981179737">с таму</translation>
 <translation id="6144589619057374135">Адкрыць ${url} у рэжыме інкогніта</translation>
-<translation id="616831107264507309">Чытаць пазней</translation>
 <translation id="6177442314419606057">Шукаць у Chrome</translation>
 <translation id="6184086493125982861">Паказваць укладкі</translation>
 <translation id="6187302354554850004">Апошняя сінхранізацыя: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Каб уключыць Бяспечны прагляд, адкрыйце старонку <ph name="BEGIN_LINK" />Сэрвісы Google<ph name="END_LINK" /> і націсніце на пункт "Бяспечны прагляд".</translation>
 <translation id="6303969859164067831">Выйсці і выключыць сінхранізацыю</translation>
 <translation id="6308436439357671616">Гэта дазваляе рабіць і запампоўваць фота.</translation>
+<translation id="6321526113093607004">Дадаць у Закладкі</translation>
 <translation id="6324528485781869530">Перакл. ул. запіс сінхранізацыі</translation>
 <translation id="6324669097367352121">Налады ўваходу</translation>
 <translation id="6337234675334993532">Шыфраванне</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Не ўдалося спампаваць</translation>
 <translation id="7859704718976024901">Гісторыя прагляду сайтаў</translation>
 <translation id="7887198238286927132">У мэтах аховы вашай прыватнасці Chrome не будзе выкарыстоўваць аўтазапаўненне ў гэтым полі.</translation>
-<translation id="7918293828610777738">Спіс чытання даступны ў пазасеткавым рэжыме. Каб дадаць старонку ў спіс чытання, націсніце значок <ph name="SHARE_OPENING_ICON" />, затым <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Экспарт пароляў...</translation>
 <translation id="7947953824732555851">Прыняць і ўвайсці</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
index 50ce9abf..09ce85c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bg.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Означаване…</translation>
 <translation id="3131206671572504478">Блокиране на всички</translation>
 <translation id="3153862085237805241">Запазване на картата</translation>
+<translation id="3157387275655328056">Добавяне към списъка за четене</translation>
 <translation id="3157684681743766797">Означаване на всички…</translation>
 <translation id="3161291298470460782">Това действие ще прекрати сесията ви, ще изключи синхронизирането и ще изчисти всички данни в Chrome от това устройство. Синхронизираната информация ще остане в профила ви в Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Настройката ви за „бисквитките“ се прилага за всички раздели. За да приложите нова настройка за отворен раздел, презаредете го.</translation>
 <translation id="5190835502935405962">Лента на отметките</translation>
 <translation id="5197255632782567636">Интернет</translation>
+<translation id="5210365745912300556">Затваряне на раздела</translation>
 <translation id="5228579091201413441">Активиране на синхронизирането</translation>
 <translation id="5234764350956374838">Отхвърляне</translation>
 <translation id="5245322853195994030">Анулиране на синхронизирането</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Елементът бе премахнат</translation>
 <translation id="6136914049981179737">Току-що</translation>
 <translation id="6144589619057374135">Отваряне на ${url} в режим „инкогнито“</translation>
-<translation id="616831107264507309">Четене по-късно</translation>
 <translation id="6177442314419606057">Търсене в Chrome</translation>
 <translation id="6184086493125982861">Показване на разделите</translation>
 <translation id="6187302354554850004">Последно синхр.: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">За да включите „Безопасно сърфиране“, отворете <ph name="BEGIN_LINK" />Услуги на Google<ph name="END_LINK" /> и докоснете съответната опция.</translation>
 <translation id="6303969859164067831">Изход от профила и изключване на синхронизирането</translation>
 <translation id="6308436439357671616">Това ви позволява да правите и качвате снимки.</translation>
+<translation id="6321526113093607004">Добавяне към отметките</translation>
 <translation id="6324528485781869530">Превключване на профила за синхронизиране</translation>
 <translation id="6324669097367352121">Настройки за вход</translation>
 <translation id="6337234675334993532">Шифроване</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Неуспешно изтегляне</translation>
 <translation id="7859704718976024901">История на сърфирането</translation>
 <translation id="7887198238286927132">За да защити поверителността ви, Chrome няма да попълни автоматично това поле.</translation>
-<translation id="7918293828610777738">Списъкът ви за четене е достъпен офлайн. За да добавите страница към него, докоснете <ph name="SHARE_OPENING_ICON" /> и след това „<ph name="READ_LATER_TEXT" />“.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Експортиране на паролите...</translation>
 <translation id="7947953824732555851">Приемам и влизам</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
index 6292d4f..efe07ee 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">চিহ্নিত করুন…</translation>
 <translation id="3131206671572504478">সব ব্লক করুন</translation>
 <translation id="3153862085237805241">কার্ড সেভ করুন</translation>
+<translation id="3157387275655328056">পড়ার তালিকায় যোগ করুন</translation>
 <translation id="3157684681743766797">সবগুলি চিহ্নিত করুন…</translation>
 <translation id="3161291298470460782">এর ফলে আপনি অ্যাকাউন্ট থেকে সাইন-আউট হয়ে যাবেন, সিঙ্ক করার সুবিধা বন্ধ হয়ে যাবে এবং এই ডিভাইস থেকে Chrome-এর সমস্ত ডেটা মুছে যাবে। আপনি যেসব ডেটা সিঙ্ক করেছেন, সেগুলি আপনার Google অ্যাকাউন্টেই থেকে যাবে।</translation>
 <translation id="3169472444629675720">আবিষ্কার করুন</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">আপনার কুকি সেটিং সমস্ত ট্যাবের ক্ষেত্রেই প্রযোজ্য। কোনও খোলা ট্যাবে নতুন সেটিং প্রয়োগ করতে, ট্যাবটি আবার লোড করুন।</translation>
 <translation id="5190835502935405962">বুকমার্ক বার</translation>
 <translation id="5197255632782567636">ইন্টারনেট</translation>
+<translation id="5210365745912300556">ট্যাব বন্ধ করুন</translation>
 <translation id="5228579091201413441">সিঙ্ক সক্ষম করুন</translation>
 <translation id="5234764350956374838">খারিজ</translation>
 <translation id="5245322853195994030">সিঙ্ক বাতিল করুন</translation>
@@ -447,6 +449,7 @@
 <translation id="5782227691023083829">অনুবাদ হচ্ছে...</translation>
 <translation id="5803566855766646066">আপনি কি সত্যিই এই নতুন কার্ড বাতিল করতে চান?</translation>
 <translation id="5816228676161003208">এটি আপনাকে আপনার ভয়েস ব্যবহার করে আরও দ্রুত সার্চ করতে দেয়।</translation>
+<translation id="581659025233126501">সিঙ্ক চালু করুন</translation>
 <translation id="5819208479324046259"><ph name="MANAGER" /> এটি ম্যানেজ করে। <ph name="BEGIN_LINK" />আরও জানুন<ph name="END_LINK" /></translation>
 <translation id="5846482154967366008">সার্চ ইঞ্জিন</translation>
 <translation id="5854790677617711513">৩০ দিনের বেশি পুরনো</translation>
@@ -486,7 +489,6 @@
 <translation id="6127379762771434464">আইটেম সরানো হয়েছে</translation>
 <translation id="6136914049981179737">সেকেন্ড আগে</translation>
 <translation id="6144589619057374135">'ছদ্মবেশী মোডে' ${url} খুলুন</translation>
-<translation id="616831107264507309">পরে পড়ুন</translation>
 <translation id="6177442314419606057">Chrome-এ সার্চ করুন</translation>
 <translation id="6184086493125982861">ট্যাব দেখান</translation>
 <translation id="6187302354554850004">শেষে সিঙ্ক হয়েছে: <ph name="LAST_USED_TIME" /></translation>
@@ -494,12 +496,14 @@
 <translation id="6196207969502475924">ভয়েস সার্চ</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT}টি ট্যাব বন্ধ করুন}one{{COUNT}টি ট্যাব বন্ধ করুন}other{{COUNT}টি ট্যাব বন্ধ করুন}}</translation>
 <translation id="6219688215832490856">কখনও অনুবাদ করবেন না</translation>
+<translation id="6223816392543092032">আপনার সবকটি ডিভাইসে বুকমার্ক, ইতিহাস, পাসওয়ার্ড এবং অন্যান্য সেটিংস পান।</translation>
 <translation id="6254066287920239840">ব্রাউজারের পরিবর্তে অ্যাপটিতে লিঙ্কগুলি খুলুন।</translation>
 <translation id="6255097610484507482">ক্রেডিট কার্ড সম্পাদনা করুন</translation>
 <translation id="6284652193729350524"><ph name="LANGUAGE" /> ভাষায় অনুবাদ করার প্রস্তাব দিন</translation>
 <translation id="6293101329759844770">Safe Browsing চালু করতে, <ph name="BEGIN_LINK" />Google পরিষেবা<ph name="END_LINK" /> বিকল্পটি খুলে Safe Browsing-এ ট্যাপ করুন।</translation>
 <translation id="6303969859164067831">সাইন-আউট করুন এবং সিঙ্ক করা বন্ধ করুন</translation>
 <translation id="6308436439357671616">এটি আপনাকে ফটো তুলতে এবং আপলোড করতে দেয়।</translation>
+<translation id="6321526113093607004">বুকমার্কে যোগ করুন</translation>
 <translation id="6324528485781869530">সিঙ্ক অ্যাকাউন্ট পাল্টান</translation>
 <translation id="6324669097367352121">সাইন-ইন সেটিংস</translation>
 <translation id="6337234675334993532">এনক্রিপশন</translation>
@@ -526,6 +530,7 @@
 <translation id="6445981559479772097">বার্তা পাঠানো হয়েছে৷</translation>
 <translation id="6447842834002726250">কুকিজ</translation>
 <translation id="6453018583485750254">কখনও চেক করা হয়নি।</translation>
+<translation id="6459307836338400162">আপনার গোপনীয়তা, নিরাপত্তা ও ডেটা সংগ্রহের সাথে সম্পর্কিত আরও সেটিংসের জন্য <ph name="BEGIN_LINK" />সিঙ্ক<ph name="END_LINK" /> এবং <ph name="BEGIN_LINK" />Google পরিষেবা<ph name="END_LINK" /> উভয় বিকল্প দেখুন।</translation>
 <translation id="6464071786529933911">নতুন ছদ্মবেশী ট্যাবে খুলুন</translation>
 <translation id="6464397691496239022">আপনি যাতে সাইন-ইন হয়ে থাকতে পারেন তার ব্যবস্থা করা বা শপিং কার্টে আপনার বেছে নেওয়া আইটেমগুলি মনে রাখার মতো আপনার ব্রাউজিং অভিজ্ঞতা আরও ভাল করার জন্য সাইট কুকি ব্যবহার করতে পারবে।
 
@@ -670,7 +675,6 @@
 <translation id="7856733331829174190">ডাউনলোড করা যায়নি</translation>
 <translation id="7859704718976024901">ব্রাউজিং ইতিহাস</translation>
 <translation id="7887198238286927132">আপনার গোপনীয়তা রক্ষার জন্য, Chrome এই ক্ষেত্রটি নিজে থেকে পূরণ করবে না।</translation>
-<translation id="7918293828610777738">আপনার পড়ার তালিকাটি অফলাইনে উপলভ্য। আপনার পড়ার তালিকায় কোনও পৃষ্ঠা যোগ করতে <ph name="SHARE_OPENING_ICON" />  তারপর <ph name="READ_LATER_TEXT" /> ট্যাপ করুন।</translation>
 <translation id="7938254975914653459">ফেসটাইম</translation>
 <translation id="7939128259257418052">পাসওয়ার্ড এক্সপোর্ট করুন...</translation>
 <translation id="7947953824732555851">সম্মত হয়ে সাইন-ইন করুন</translation>
@@ -709,6 +713,7 @@
 <translation id="8281886186245836920">ছেড়ে যান</translation>
 <translation id="8283172974887967105">সেট করুন…</translation>
 <translation id="8299417921174340354">পাসওয়ার্ড ব্যবহার করার জন্য, আপনাকে ডিভাইসে প্রথমে একটি পাসকোড সেট করতে হবে।</translation>
+<translation id="83100941411593607">সাইন-ইন করার সুবিধা বন্ধ করা আছে</translation>
 <translation id="8319076807703933069">নতুন ট্যাবে সার্চ করুন</translation>
 <translation id="8323906514956095947">আরও ট্যাবের বিকল্প দেখতে টাচ করে ধরে থাকুন</translation>
 <translation id="8328777765163860529">সমস্ত বন্ধ করুন</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
index 28dd237..79eea86 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bs.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Označi…</translation>
 <translation id="3131206671572504478">Blokiraj sve</translation>
 <translation id="3153862085237805241">Sačuvajte karticu</translation>
+<translation id="3157387275655328056">Dodaj na popis za čitanje</translation>
 <translation id="3157684681743766797">Označi sve…</translation>
 <translation id="3161291298470460782">Ovim ćete se odjaviti, isključiti sinhronizaciju i obrisati Chrome podatke s ovog uređaja. Vaši sinhronizirani podaci će ostati na vašem Google računu.</translation>
 <translation id="3169472444629675720">Otkrijte</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Postavka kolačića se primjenjuje na sve kartice. Da primijenite novu postavku na otvorenu karticu, ponovo učitajte karticu.</translation>
 <translation id="5190835502935405962">Traka oznaka</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Zatvorite karticu.</translation>
 <translation id="5228579091201413441">Omogući sinhronizaciju</translation>
 <translation id="5234764350956374838">Odbaci</translation>
 <translation id="5245322853195994030">Otkaži sinhronizaciju</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Stavka je uklonjena</translation>
 <translation id="6136914049981179737">Prije nekoliko sekundi</translation>
 <translation id="6144589619057374135">Otvorite ${url} u anonimnom načinu rada</translation>
-<translation id="616831107264507309">Pročitajte kasnije</translation>
 <translation id="6177442314419606057">Pretražite u Chromeu</translation>
 <translation id="6184086493125982861">Prikaz kartica</translation>
 <translation id="6187302354554850004">Posljednji put sinhronizirano: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Da uključite Sigurno pregledanje, otvorite <ph name="BEGIN_LINK" />Googleove usluge<ph name="END_LINK" /> i dodirnite Sigurno pregledanje.</translation>
 <translation id="6303969859164067831">Odjavite se i isključite sinhronizaciju</translation>
 <translation id="6308436439357671616">To vam omogućava da snimate i otpremate fotografije.</translation>
+<translation id="6321526113093607004">Dodaj u Oznake</translation>
 <translation id="6324528485781869530">Promjena računa za sinhronizaciju</translation>
 <translation id="6324669097367352121">Postavke prijave</translation>
 <translation id="6337234675334993532">Enkripcija</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Preuzimanje nije uspjelo</translation>
 <translation id="7859704718976024901">Historija pregledanja</translation>
 <translation id="7887198238286927132">Chrome neće automatski popuniti ovu rubriku radi zaštite vaše privatnosti.</translation>
-<translation id="7918293828610777738">Vaš spisak za čitanje je dostupan van mreže. Da dodate stranicu na spisak za čitanje, dodirnite <ph name="SHARE_OPENING_ICON" />, a nakon toga <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Izvezi lozinke...</translation>
 <translation id="7947953824732555851">Prihvati i prijavi me</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
index a0f50130..a4beefa 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ca.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Marca com a…</translation>
 <translation id="3131206671572504478">Bloqueja-ho tot</translation>
 <translation id="3153862085237805241">Desa la targeta</translation>
+<translation id="3157387275655328056">Afegeix a la llista de lectura</translation>
 <translation id="3157684681743766797">Marca-ho tot com a…</translation>
 <translation id="3161291298470460782">Amb aquesta acció es tancarà la sessió, es desactivarà la sincronització i s'esborraran totes les dades de Chrome d'aquest dispositiu. Les dades sincronitzades es conservaran al teu Compte de Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">La configuració de les galetes s'aplica a totes les pestanyes. Per aplicar una configuració nova a una pestanya oberta, torna a carregar-la.</translation>
 <translation id="5190835502935405962">Barra d'adreces d'interès</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Tanca la pestanya</translation>
 <translation id="5228579091201413441">Activa la sincronització</translation>
 <translation id="5234764350956374838">Ignora</translation>
 <translation id="5245322853195994030">Cancel·la la sincronització</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">S'ha suprimit l'element</translation>
 <translation id="6136914049981179737">Fa segons</translation>
 <translation id="6144589619057374135">Obre ${url} en mode d'incògnit</translation>
-<translation id="616831107264507309">Llegeix més tard</translation>
 <translation id="6177442314419606057">Fes cerques a Chrome</translation>
 <translation id="6184086493125982861">Mostra les pestanyes</translation>
 <translation id="6187302354554850004">Última sincronització: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Per activar la funció Navegació segura, obre la pàgina <ph name="BEGIN_LINK" />Serveis de Google<ph name="END_LINK" /> i toca Navegació segura.</translation>
 <translation id="6303969859164067831">Tanca la sessió i desactiva la sincronització</translation>
 <translation id="6308436439357671616">Això et permet fer i penjar fotos.</translation>
+<translation id="6321526113093607004">Afegeix a Adreces d'interès</translation>
 <translation id="6324528485781869530">Canvia de compte de sincronització</translation>
 <translation id="6324669097367352121">Configuració d'inici de sessió</translation>
 <translation id="6337234675334993532">Encriptació</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">No s'ha pogut baixar</translation>
 <translation id="7859704718976024901">Historial de navegació</translation>
 <translation id="7887198238286927132">Amb la finalitat de protegir la teva privadesa, Chrome no emplenarà aquest camp automàticament.</translation>
-<translation id="7918293828610777738">La llista de lectura està disponible sense connexió. Per afegir-hi una pàgina, toca <ph name="SHARE_OPENING_ICON" /> i després <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Exporta les contrasenyes</translation>
 <translation id="7947953824732555851">Acc. i inicia sessió</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
index 685ccad5..83700bc 100644
--- a/ios/chrome/app/strings/resources/ios_strings_cs.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Označit…</translation>
 <translation id="3131206671572504478">Blokovat vše</translation>
 <translation id="3153862085237805241">Uložit kartu</translation>
+<translation id="3157387275655328056">Přidat do seznamu četby</translation>
 <translation id="3157684681743766797">Označit vše…</translation>
 <translation id="3161291298470460782">Tímto se odhlásíte, vypnete synchronizaci a vymažete z tohoto zařízení veškerá data prohlížeče Chrome. Synchronizovaná data vám v účtu Google zůstanou.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Nastavení souborů cookie se vztahuje na všechny karty. Pokud v otevřené kartě chcete použít nové nastavení, znovu ji načtěte.</translation>
 <translation id="5190835502935405962">Lišta záložek</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Zavřít kartu</translation>
 <translation id="5228579091201413441">Aktivace synchronizace</translation>
 <translation id="5234764350956374838">Zavřít</translation>
 <translation id="5245322853195994030">Zrušit synchronizaci</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Položka byla odstraněna</translation>
 <translation id="6136914049981179737">před chvílí</translation>
 <translation id="6144589619057374135">Otevřít ${url} v anonymním režimu</translation>
-<translation id="616831107264507309">Přečíst později</translation>
 <translation id="6177442314419606057">Hledat v Chromu</translation>
 <translation id="6184086493125982861">Zobrazit karty</translation>
 <translation id="6187302354554850004">Synchronizace: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Pokud chcete zapnout Bezpečné prohlížení, otevřete <ph name="BEGIN_LINK" />Služby Google<ph name="END_LINK" /> a klepněte na Bezpečné prohlížení.</translation>
 <translation id="6303969859164067831">Odhlásit a vypnout synchronizaci</translation>
 <translation id="6308436439357671616">Toto umožňuje pořizovat a nahrávat fotky.</translation>
+<translation id="6321526113093607004">Přidat do záložek</translation>
 <translation id="6324528485781869530">Přepnout účet pro synchronizaci</translation>
 <translation id="6324669097367352121">Nastavení přihlášení</translation>
 <translation id="6337234675334993532">Šifrování</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Stažení se nezdařilo</translation>
 <translation id="7859704718976024901">Historie procházení</translation>
 <translation id="7887198238286927132">Aby Chrome chránil vaše soukromí, nebude toto pole automaticky vyplňovat.</translation>
-<translation id="7918293828610777738">Seznam obsahu k přečtení je k dispozici offline. Chcete-li na něj přidat stránku, klepněte na <ph name="SHARE_OPENING_ICON" /> a poté na <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Exportovat hesla...</translation>
 <translation id="7947953824732555851">Přijmout a přihlásit</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_da.xtb b/ios/chrome/app/strings/resources/ios_strings_da.xtb
index c9a2496..ae9c094 100644
--- a/ios/chrome/app/strings/resources/ios_strings_da.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_da.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Markér…</translation>
 <translation id="3131206671572504478">Bloker alle</translation>
 <translation id="3153862085237805241">Gem kortet</translation>
+<translation id="3157387275655328056">Føj til læseliste</translation>
 <translation id="3157684681743766797">Markér alle…</translation>
 <translation id="3161291298470460782">Du logges ud, synkronisering deaktiveres, og alle Chrome-data på enheden ryddes. Alle synkroniserede data vil stadig være på din Google-konto.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Dine cookieindstillinger gælder for alle faner. Du kan anvende en ny indstilling i en åben fane ved at genindlæse fanen.</translation>
 <translation id="5190835502935405962">Bogmærkelinje</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Luk fanen</translation>
 <translation id="5228579091201413441">Aktivér synkronisering</translation>
 <translation id="5234764350956374838">Luk</translation>
 <translation id="5245322853195994030">Annuller synkronisering</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Elementet blev fjernet</translation>
 <translation id="6136914049981179737">Sek. siden</translation>
 <translation id="6144589619057374135">Åbn ${url} i inkognito</translation>
-<translation id="616831107264507309">Læs senere</translation>
 <translation id="6177442314419606057">Søg i Chrome</translation>
 <translation id="6184086493125982861">Vis faner</translation>
 <translation id="6187302354554850004">Sidst synkroniseret: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Åbn <ph name="BEGIN_LINK" />Google-tjenester<ph name="END_LINK" />, og tryk på Beskyttet browsing for at aktivere Beskyttet browsing.</translation>
 <translation id="6303969859164067831">Log ud, og deaktiver synkronisering</translation>
 <translation id="6308436439357671616">Dette giver dig mulighed for at tage og uploade billeder.</translation>
+<translation id="6321526113093607004">Føj til Bogmærker</translation>
 <translation id="6324528485781869530">Skift synkroniseringskonto</translation>
 <translation id="6324669097367352121">Loginindstillinger</translation>
 <translation id="6337234675334993532">Kryptering</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Downloaden mislykkedes</translation>
 <translation id="7859704718976024901">Browserhistorik</translation>
 <translation id="7887198238286927132">Af hensyn til beskyttelsen af dine personlige oplysninger autofylder Chrome ikke dette felt.</translation>
-<translation id="7918293828610777738">Din læseliste er tilgængelig offline. Du kan føje en side til din læseliste ved at trykke på <ph name="SHARE_OPENING_ICON" /> og derefter <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Eksportér adgangskoder…</translation>
 <translation id="7947953824732555851">Acceptér og log ind</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_de.xtb b/ios/chrome/app/strings/resources/ios_strings_de.xtb
index d8b73a3..6697236 100644
--- a/ios/chrome/app/strings/resources/ios_strings_de.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_de.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Markieren…</translation>
 <translation id="3131206671572504478">Alle blockieren</translation>
 <translation id="3153862085237805241">Karte speichern</translation>
+<translation id="3157387275655328056">Zur Leseliste hinzufügen</translation>
 <translation id="3157684681743766797">Alle markieren…</translation>
 <translation id="3161291298470460782">Hierdurch werden Sie abgemeldet, die Synchronisierung wird deaktiviert und alle Chrome-Daten werden von diesem Gerät gelöscht. Ihre synchronisierten Daten verbleiben jedoch in Ihrem Google-Konto.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Ihre Cookie-Einstellung gilt für alle Tabs. Wenn Sie eine neue Einstellung auf einen geöffneten Tab anwenden möchten, aktualisieren Sie den Tab.</translation>
 <translation id="5190835502935405962">Lesezeichenleiste</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Schließen</translation>
 <translation id="5228579091201413441">Synchronisierung aktivieren</translation>
 <translation id="5234764350956374838">Schließen</translation>
 <translation id="5245322853195994030">Synchronisierung abbrechen</translation>
@@ -446,6 +448,7 @@
 <translation id="5782227691023083829">Wird übersetzt...</translation>
 <translation id="5803566855766646066">Möchten Sie diese neue Karte wirklich verwerfen?</translation>
 <translation id="5816228676161003208">Per Spracheingabe können Sie noch schneller suchen.</translation>
+<translation id="581659025233126501">Synchronisierung aktivieren</translation>
 <translation id="5819208479324046259">Verwaltet von <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation>
 <translation id="5846482154967366008">Suchmaschine</translation>
 <translation id="5854790677617711513">Älter als 30 Tage</translation>
@@ -485,7 +488,6 @@
 <translation id="6127379762771434464">Eintrag entfernt</translation>
 <translation id="6136914049981179737">Gerade eben</translation>
 <translation id="6144589619057374135">${url} im Inkognitomodus öffnen</translation>
-<translation id="616831107264507309">Später lesen</translation>
 <translation id="6177442314419606057">Suche in Chrome</translation>
 <translation id="6184086493125982861">Tabs anzeigen</translation>
 <translation id="6187302354554850004">Letzte Synchr.: <ph name="LAST_USED_TIME" /></translation>
@@ -493,12 +495,14 @@
 <translation id="6196207969502475924">Sprachsuche</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} Tab schließen}other{{COUNT} Tabs schließen}}</translation>
 <translation id="6219688215832490856">Nie übersetzen</translation>
+<translation id="6223816392543092032">Sie können Ihre Lesezeichen, Ihren Verlauf, Ihre Passwörter und andere Einstellungen auf allen Ihren Geräten aufrufen.</translation>
 <translation id="6254066287920239840">Links in der App statt im Browser öffnen.</translation>
 <translation id="6255097610484507482">Kreditkarte bearbeiten</translation>
 <translation id="6284652193729350524">Übersetzung für <ph name="LANGUAGE" /> anbieten</translation>
 <translation id="6293101329759844770">Wenn Sie Safe Browsing aktivieren möchten, öffnen Sie <ph name="BEGIN_LINK" />Google-Dienste<ph name="END_LINK" /> und tippen Sie auf „Safe Browsing“.</translation>
 <translation id="6303969859164067831">Abmelden und die Synchronisierung ausschalten</translation>
 <translation id="6308436439357671616">Dadurch können Sie Fotos aufnehmen und hochladen.</translation>
+<translation id="6321526113093607004">Zu Lesezeichen hinzufügen</translation>
 <translation id="6324528485781869530">Synchronisiertes Konto wechseln</translation>
 <translation id="6324669097367352121">Anmeldeeinstellungen</translation>
 <translation id="6337234675334993532">Verschlüsselung</translation>
@@ -525,6 +529,7 @@
 <translation id="6445981559479772097">Nachricht gesendet</translation>
 <translation id="6447842834002726250">Cookies</translation>
 <translation id="6453018583485750254">Überprüfung nie durchgeführt.</translation>
+<translation id="6459307836338400162">Weitere Einstellungen in Verbindung mit Datenschutz, Sicherheit und der Erhebung von Daten finden Sie unter <ph name="BEGIN_LINK" />Synchronisierung<ph name="END_LINK" /> und <ph name="BEGIN_LINK" />Google-Dienste<ph name="END_LINK" />.</translation>
 <translation id="6464071786529933911">In neuem Inkognitotab öffnen</translation>
 <translation id="6464397691496239022">Websites können Cookies verwenden, um Ihnen das Surfen zu erleichtern; zum Beispiel, damit Sie angemeldet oder Artikel in Ihrem Einkaufswagen gespeichert bleiben.
 
@@ -669,7 +674,6 @@
 <translation id="7856733331829174190">Fehler beim Download</translation>
 <translation id="7859704718976024901">Browserverlauf</translation>
 <translation id="7887198238286927132">Um Ihre Daten zu schützen, füllt Chrome dieses Feld nicht automatisch aus.</translation>
-<translation id="7918293828610777738">Ihre Leseliste ist offline verfügbar. Sie können eine Seite Ihrer Leseliste hinzufügen, indem Sie auf <ph name="SHARE_OPENING_ICON" /> &gt; <ph name="READ_LATER_TEXT" /> tippen.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Passwörter exportieren…</translation>
 <translation id="7947953824732555851">Akzeptieren und anmelden</translation>
@@ -708,6 +712,7 @@
 <translation id="8281886186245836920">Überspringen</translation>
 <translation id="8283172974887967105">Festlegen…</translation>
 <translation id="8299417921174340354">Sie müssen zuerst einen Sicherheitscode auf Ihrem Gerät einrichten, um Passwörter zu verwenden.</translation>
+<translation id="83100941411593607">Anmeldung ist deaktiviert</translation>
 <translation id="8319076807703933069">Neue Suche</translation>
 <translation id="8323906514956095947">Für weitere Tab-Optionen berühren und halten</translation>
 <translation id="8328777765163860529">Alle schließen</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_el.xtb b/ios/chrome/app/strings/resources/ios_strings_el.xtb
index c86f0891..a2719e44 100644
--- a/ios/chrome/app/strings/resources/ios_strings_el.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_el.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Επισήμανση…</translation>
 <translation id="3131206671572504478">Αποκλεισμός όλων</translation>
 <translation id="3153862085237805241">Αποθήκευση κάρτας</translation>
+<translation id="3157387275655328056">Προσθήκη στη λίστα ανάγνωσης</translation>
 <translation id="3157684681743766797">Επισήμανση όλων…</translation>
 <translation id="3161291298470460782">Με αυτήν την ενέργεια θα αποσυνδεθείτε, θα απενεργοποιηθεί ο συγχρονισμός και θα διαγραφούν όλα τα δεδομένα του Chrome από αυτήν τη συσκευή. Τα συγχρονισμένα δεδομένα θα διατηρηθούν στον Λογαριασμό σας Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Η ρύθμιση cookie ισχύει για όλες τις καρτέλες. Για να εφαρμόσετε μια νέα ρύθμιση σε μια ανοικτή καρτέλα, επαναλάβετε ξανά τη φόρτωση της καρτέλας.</translation>
 <translation id="5190835502935405962">Γραμμή σελιδοδεικτών</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Κλείσιμο καρτέλας</translation>
 <translation id="5228579091201413441">Ενεργοποίηση συγχρονισμού</translation>
 <translation id="5234764350956374838">Παράβλεψη</translation>
 <translation id="5245322853195994030">Ακύρωση συγχρονισμού</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Το στοιχείο καταργήθηκε</translation>
 <translation id="6136914049981179737">Δευτ.πριν</translation>
 <translation id="6144589619057374135">Άνοιγμα ${url} σε ανώνυμη περιήγηση</translation>
-<translation id="616831107264507309">Ανάγνωση αργότερα</translation>
 <translation id="6177442314419606057">Αναζήτηση στο Chrome</translation>
 <translation id="6184086493125982861">Εμφάνιση καρτελών</translation>
 <translation id="6187302354554850004">Τελευτ. συγχρ.: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Για να ενεργοποιήσετε την Ασφαλή περιήγηση, ανοίξτε τις <ph name="BEGIN_LINK" />υπηρεσίες Google<ph name="END_LINK" /> και πατήστε Ασφαλής περιήγηση.</translation>
 <translation id="6303969859164067831">Αποσύνδεση και απενεργοποίηση συγχρονισμού</translation>
 <translation id="6308436439357671616">Σας επιτρέπει να κάνετε λήψη και μεταφόρτωση φωτογραφιών.</translation>
+<translation id="6321526113093607004">Προσθήκη στους σελιδοδείκτες</translation>
 <translation id="6324528485781869530">Εναλλαγή λογαριασμού συγχρονισμού</translation>
 <translation id="6324669097367352121">Ρυθμίσεις σύνδεσης</translation>
 <translation id="6337234675334993532">Κρυπτογράφηση</translation>
@@ -673,7 +675,6 @@
 <translation id="7856733331829174190">Δεν ήταν δυνατή η λήψη</translation>
 <translation id="7859704718976024901">Ιστορικό περιήγησης</translation>
 <translation id="7887198238286927132">Προκειμένου να προστατεύσει το απόρρητό σας, το Chrome δεν θα συμπληρώνει αυτόματα αυτό το πεδίο.</translation>
-<translation id="7918293828610777738">Η λίστα ανάγνωσης είναι διαθέσιμη εκτός σύνδεσης. Για να προσθέσετε μια σελίδα στη λίστα ανάγνωσης, πατήστε το εικονίδιο <ph name="SHARE_OPENING_ICON" /> και μετά πατήστε το στοιχείο <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Εξαγωγή κωδικών πρόσβασης…</translation>
 <translation id="7947953824732555851">Αποδοχή και σύνδεση</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
index 7deb054..105ef7d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Mark…</translation>
 <translation id="3131206671572504478">Block all</translation>
 <translation id="3153862085237805241">Save Card</translation>
+<translation id="3157387275655328056">Add to Reading List</translation>
 <translation id="3157684681743766797">Mark All…</translation>
 <translation id="3161291298470460782">This will sign you out, turn off sync and clear all Chrome data from this device. Your synced data will remain in your Google Account.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Your cookies setting applies to all tabs. To apply a new setting to an open tab, reload the tab.</translation>
 <translation id="5190835502935405962">Bookmarks Bar</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Close tab</translation>
 <translation id="5228579091201413441">Enable sync</translation>
 <translation id="5234764350956374838">Dismiss</translation>
 <translation id="5245322853195994030">Cancel sync</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Item removed</translation>
 <translation id="6136914049981179737">Seconds ago</translation>
 <translation id="6144589619057374135">Open ${url} in Incognito</translation>
-<translation id="616831107264507309">Read Later</translation>
 <translation id="6177442314419606057">Search in Chrome</translation>
 <translation id="6184086493125982861">Show Tabs</translation>
 <translation id="6187302354554850004">Last synced: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">To turn on Safe Browsing, open <ph name="BEGIN_LINK" />Google services<ph name="END_LINK" /> and tap Safe Browsing.</translation>
 <translation id="6303969859164067831">Sign out and turn off sync</translation>
 <translation id="6308436439357671616">This lets you take and upload photos.</translation>
+<translation id="6321526113093607004">Add to Bookmarks</translation>
 <translation id="6324528485781869530">Switch Sync Account</translation>
 <translation id="6324669097367352121">Sign in settings</translation>
 <translation id="6337234675334993532">Encryption</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Couldn't download</translation>
 <translation id="7859704718976024901">Browsing history</translation>
 <translation id="7887198238286927132">To protect your privacy, Chrome will not auto-fill this field.</translation>
-<translation id="7918293828610777738">Your reading list is available offline. To add a page to your reading list, tap <ph name="SHARE_OPENING_ICON" />, then <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Export Passwords…</translation>
 <translation id="7947953824732555851">Accept and sign in</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
index ac33bb15..790f660 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Marcar…</translation>
 <translation id="3131206671572504478">Bloquear todas</translation>
 <translation id="3153862085237805241">Guardar tarjeta</translation>
+<translation id="3157387275655328056">Agregar a la lista de lectura</translation>
 <translation id="3157684681743766797">Marcar todas…</translation>
 <translation id="3161291298470460782">Si realizas esta acción, saldrás de tu cuenta, se desactivará la sincronización y se borrarán todos los datos de Chrome de este dispositivo. Los datos que tengas sincronizados permanecerán en tu Cuenta de Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Tu configuración de cookies se aplica a todas las pestañas. Para aplicar una configuración nueva en una pestaña abierta, vuelve a cargarla.</translation>
 <translation id="5190835502935405962">Barra de favoritos</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Cerrar pestaña</translation>
 <translation id="5228579091201413441">Habilitar sincronización</translation>
 <translation id="5234764350956374838">Descartar</translation>
 <translation id="5245322853195994030">Cancelar sincronización</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Se eliminó el elemento</translation>
 <translation id="6136914049981179737">Hace seg.</translation>
 <translation id="6144589619057374135">Abrir ${url} en modo Incógnito</translation>
-<translation id="616831107264507309">Leer más tarde</translation>
 <translation id="6177442314419606057">Buscar en Chrome</translation>
 <translation id="6184086493125982861">Mostrar las pestañas</translation>
 <translation id="6187302354554850004">Última sincronización: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Si quieres activar la Navegación segura, abre <ph name="BEGIN_LINK" />Servicios de Google<ph name="END_LINK" /> y, luego, presiona Navegación segura.</translation>
 <translation id="6303969859164067831">Salir y desactivar la sincronización</translation>
 <translation id="6308436439357671616">Te permite tomar fotos y subirlas.</translation>
+<translation id="6321526113093607004">Agregar a Favoritos</translation>
 <translation id="6324528485781869530">Cambiar cta. de sincronización</translation>
 <translation id="6324669097367352121">Config. acceso</translation>
 <translation id="6337234675334993532">Encriptación</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">No se pudo descargar</translation>
 <translation id="7859704718976024901">Historial de navegación</translation>
 <translation id="7887198238286927132">Para proteger tu privacidad, Chrome no completará este campo de forma automática.</translation>
-<translation id="7918293828610777738">Tu lista de lectura está disponible sin conexión. Para agregar una página a la lista, presiona <ph name="SHARE_OPENING_ICON" /> y, luego, <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Exportar contraseñas…</translation>
 <translation id="7947953824732555851">Aceptar y acceder</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb
index 63bf9321..a467ee5b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Marcar…</translation>
 <translation id="3131206671572504478">Bloquear todas</translation>
 <translation id="3153862085237805241">Guardar tarjeta</translation>
+<translation id="3157387275655328056">Añadir a lista de lectura</translation>
 <translation id="3157684681743766797">Marcar todas…</translation>
 <translation id="3161291298470460782">Esta acción hará que se cierre tu sesión, se desactive la sincronización y se borren todos los datos de Chrome de este dispositivo. Los datos que hayas sincronizado permanecerán en tu cuenta de Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Tu configuración de cookies se aplica a todas las pestañas. Para aplicar un ajuste nuevo a una pestaña abierta, vuelve a cargarla.</translation>
 <translation id="5190835502935405962">Barra de marcadores</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Cerrar pestaña</translation>
 <translation id="5228579091201413441">Habilitar sincronización</translation>
 <translation id="5234764350956374838">Cerrar</translation>
 <translation id="5245322853195994030">¿Quieres cancelar la sincronización?</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Elemento quitado</translation>
 <translation id="6136914049981179737">Hace segundos</translation>
 <translation id="6144589619057374135">Abrir ${url} en incógnito</translation>
-<translation id="616831107264507309">Leer más adelante</translation>
 <translation id="6177442314419606057">Buscar en Chrome</translation>
 <translation id="6184086493125982861">Mostrar pestañas</translation>
 <translation id="6187302354554850004">Última sincronización: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Para activar Navegación segura, abre <ph name="BEGIN_LINK" />Servicios de Google<ph name="END_LINK" /> y toca Navegación segura.</translation>
 <translation id="6303969859164067831">Cerrar sesión y desactivar la sincronización</translation>
 <translation id="6308436439357671616">Esto te permite hacer fotos y subirlas.</translation>
+<translation id="6321526113093607004">Añadir a Marcadores</translation>
 <translation id="6324528485781869530">Cambiar cuenta de sincronización</translation>
 <translation id="6324669097367352121">Configuración de inicio de sesión</translation>
 <translation id="6337234675334993532">Cifrado</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">No se ha podido descargar</translation>
 <translation id="7859704718976024901">Historial de navegación</translation>
 <translation id="7887198238286927132">Para proteger tu privacidad, Chrome no autocompletará este campo.</translation>
-<translation id="7918293828610777738">Tu lista de lectura está disponible sin conexión. Para añadir una página a la lista, toca <ph name="SHARE_OPENING_ICON" /> y, a continuación, <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Exportar contraseñas...</translation>
 <translation id="7947953824732555851">Aceptar y acceder</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_et.xtb b/ios/chrome/app/strings/resources/ios_strings_et.xtb
index 6afbdcc..da0e41e7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_et.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_et.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Märgi …</translation>
 <translation id="3131206671572504478">Blokeeri kõik</translation>
 <translation id="3153862085237805241">Salvesta kaart</translation>
+<translation id="3157387275655328056">Lisa lugemisloendisse</translation>
 <translation id="3157684681743766797">Märgi kõik …</translation>
 <translation id="3161291298470460782">See logib teid välja, lülitab sünkroonimise välja ja kustutab sellest seadmest kõik Chrome'i andmed. Teie sünkroonitud andmed jäävad teie Google'i kontole.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Küpsisefailide seaded rakenduvad kõikidele vahelehtedele. Uue seade rakendamiseks avatud vahelehele laadige see uuesti.</translation>
 <translation id="5190835502935405962">Järjehoidjariba</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Sule vaheleht</translation>
 <translation id="5228579091201413441">Sünkroonimise lubamine</translation>
 <translation id="5234764350956374838">Loobu</translation>
 <translation id="5245322853195994030">Tühista sünkroonimine</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Üksus eemaldati</translation>
 <translation id="6136914049981179737">Sek. eest</translation>
 <translation id="6144589619057374135">Ava ${url} inkognito aknas</translation>
-<translation id="616831107264507309">Hiljem lugemiseks</translation>
 <translation id="6177442314419606057">Otsing Chrome'ist</translation>
 <translation id="6184086493125982861">Kuva vahelehed</translation>
 <translation id="6187302354554850004">Viimati sünkr.: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Google'i ohutu sirvimise sisselülitamiseks avage jaotis <ph name="BEGIN_LINK" />Google'i teenused<ph name="END_LINK" /> ja puudutage valikut Google'i ohutu sirvimine.</translation>
 <translation id="6303969859164067831">Logi välja ja lülita sünkroonimine välja</translation>
 <translation id="6308436439357671616">See võimaldab fotosid jäädvustada ja üles laadida.</translation>
+<translation id="6321526113093607004">Lisa järjehoidjatesse</translation>
 <translation id="6324528485781869530">Sünkroonimiskonto vahetamine</translation>
 <translation id="6324669097367352121">Sisselogimisseaded</translation>
 <translation id="6337234675334993532">Krüpteerimine</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Ei saanud alla laadida</translation>
 <translation id="7859704718976024901">Sirvimisajalugu</translation>
 <translation id="7887198238286927132">Teie privaatsuse kaitsmiseks ei täida Chrome seda välja automaatselt.</translation>
-<translation id="7918293828610777738">Teie lugemisloend on võrguühenduseta saadaval. Lugemisloendisse lehe lisamiseks puudutage ikooni <ph name="SHARE_OPENING_ICON" /> ja seejärel valikut <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Paroolide eksportimine …</translation>
 <translation id="7947953824732555851">Nõustu ja logi sisse</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_eu.xtb b/ios/chrome/app/strings/resources/ios_strings_eu.xtb
index 26ff6175..ec4b5c1 100644
--- a/ios/chrome/app/strings/resources/ios_strings_eu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_eu.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Markatu…</translation>
 <translation id="3131206671572504478">Blokeatu cookie guztiak</translation>
 <translation id="3153862085237805241">Gorde txartela</translation>
+<translation id="3157387275655328056">Gehitu zerrendan</translation>
 <translation id="3157684681743766797">Markatu guztiak…</translation>
 <translation id="3161291298470460782">Horrela, saioa amaitu, sinkronizazioa desaktibatu eta Chrome-ko datu guztiak gailu honetatik kenduko dira. Sinkronizatutako datuek Google-ko kontuan jarraituko dute.</translation>
 <translation id="3169472444629675720">Ezagutu</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Fitxa guztiei aplikatzen zaizkie cookieen ezarpenak. Irekita dagoen fitxa bati beste ezarpenen bat aplikatzeko, kargatu berriro fitxa.</translation>
 <translation id="5190835502935405962">Laster-marken barra</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Itxi fitxa</translation>
 <translation id="5228579091201413441">Gaitu sinkronizazioa</translation>
 <translation id="5234764350956374838">Baztertu</translation>
 <translation id="5245322853195994030">Utzi sinkronizazioa bertan behera</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Kendu egin da elementua</translation>
 <translation id="6136914049981179737">Duela segundo gutxi</translation>
 <translation id="6144589619057374135">Ireki ${url} ezkutuko moduan</translation>
-<translation id="616831107264507309">Irakurri geroago</translation>
 <translation id="6177442314419606057">Bilatu Chrome-n</translation>
 <translation id="6184086493125982861">Erakutsi fitxak</translation>
 <translation id="6187302354554850004">Azken sinkronizazioa: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Arakatze segurua aktibatzeko, ireki <ph name="BEGIN_LINK" />Google-ren zerbitzuak<ph name="END_LINK" /> eta sakatu Arakatze segurua.</translation>
 <translation id="6303969859164067831">Amaitu saioa eta desaktibatu sinkronizazioa</translation>
 <translation id="6308436439357671616">Honi esker, argazkiak atera eta kargatu ahal izango dituzu.</translation>
+<translation id="6321526113093607004">Gehitu Laster-markak atalean</translation>
 <translation id="6324528485781869530">Aldatu sinkronizazio-kontua</translation>
 <translation id="6324669097367352121">Saioa hasteko ezarpenak</translation>
 <translation id="6337234675334993532">Enkriptatzea</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Ezin izan da deskargatu</translation>
 <translation id="7859704718976024901">Arakatze-historia</translation>
 <translation id="7887198238286927132">Zure pribatutasuna babesteko, Chrome-k ez du automatikoki beteko eremu hau.</translation>
-<translation id="7918293828610777738">Konexiorik gabe ere erabil dezakezu irakurketa-zerrenda. Irakurketa-zerrendan orriak gehitzeko, sakatu <ph name="SHARE_OPENING_ICON" /> eta, ondoren, <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Esportatu pasahitzak…</translation>
 <translation id="7947953824732555851">Onartu eta hasi saioa</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
index ef6ae113..76ed0b3 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fa.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">علامت‌گذاری...</translation>
 <translation id="3131206671572504478">مسدود کردن همه</translation>
 <translation id="3153862085237805241">ذخیره کردن کارت</translation>
+<translation id="3157387275655328056">افزودن به فهرست خواندن</translation>
 <translation id="3157684681743766797">علامت‌گذاری همه...</translation>
 <translation id="3161291298470460782">‏با این کار، از سیستم خارج می‌شوید، همگام‌سازی خاموش می‌شود، و همه داده‌های Chrome از این دستگاه پاک می‌شود. داده‌های همگام‌سازی‌شده در «حساب Google» شما باقی خواهد ماند.</translation>
 <translation id="3169472444629675720">کشف کردن</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">تنظیمات کوکی برای همه برگه‌ها اعمال می‌شود. برای اعمال تنظیم جدید در یکی از برگه‌های باز، برگه را تازه‌سازی کنید.</translation>
 <translation id="5190835502935405962">نوار نشانک‌ها</translation>
 <translation id="5197255632782567636">اینترنت</translation>
+<translation id="5210365745912300556">بستن برگه</translation>
 <translation id="5228579091201413441">فعال کردن همگام‌سازی</translation>
 <translation id="5234764350956374838">رد کردن</translation>
 <translation id="5245322853195994030">لغو همگام‌سازی</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">مورد برداشته شد</translation>
 <translation id="6136914049981179737">ثانیه‌هایی قبل</translation>
 <translation id="6144589619057374135">‏باز کردن ${url} در حالت ناشناس</translation>
-<translation id="616831107264507309">خواندن در فرصتی دیگر</translation>
 <translation id="6177442314419606057">‏جستجو در Chrome</translation>
 <translation id="6184086493125982861">نمایش برگه‌ها</translation>
 <translation id="6187302354554850004">آخرین همگام‌سازی: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">‏برای روشن کردن «مرور ایمن»، <ph name="BEGIN_LINK" />سرویس‌های Google<ph name="END_LINK" /> را باز کنید و روی «مرور ایمن» ضربه بزنید.</translation>
 <translation id="6303969859164067831">خروج از سیستم و خاموش کردن همگام‌سازی</translation>
 <translation id="6308436439357671616">این کار به شما اجازه می‌دهد عکس بگیرید و آن‌ها را بارگذاری کنید.</translation>
+<translation id="6321526113093607004">افزودن به نشانک‌ها</translation>
 <translation id="6324528485781869530">تغییر وضعیت حساب همگام‌سازی</translation>
 <translation id="6324669097367352121">تنظیمات ورود به سیستم</translation>
 <translation id="6337234675334993532">رمزگذاری</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">بارگیری نشد</translation>
 <translation id="7859704718976024901">سابقه مرور</translation>
 <translation id="7887198238286927132">‏برای محافظت از حریم‌خصوصی‌تان، Chrome از ویژگی تکمیل خودکار برای این فیلد استفاده نخواهد کرد.</translation>
-<translation id="7918293828610777738">فهرست مطالعه‌تان درحالت آفلاین دردسترس است. برای اضافه کردن صفحه به فهرست مطالعه، روی <ph name="SHARE_OPENING_ICON" /> و بعد <ph name="READ_LATER_TEXT" /> ضربه بزنید.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">صادر کردن گذرواژه‌ها…</translation>
 <translation id="7947953824732555851">پذیرش و ورود به سیستم</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fi.xtb b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
index 5982a7d3..8974a12a 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Merkitse…</translation>
 <translation id="3131206671572504478">Estä kaikki</translation>
 <translation id="3153862085237805241">Tallenna kortti</translation>
+<translation id="3157387275655328056">Lisää lukulistalle</translation>
 <translation id="3157684681743766797">Merkitse kaikki…</translation>
 <translation id="3161291298470460782">Tämä kirjaa sinut ulos, laittaa synkronoinnin pois päältä ja tyhjentää kaiken Chrome-datan tältä laitteelta. Synkronoitu datasi pysyy Google-tililläsi.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Evästeasetustasi käytetään kaikilla välilehdillä. Jos haluat käyttää uutta asetusta avoimella välilehdellä, päivitä kyseinen välilehti.</translation>
 <translation id="5190835502935405962">Kirjanmerkkipalkki</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Sulje välilehti</translation>
 <translation id="5228579091201413441">Ota synkronointi käyttöön</translation>
 <translation id="5234764350956374838">Hylkää</translation>
 <translation id="5245322853195994030">Peru synkronointi</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Kohde poistettu</translation>
 <translation id="6136914049981179737">Hetki sitten</translation>
 <translation id="6144589619057374135">Avaa ${url} incognito-tilassa</translation>
-<translation id="616831107264507309">Lue myöhemmin</translation>
 <translation id="6177442314419606057">Hae Chromesta</translation>
 <translation id="6184086493125982861">Näytä välilehdet</translation>
 <translation id="6187302354554850004">Viim. synkronoitu: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Avaa <ph name="BEGIN_LINK" />Googlen palvelut<ph name="END_LINK" /> ja valitse Selaussuoja.</translation>
 <translation id="6303969859164067831">Kirjaudu ulos ja poista synkronointi käytöstä</translation>
 <translation id="6308436439357671616">Tämän avulla voit ottaa kuvia ja ladata niitä palvelimelle.</translation>
+<translation id="6321526113093607004">Lisää kirjanmerkkeihin</translation>
 <translation id="6324528485781869530">Vaihda synkronointitiliä</translation>
 <translation id="6324669097367352121">Kirjautumisen aset.</translation>
 <translation id="6337234675334993532">Salaus</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Lataus epäonnistui</translation>
 <translation id="7859704718976024901">Selaushistoria</translation>
 <translation id="7887198238286927132">Tietojesi suojaamiseksi Chrome ei täytä tätä kenttää automaattisesti.</translation>
-<translation id="7918293828610777738">Lukulistasi on käytettävissä offline-tilassa. Lisää sivu lukulistalle valitsemalla <ph name="SHARE_OPENING_ICON" /> ja sitten <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Vie salasanat…</translation>
 <translation id="7947953824732555851">Hyväksy ja kirjaudu sisään</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
index 4c1f32d..a340464 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Markahan…</translation>
 <translation id="3131206671572504478">I-block Lahat</translation>
 <translation id="3153862085237805241">I-save ang Card</translation>
+<translation id="3157387275655328056">Idagdag sa Listahan ng Babasahin</translation>
 <translation id="3157684681743766797">Markahan Lahat...</translation>
 <translation id="3161291298470460782">Kapag ginawa ito, masa-sign out ka, mao-off ang pag-sync, at maki-clear ang lahat ng data ng Chrome sa device na ito. Mananatili sa iyong Google Account ang naka-sync mong data.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Nalalapat ang iyong setting ng cookies sa lahat ng tab. Para maglapat ng bagong setting sa isang bukas na tab, i-reload ang tab.</translation>
 <translation id="5190835502935405962">Bar ng Mga Bookmark</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Isara ang tab</translation>
 <translation id="5228579091201413441">I-enable ang pag-sync</translation>
 <translation id="5234764350956374838">Huwag pansinin</translation>
 <translation id="5245322853195994030">Kanselahin ang Pag-sync</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Inalis ang item</translation>
 <translation id="6136914049981179737">Segundo</translation>
 <translation id="6144589619057374135">Buksan ang ${url} sa Incognito</translation>
-<translation id="616831107264507309">Basahin Sa Ibang Pagkakataon</translation>
 <translation id="6177442314419606057">Search in Chrome</translation>
 <translation id="6184086493125982861">Ipakita ang Mga Tab</translation>
 <translation id="6187302354554850004">Huling na-sync: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Para i-on ang Ligtas na Pag-browse, buksan ang <ph name="BEGIN_LINK" />Mga Serbisyo ng Google<ph name="END_LINK" /> at i-tap ang Ligtas na Pag-browse.</translation>
 <translation id="6303969859164067831">Mag-sign out at i-off ang pag-sync</translation>
 <translation id="6308436439357671616">Binibigyang-daan ka nito upang makakuha at makapag-upload ng mga larawan.</translation>
+<translation id="6321526113093607004">Idagdag sa Mga Bookmark</translation>
 <translation id="6324528485781869530">Magpalit ng Account sa Pag-sync</translation>
 <translation id="6324669097367352121">Mga setting sa pag-sign in</translation>
 <translation id="6337234675334993532">Pag-encrypt</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Hindi Ma-download</translation>
 <translation id="7859704718976024901">History ng Pag-browse</translation>
 <translation id="7887198238286927132">Para protektahan ang iyong privacy, hindi io-autofill ng Chrome ang field na ito.</translation>
-<translation id="7918293828610777738">Available ang iyong listahan ng babasahin offline. Para magdagdag ng page sa iyong listahan ng babasahin, i-tap ang <ph name="SHARE_OPENING_ICON" /> pagkatapos ay i-tap ang <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">I-export Password...</translation>
 <translation id="7947953824732555851">I-accept, mag-sign in</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb
index 41de80e..7fa9c54 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Marquer…</translation>
 <translation id="3131206671572504478">Tout bloquer</translation>
 <translation id="3153862085237805241">Enregistrer la carte</translation>
+<translation id="3157387275655328056">Ajouter à la liste de lecture</translation>
 <translation id="3157684681743766797">Tout marquer…</translation>
 <translation id="3161291298470460782">Cette action vous déconnectera, désactivera la synchronisation et effacera toutes les données de Chrome sur cet appareil. Vos données synchronisées resteront dans votre compte Google.</translation>
 <translation id="3169472444629675720">Découvrir</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Votre paramètre de témoins s'applique à tous les onglets. Pour appliquer un nouveau paramètre à un onglet ouvert, actualisez-le.</translation>
 <translation id="5190835502935405962">Barre de favoris</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Fermer l'onglet</translation>
 <translation id="5228579091201413441">Activer la synchronisation</translation>
 <translation id="5234764350956374838">Fermer</translation>
 <translation id="5245322853195994030">Annuler la synchronisation</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Élément supprimé</translation>
 <translation id="6136914049981179737">Qq sec.</translation>
 <translation id="6144589619057374135">Ouvrir ${url} en mode de navigation privée</translation>
-<translation id="616831107264507309">Lire plus tard</translation>
 <translation id="6177442314419606057">Rechercher dans Chrome</translation>
 <translation id="6184086493125982861">Afficher les onglets</translation>
 <translation id="6187302354554850004">Dernière synchro : <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Pour activer la navigation sécurisée, ouvrez le menu <ph name="BEGIN_LINK" />Services Google<ph name="END_LINK" /> et touchez Navigation sécurisée.</translation>
 <translation id="6303969859164067831">Se déconnecter et désactiver la synchronisation</translation>
 <translation id="6308436439357671616">Ceci vous permet de prendre des photos et de les téléverser.</translation>
+<translation id="6321526113093607004">Ajouter aux favoris</translation>
 <translation id="6324528485781869530">Passer au compte synchronisé</translation>
 <translation id="6324669097367352121">Param. de connexion</translation>
 <translation id="6337234675334993532">Chiffrement</translation>
@@ -671,7 +673,6 @@
 <translation id="7856733331829174190">Échec du téléchargement</translation>
 <translation id="7859704718976024901">Historique de navigation</translation>
 <translation id="7887198238286927132">Afin de protéger votre confidentialité, Chrome ne remplira pas automatiquement ce champ.</translation>
-<translation id="7918293828610777738">Votre liste de lecture est disponible hors connexion. Pour ajouter une page à votre liste de lecture, touchez <ph name="SHARE_OPENING_ICON" />, puis <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Exporter les mots de passe…</translation>
 <translation id="7947953824732555851">Accepter et se connecter</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
index 054c88d..bafab828 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Marquer…</translation>
 <translation id="3131206671572504478">Tout bloquer</translation>
 <translation id="3153862085237805241">Enregistrer la carte</translation>
+<translation id="3157387275655328056">Ajouter à la liste de lecture</translation>
 <translation id="3157684681743766797">Tout marquer…</translation>
 <translation id="3161291298470460782">Vous serez alors déconnecté, la synchronisation sera désactivée, et toutes les données Chrome seront supprimées de cet appareil. En revanche, vos données synchronisées resteront dans votre compte Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Votre paramètre de cookies s'applique à tous les onglets. Pour en appliquer un nouveau à un onglet ouvert, rechargez l'onglet.</translation>
 <translation id="5190835502935405962">Barre de favoris</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Fermer l'onglet</translation>
 <translation id="5228579091201413441">Activer la synchronisation</translation>
 <translation id="5234764350956374838">Ignorer</translation>
 <translation id="5245322853195994030">Annuler la synchronisation</translation>
@@ -446,6 +448,7 @@
 <translation id="5782227691023083829">Traduction en cours...</translation>
 <translation id="5803566855766646066">Voulez-vous vraiment supprimer cette nouvelle carte ?</translation>
 <translation id="5816228676161003208">Cela vous permet d'effectuer des recherches plus rapidement en utilisant la recherche vocale.</translation>
+<translation id="581659025233126501">Activer la synchronisation</translation>
 <translation id="5819208479324046259">Géré par <ph name="MANAGER" />. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation>
 <translation id="5846482154967366008">Moteur de recherche</translation>
 <translation id="5854790677617711513">Datant de plus de 30 jours</translation>
@@ -485,7 +488,6 @@
 <translation id="6127379762771434464">Élément supprimé</translation>
 <translation id="6136914049981179737">À l'instant.</translation>
 <translation id="6144589619057374135">Ouvrir ${url} en mode navigation privée</translation>
-<translation id="616831107264507309">Lire plus tard</translation>
 <translation id="6177442314419606057">Effectuer une recherche dans Chrome</translation>
 <translation id="6184086493125982861">Afficher les onglets</translation>
 <translation id="6187302354554850004">Dernière synchro : <ph name="LAST_USED_TIME" /></translation>
@@ -493,12 +495,14 @@
 <translation id="6196207969502475924">Recherche vocale</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{Fermer {COUNT} onglet}one{Fermer {COUNT} onglet}other{Fermer {COUNT} onglets}}</translation>
 <translation id="6219688215832490856">Ne jamais traduire</translation>
+<translation id="6223816392543092032">Accédez à vos favoris, votre historique, vos mots de passe et d'autres paramètres sur tous vos appareils.</translation>
 <translation id="6254066287920239840">Ouvrir les liens dans l'application et non dans le navigateur.</translation>
 <translation id="6255097610484507482">Modifier la carte de paiement</translation>
 <translation id="6284652193729350524">Proposer de traduire la langue suivante : <ph name="LANGUAGE" /></translation>
 <translation id="6293101329759844770">Pour activer la navigation sécurisée, ouvrez <ph name="BEGIN_LINK" />Services Google<ph name="END_LINK" /> et appuyez sur "Navigation sécurisée".</translation>
 <translation id="6303969859164067831">Se déconnecter et désactiver la synchronisation</translation>
 <translation id="6308436439357671616">Cela vous permet de prendre et d'importer des photos.</translation>
+<translation id="6321526113093607004">Ajouter aux favoris</translation>
 <translation id="6324528485781869530">Changer de compte pour synchro</translation>
 <translation id="6324669097367352121">Paramètres connexion</translation>
 <translation id="6337234675334993532">Chiffrement</translation>
@@ -525,6 +529,7 @@
 <translation id="6445981559479772097">Message envoyé.</translation>
 <translation id="6447842834002726250">Cookies</translation>
 <translation id="6453018583485750254">Aucune vérification jusqu'à présent.</translation>
+<translation id="6459307836338400162">Pour accéder à d'autres paramètres liés à la confidentialité, à la sécurité et à la collecte de données, consultez les pages <ph name="BEGIN_LINK" />Synchronisation<ph name="END_LINK" /> et <ph name="BEGIN_LINK" />Services Google<ph name="END_LINK" />.</translation>
 <translation id="6464071786529933911">Ouvrir nouvel onglet navigation privée</translation>
 <translation id="6464397691496239022">Les sites peuvent utiliser des cookies pour améliorer votre expérience de navigation (par exemple, pour maintenir votre connexion ou mémoriser les articles de votre panier).
 
@@ -669,7 +674,6 @@
 <translation id="7856733331829174190">Téléchargement impossible</translation>
 <translation id="7859704718976024901">Historique de navigation</translation>
 <translation id="7887198238286927132">Pour protéger votre vie privée, Chrome ne renseigne pas automatiquement de champ.</translation>
-<translation id="7918293828610777738">Votre liste de lecture est disponible hors connexion. Pour y ajouter une page, appuyez sur <ph name="SHARE_OPENING_ICON" />, puis sur <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Export mots de passe…</translation>
 <translation id="7947953824732555851">Accepter/Se connecter</translation>
@@ -708,6 +712,7 @@
 <translation id="8281886186245836920">Passer</translation>
 <translation id="8283172974887967105">Définir…</translation>
 <translation id="8299417921174340354">Pour utiliser les mots de passe, vous devez d'abord définir un code secret sur votre appareil.</translation>
+<translation id="83100941411593607">Connexion désactivée</translation>
 <translation id="8319076807703933069">Nouvelle recherche</translation>
 <translation id="8323906514956095947">Appuyez de manière prolongée pour afficher plus d'options d'onglets</translation>
 <translation id="8328777765163860529">Tout fermer</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gl.xtb b/ios/chrome/app/strings/resources/ios_strings_gl.xtb
index e85ff1f2..0dc889e 100644
--- a/ios/chrome/app/strings/resources/ios_strings_gl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_gl.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Marcar como...</translation>
 <translation id="3131206671572504478">Bloquear todas</translation>
 <translation id="3153862085237805241">Gardar tarxeta</translation>
+<translation id="3157387275655328056">Engadir á lista de lectura</translation>
 <translation id="3157684681743766797">Marcar todo como...</translation>
 <translation id="3161291298470460782">Pecharás sesión, desactivarase a sincronización e borraranse deste dispositivo todos os teus datos de Chrome. Os datos sincronizados conservaranse na túa Conta de Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">A configuración das cookies aplícase a todas as pestanas. Para aplicar unha nova configuración a unha pestana aberta, volve cargala.</translation>
 <translation id="5190835502935405962">Barra de marcadores</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Pechar pestana</translation>
 <translation id="5228579091201413441">Activar sincronización</translation>
 <translation id="5234764350956374838">Rexeitar</translation>
 <translation id="5245322853195994030">Cancelar sincronización</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Eliminouse o elemento</translation>
 <translation id="6136914049981179737">Seg. antes</translation>
 <translation id="6144589619057374135">Abre ${url} no modo de incógnito</translation>
-<translation id="616831107264507309">Ler máis tarde</translation>
 <translation id="6177442314419606057">Busca en Chrome</translation>
 <translation id="6184086493125982861">Amosar pestanas</translation>
 <translation id="6187302354554850004">Última sincronización: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Para activar a opción Navegación segura, abre <ph name="BEGIN_LINK" />Servizos de Google<ph name="END_LINK" /> e toca Navegación segura.</translation>
 <translation id="6303969859164067831">Pechar sesión e desactivar a sincronización</translation>
 <translation id="6308436439357671616">Permíteche tirar e cargar fotos.</translation>
+<translation id="6321526113093607004">Engadir aos marcadores</translation>
 <translation id="6324528485781869530">Cambiar de conta de sincronización</translation>
 <translation id="6324669097367352121">Conf. inicio sesión</translation>
 <translation id="6337234675334993532">Encriptado</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Non se puido descargar o ficheiro</translation>
 <translation id="7859704718976024901">Historial de navegación</translation>
 <translation id="7887198238286927132">Para protexer a túa privacidade, Chrome non autocompletará este campo.</translation>
-<translation id="7918293828610777738">A túa lista de lectura está dispoñible sen conexión. Para engadirlle unha páxina, toca <ph name="SHARE_OPENING_ICON" /> e, a continuación, <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Exportar contrasinais...</translation>
 <translation id="7947953824732555851">Acep. e iniciar ses.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
index 9be0629..75e30754 100644
--- a/ios/chrome/app/strings/resources/ios_strings_gu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">ચિહ્નિત કરો…</translation>
 <translation id="3131206671572504478">બધી બ્લૉક કરો</translation>
 <translation id="3153862085237805241">કાર્ડ સાચવો</translation>
+<translation id="3157387275655328056">વાંચન સૂચિમાં ઉમેરો</translation>
 <translation id="3157684681743766797">તમામને આ રીતે ચિહ્નિત કરો…</translation>
 <translation id="3161291298470460782">આમ કરવાથી તમને સાઇન આઉટ કરવામાં આવશે, સિંક કરવાનું બંધ થશે અને આ ડિવાઇસમાંથી બધો Chrome ડેટા સાફ કરવામાં આવશે. તમારો સિંક કરેલો ડેટા તમારા Google એકાઉન્ટમાં રહેશે.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">તમારી કુકીનાં સેટિંગ બધી ટૅબ પર લાગુ થાય છે. કોઈ ખુલ્લી ટૅબ પર નવું સેટિંગ લાગુ કરવા માટે, ટૅબ ફરીથી લોડ કરો.</translation>
 <translation id="5190835502935405962">બુકમાર્ક્સ બાર</translation>
 <translation id="5197255632782567636">ઇન્ટરનેટ</translation>
+<translation id="5210365745912300556">ટૅબ બંધ કરો</translation>
 <translation id="5228579091201413441">સિંક ચાલુ કરો</translation>
 <translation id="5234764350956374838">કાઢી નાખો</translation>
 <translation id="5245322853195994030">સિંક કરવાનું રદ કરો</translation>
@@ -446,6 +448,7 @@
 <translation id="5782227691023083829">ભાષાંતર કરી રહ્યું છે...</translation>
 <translation id="5803566855766646066">શું તમે ખરેખર આ નવું કાર્ડ કાઢી નાખવા માગો છો?</translation>
 <translation id="5816228676161003208">આ તમને તમારા અવાજનો ઉપયોગ કરીને વધુ ઝડપથી શોધવા દે છે.</translation>
+<translation id="581659025233126501">સિંક કરવાનું ચાલુ કરો</translation>
 <translation id="5819208479324046259"><ph name="MANAGER" /> દ્વારા મેનેજ કરવામાં આવેલું બ્રાઉઝર. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation>
 <translation id="5846482154967366008">શોધ એન્જિન</translation>
 <translation id="5854790677617711513">30 દિવસ કરતા જૂનો</translation>
@@ -485,7 +488,6 @@
 <translation id="6127379762771434464">આઇટમ દૂર કરી</translation>
 <translation id="6136914049981179737">સેકંડ પહેલાં</translation>
 <translation id="6144589619057374135">છૂપા મોડમાં ${url} ખોલો</translation>
-<translation id="616831107264507309">પછીથી વાંચો</translation>
 <translation id="6177442314419606057">Chromeમાં શોધો</translation>
 <translation id="6184086493125982861">ટૅબ્સ બતાવો</translation>
 <translation id="6187302354554850004">છેલ્લે સમન્વયિત કરેલું: <ph name="LAST_USED_TIME" /></translation>
@@ -493,12 +495,14 @@
 <translation id="6196207969502475924">વૉઇસ શોધ</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} ટૅબ બંધ કરો}one{{COUNT} ટૅબ બંધ કરો}other{{COUNT} ટૅબ બંધ કરો}}</translation>
 <translation id="6219688215832490856">ક્યારેય અનુવાદ કરશો નહીં</translation>
+<translation id="6223816392543092032">તમારા તમામ ડિવાઇસ પર તમારા બુકમાર્ક્સ, ઇતિહાસ, પાસવર્ડ અન્ય સેટિંગ મેળવો.</translation>
 <translation id="6254066287920239840">બ્રાઉઝરને બદલે ઍપ્લિકેશનમાં લિંક્સ ખોલો.</translation>
 <translation id="6255097610484507482">ક્રેડિટ કાર્ડમાં ફેરફાર કરો</translation>
 <translation id="6284652193729350524"><ph name="LANGUAGE" />નો અનુવાદ કરવાનું કહો</translation>
 <translation id="6293101329759844770">Safe Browsingની સુવિધા ચાલુ કરવા માટે, <ph name="BEGIN_LINK" />Google સેવાઓ<ph name="END_LINK" /> ખોલો અને Safe Browsing પર ટૅપ કરો.</translation>
 <translation id="6303969859164067831">સાઇન આઉટ કરો અને સિંક બંધ કરો</translation>
 <translation id="6308436439357671616">આ તમને ફોટો લેવા અને અપલોડ કરવા દે છે.</translation>
+<translation id="6321526113093607004">બુકમાર્કમાં ઉમેરો</translation>
 <translation id="6324528485781869530">સિંક એકાઉન્ટ સ્વિચ કરો</translation>
 <translation id="6324669097367352121">સાઇન ઇન કરો સેટિંગ્સ</translation>
 <translation id="6337234675334993532">એન્ક્રિપ્શન</translation>
@@ -525,6 +529,7 @@
 <translation id="6445981559479772097">સંદેશ મોકલ્યો.</translation>
 <translation id="6447842834002726250">કૂકીઝ</translation>
 <translation id="6453018583485750254">ચેક ક્યારેય ચાલ્યું નથી.</translation>
+<translation id="6459307836338400162">પ્રાઇવસી, સુરક્ષા અને ડેટા સંગ્રહથી સંબંધિત વધુ સેટિંગ માટે, <ph name="BEGIN_LINK" />સિંક<ph name="END_LINK" /> અને <ph name="BEGIN_LINK" />Googleની સેવાઓ<ph name="END_LINK" /> બન્નેને જુઓ.</translation>
 <translation id="6464071786529933911">નવા છુપા ટૅબમાં ખોલો</translation>
 <translation id="6464397691496239022">સાઇટ તમને વધુ સારો બ્રાઉઝિંગ અનુભવ આપવા, ઉદાહરણ તરીકે, તમને સાઇન ઇન કરીને રાખવા અથવા તમારા શૉપિંગ કાર્ટની આઇટમ યાદ રાખવા માટે, કુકીનો ઉપયોગ કરી શકે છે.
 
@@ -669,7 +674,6 @@
 <translation id="7856733331829174190">ડાઉનલોડ ન કરી શક્યાં</translation>
 <translation id="7859704718976024901">બ્રાઉઝિંગ ઇતિહાસ</translation>
 <translation id="7887198238286927132">તમારી પ્રાઇવસીની સુરક્ષા કરવા માટે, Chrome આ ફીલ્ડ સ્વતઃ નહીં ભરે.</translation>
-<translation id="7918293828610777738">તમારી વાંચન સૂચિ ઑફલાઇન ઉપલબ્ધ છે. તમારી વાંચન સૂચિમાં પેજ ઉમેરવા માટે, <ph name="SHARE_OPENING_ICON" /> પર અને પછી <ph name="READ_LATER_TEXT" /> પર ટૅપ કરો.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">પાસવર્ડની નિકાસ કરો...</translation>
 <translation id="7947953824732555851">સ્વીકારો અને સાઇન ઇન કરો</translation>
@@ -708,6 +712,7 @@
 <translation id="8281886186245836920">છોડો</translation>
 <translation id="8283172974887967105">સેટ કરો…</translation>
 <translation id="8299417921174340354">પાસવર્ડનો ઉપયોગ કરવા માટે, તમારે પહેલા તમારા ડિવાઇસ પર પાસકોડ સેટ કરવો આવશ્યક છે.</translation>
+<translation id="83100941411593607">સાઇન ઇન કરવાનું બંધ કરેલું છે</translation>
 <translation id="8319076807703933069">નવી શોધ</translation>
 <translation id="8323906514956095947">ટૅબના વધુ વિકલ્પો માટે, ટચ કરીને થોડીવાર દબાવી રાખો</translation>
 <translation id="8328777765163860529">બધું બંધ કરો</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
index 8dd1fdeb..834d0ca 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">चिह्नित करें...</translation>
 <translation id="3131206671572504478">सभी कुकी ब्लॉक करें</translation>
 <translation id="3153862085237805241">कार्ड सेव करें</translation>
+<translation id="3157387275655328056">पठन सूची में जोड़ें</translation>
 <translation id="3157684681743766797">सभी को चिह्नित करें...</translation>
 <translation id="3161291298470460782">ऐसा करने से, आप साइन आउट हो जाएंगे और सिंक की सुविधा बंद हो जाएगी. साथ ही, इस डिवाइस से सारा Chrome डेटा मिट जाएगा. आपने जो डेटा सिंक किया हुआ है वह आपके Google खाते में ही रहेगा.</translation>
 <translation id="3169472444629675720">तलाश करें</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">आपकी कुकी सेटिंग सभी टैब पर लागू होती है. खुले हुए टैब पर नई सेटिंग लागू करने के लिए, टैब को फिर से लोड करें.</translation>
 <translation id="5190835502935405962">बुकमार्क बार</translation>
 <translation id="5197255632782567636">इंटरनेट</translation>
+<translation id="5210365745912300556">टैब बंद करें</translation>
 <translation id="5228579091201413441">सिंक चालू करें</translation>
 <translation id="5234764350956374838">खारिज करें</translation>
 <translation id="5245322853195994030">सिंक करना रद्द करें</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">आइटम निकाला गया</translation>
 <translation id="6136914049981179737">कुछ सेकंड पहले</translation>
 <translation id="6144589619057374135">${url} गुप्त मोड में खोलें</translation>
-<translation id="616831107264507309">बाद में पढ़ें</translation>
 <translation id="6177442314419606057">Chrome में खोजें</translation>
 <translation id="6184086493125982861">टैब दिखाएं</translation>
 <translation id="6187302354554850004">अंतिम बार समन्वयित: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Safe Browsing चालू करने के लिए, <ph name="BEGIN_LINK" />Google की सेवाएं<ph name="END_LINK" /> खोलें और Safe Browsing पर टैप करें.</translation>
 <translation id="6303969859164067831">साइन आउट करें और सिंक बंद करें</translation>
 <translation id="6308436439357671616">इससे आप फ़ोटो ले सकते हैं और अपलोड कर सकते हैं.</translation>
+<translation id="6321526113093607004">Bookmarks में जोड़ें</translation>
 <translation id="6324528485781869530">सिंक खाता स्विच करें</translation>
 <translation id="6324669097367352121">सेटिंग में साइन इन करें</translation>
 <translation id="6337234675334993532">सुरक्षित करने का तरीका</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">डाउनलोड नहीं की जा सकी</translation>
 <translation id="7859704718976024901">ब्राउज़िंग इतिहास</translation>
 <translation id="7887198238286927132">आपकी निजता को सुरक्षित रखने के लिए, Chrome इस फ़ील्ड को ऑटोमैटिक नहीं भरेगा.</translation>
-<translation id="7918293828610777738">आपकी पढ़ने की सूची ऑफ़लाइन उपलब्ध है. अपनी पढ़ने की सूची में कोई पेज जोड़ने के लिए, पहले  <ph name="SHARE_OPENING_ICON" />  पर और फिर <ph name="READ_LATER_TEXT" /> पर टैप करें.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">पासवर्ड निर्यात करें...</translation>
 <translation id="7947953824732555851">स्वीकार करें और साइन इन करें</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
index bbddbbaa..776fa9f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Označi...</translation>
 <translation id="3131206671572504478">Blokiraj sve</translation>
 <translation id="3153862085237805241">Spremi karticu</translation>
+<translation id="3157387275655328056">Dodaj na popis za čitanje</translation>
 <translation id="3157684681743766797">Označi sve...</translation>
 <translation id="3161291298470460782">Time ćete se odjaviti, isključiti sinkronizaciju i izbrisati sve podatke iz Chromea s ovog uređaja. Sinkronizirani podaci ostat će na vašem Google računu.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Vaša postavka kolačića primjenjuje se na sve kartice. Da biste primijenili novu postavku na otvorenu karticu, ponovo učitajte tu karticu.</translation>
 <translation id="5190835502935405962">Traka oznaka</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Zatvori karticu</translation>
 <translation id="5228579091201413441">Omogući sinkronizaciju</translation>
 <translation id="5234764350956374838">Odbaci</translation>
 <translation id="5245322853195994030">Otkaži sinkronizaciju</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Stavka je uklonjena</translation>
 <translation id="6136914049981179737">Prije nekoliko sek.</translation>
 <translation id="6144589619057374135">Otvorite ${url} u anonimnom načinu</translation>
-<translation id="616831107264507309">Pročitajte kasnije</translation>
 <translation id="6177442314419606057">Pretraživanje u Chromeu</translation>
 <translation id="6184086493125982861">Prikaz kartica</translation>
 <translation id="6187302354554850004">Posljednja sinkr.: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Da biste uključili sigurno pregledavanje, otvorite odjeljak <ph name="BEGIN_LINK" />Googleove usluge<ph name="END_LINK" /> i dodirnite Sigurno pregledavanje.</translation>
 <translation id="6303969859164067831">Odjava i isključivanje sinkronizacije</translation>
 <translation id="6308436439357671616">To vam omogućuje snimanje i prijenos fotografija.</translation>
+<translation id="6321526113093607004">Dodaj u Oznake</translation>
 <translation id="6324528485781869530">Promjena računa za sink.</translation>
 <translation id="6324669097367352121">Postavke prijave</translation>
 <translation id="6337234675334993532">Enkripcija</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Preuzimanje nije moguće</translation>
 <translation id="7859704718976024901">Povijest pregledavanja</translation>
 <translation id="7887198238286927132">Da bi zaštitio vašu privatnost, Chrome neće automatski popuniti ovo polje.</translation>
-<translation id="7918293828610777738">Vaš popis za čitanje dostupan je offline. Da biste dodali stranicu na popis za čitanje, dodirnite <ph name="SHARE_OPENING_ICON" />, a zatim <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Izvoz zaporki...</translation>
 <translation id="7947953824732555851">Prihv. i prijavi se</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
index 9e64bc37..5e3013b8d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Megjelölés…</translation>
 <translation id="3131206671572504478">Összes letiltása</translation>
 <translation id="3153862085237805241">Kártya mentése</translation>
+<translation id="3157387275655328056">Hozzáadás olvasási listához</translation>
 <translation id="3157684681743766797">Az összes megjelölése…</translation>
 <translation id="3161291298470460782">Ezzel kijelentkezik, kikapcsol a szinkronizálás, és minden Chrome-adat törlődik erről az eszközről. Szinkronizált adatai továbbra is megmaradnak Google-fiókjában.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">A cookie-kra vonatkozó beállítás az összes lapra érvényes. Ha valamelyik megnyitott laphoz új beállítást szeretne megadni, töltse be újra az adott lapot.</translation>
 <translation id="5190835502935405962">Könyvjelzősáv</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Lap bezárása</translation>
 <translation id="5228579091201413441">Szinkronizálás bekapcsolása</translation>
 <translation id="5234764350956374838">Elvetés</translation>
 <translation id="5245322853195994030">Szinkronizálás megszakítása</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Elem eltávolítva</translation>
 <translation id="6136914049981179737">Néhány másodperce</translation>
 <translation id="6144589619057374135">${url} megnyitása inkognitó módban</translation>
-<translation id="616831107264507309">Olvasás később</translation>
 <translation id="6177442314419606057">Keresés a Chrome-ban</translation>
 <translation id="6184086493125982861">Lapok megjelenítése</translation>
 <translation id="6187302354554850004">Utolsó szinkron.: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">A Biztonságos Böngészés bekapcsolásához nyissa meg a <ph name="BEGIN_LINK" />Google-szolgáltatások<ph name="END_LINK" /> szakaszt, majd koppintson a Biztonságos Böngészés lehetőségre.</translation>
 <translation id="6303969859164067831">Kijelentkezés, és a szinkronizálás kikapcsolása</translation>
 <translation id="6308436439357671616">Lehetővé teszi a fotók készítését és feltöltését.</translation>
+<translation id="6321526113093607004">Hozzáadás a könyvjelzőkhöz</translation>
 <translation id="6324528485781869530">Szinkronizált fiók váltása</translation>
 <translation id="6324669097367352121">Bejelentkezési beállítások</translation>
 <translation id="6337234675334993532">Titkosítás</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Nem sikerült letölteni</translation>
 <translation id="7859704718976024901">Böngészési előzmények</translation>
 <translation id="7887198238286927132">Adatai védelme érdekében a Chrome nem tölti ki automatikusan ezt a mezőt.</translation>
-<translation id="7918293828610777738">Olvasási listája hozzáférhető offline módban. Ha szeretne hozzáadni oldalakat a listához, koppintson a következőkre: <ph name="SHARE_OPENING_ICON" />, majd <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Jelszavak exportálása…</translation>
 <translation id="7947953824732555851">Elfogadás és bejelentkezés</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hy.xtb b/ios/chrome/app/strings/resources/ios_strings_hy.xtb
index 05cda9a..e3243e7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hy.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hy.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Նշել…</translation>
 <translation id="3131206671572504478">Բոլոր քուքիներն արգելափակված են</translation>
 <translation id="3153862085237805241">Պահել քարտը</translation>
+<translation id="3157387275655328056">Ավելացնել ընթերցանության ցանկում</translation>
 <translation id="3157684681743766797">Նշել բոլորը…</translation>
 <translation id="3161291298470460782">Դուք դուրս կգրվեք հաշվից, համաժամացումը կանջատվի, և Chrome-ի բոլոր տվյալները կջնջվեն այս սարքից։ Համաժամացված տվյալները կպահպանվեն ձեր Google հաշվում։</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Ձեր քուքիների կարգավորումները կիրառվում են բոլոր ներդիրներում։ Եթե նոր կարգավորումն ուզում եք կիրառել բացված ներդիրում, վերաբեռնեք այն։</translation>
 <translation id="5190835502935405962">Էջանիշների գոտի</translation>
 <translation id="5197255632782567636">Համացանց</translation>
+<translation id="5210365745912300556">Փակել ներդիրը</translation>
 <translation id="5228579091201413441">Միացնել համաժամացումը</translation>
 <translation id="5234764350956374838">Փակել</translation>
 <translation id="5245322853195994030">Չեղարկել համաժամացումը</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Տարրը հեռացվեց</translation>
 <translation id="6136914049981179737">Վայրկյաններ առաջ</translation>
 <translation id="6144589619057374135">Բացել ինկոգնիտո ռեժիմում` ${url}</translation>
-<translation id="616831107264507309">Կարդալ ավելի ուշ</translation>
 <translation id="6177442314419606057">Որոնում Chrome-ում</translation>
 <translation id="6184086493125982861">Ցույց տալ ներդիրները</translation>
 <translation id="6187302354554850004">Վերջին անգամ համաժամացվել է՝ <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Անվտանգ դիտարկումը միացնելու համար բացեք <ph name="BEGIN_LINK" />Google-ի ծառայությունները<ph name="END_LINK" /> և սեղմեք «Անվտանգ դիտարկում»։</translation>
 <translation id="6303969859164067831">Դուրս գրվել հաշվից և անջատել համաժամացումը</translation>
 <translation id="6308436439357671616">Թույլ է տալիս լուսանկարել և վերբեռնել լուսանկարները:</translation>
+<translation id="6321526113093607004">Ավելացնել «Էջանիշներ» բաժնում</translation>
 <translation id="6324528485781869530">Փոխեք համաժամացման հաշիվը</translation>
 <translation id="6324669097367352121">Մուտքի կարգավորումներ</translation>
 <translation id="6337234675334993532">Գաղտնագրում</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Չհաջողվեց ներբեռնել</translation>
 <translation id="7859704718976024901">Այցելությունների պատմություն</translation>
 <translation id="7887198238286927132">Ձեր գաղտնիությունը պաշտպանելու նպատակով Chrome-ն ավտոմատ չի լրացնի այս դաշտը:</translation>
-<translation id="7918293828610777738">Ձեր ընթերցանության ցանկը հասանելի է նաև անցանց ռեժիմում: Ընթերցանության ցանկում էջ ավելացնելու համար հպեք <ph name="SHARE_OPENING_ICON" />, ապա <ph name="READ_LATER_TEXT" />։</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Գաղտնաբառերի արտահանում...</translation>
 <translation id="7947953824732555851">Ընդունել և մտնել</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_id.xtb b/ios/chrome/app/strings/resources/ios_strings_id.xtb
index 7398f4a..674879c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_id.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_id.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Tandai…</translation>
 <translation id="3131206671572504478">Blokir Semua</translation>
 <translation id="3153862085237805241">Simpan Kartu</translation>
+<translation id="3157387275655328056">Tambahkan ke Daftar Bacaan</translation>
 <translation id="3157684681743766797">Tandai Semua...</translation>
 <translation id="3161291298470460782">Ini akan membuat Anda logout, menonaktifkan sinkronisasi, dan menghapus semua data Chrome dari perangkat ini. Data yang disinkronkan akan tetap berada di Akun Google Anda.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Setelan cookie berlaku untuk semua tab. Untuk menerapkan setelan baru pada tab yang terbuka, muat ulang tab.</translation>
 <translation id="5190835502935405962">Bilah Bookmark</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Tutup tab</translation>
 <translation id="5228579091201413441">Aktifkan sinkronisasi</translation>
 <translation id="5234764350956374838">Tutup</translation>
 <translation id="5245322853195994030">Batalkan Sinkronisasi</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Item dihapus</translation>
 <translation id="6136914049981179737">Detik lalu</translation>
 <translation id="6144589619057374135">Buka ${url} dalam mode Samaran</translation>
-<translation id="616831107264507309">Baca Nanti</translation>
 <translation id="6177442314419606057">Penelusuran di Chrome</translation>
 <translation id="6184086493125982861">Tampilkan Tab</translation>
 <translation id="6187302354554850004">Sinkron terakhir: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Untuk mengaktifkan Safe Browsing, buka <ph name="BEGIN_LINK" />Layanan Google<ph name="END_LINK" /> dan ketuk Safe Browsing.</translation>
 <translation id="6303969859164067831">Logout dan nonaktifkan sinkronisasi</translation>
 <translation id="6308436439357671616">Hal ini memungkinkan Anda mengambil dan mengupload foto.</translation>
+<translation id="6321526113093607004">Tambahkan ke Bookmark</translation>
 <translation id="6324528485781869530">Ganti Akun Sinkronisasi</translation>
 <translation id="6324669097367352121">Setelan masuk</translation>
 <translation id="6337234675334993532">Enkripsi</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Tidak Dapat Mendownload</translation>
 <translation id="7859704718976024901">Histori Browsing</translation>
 <translation id="7887198238286927132">Untuk melindungi privasi Anda, Chrome tidak akan melakukan IsiOtomatis pada kolom ini.</translation>
-<translation id="7918293828610777738">Daftar bacaan Anda tersedia secara offline. Untuk menambahkan halaman ke daftar bacaan, ketuk <ph name="SHARE_OPENING_ICON" /> lalu <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Ekspor Sandi...</translation>
 <translation id="7947953824732555851">Terima dan masuk</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_is.xtb b/ios/chrome/app/strings/resources/ios_strings_is.xtb
index d74deb4..b10ae664 100644
--- a/ios/chrome/app/strings/resources/ios_strings_is.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_is.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Merkja…</translation>
 <translation id="3131206671572504478">Útiloka öll</translation>
 <translation id="3153862085237805241">Vista kort</translation>
+<translation id="3157387275655328056">Bæta við leslista</translation>
 <translation id="3157684681743766797">Merkja allt…</translation>
 <translation id="3161291298470460782">Þetta skráir þig út, slekkur á samstillingu og hreinsar öll Chrome gögn úr þessu tæki. Samstillt gögn verða áfram á Google reikningnum.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Fótsporastillingarnar þínar ná til allra flipa. Til að ný stilling taki gildi fyrir opinn flipa þarftu að endurhlaða hann.</translation>
 <translation id="5190835502935405962">Bókamerkjastika</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Loka flipa</translation>
 <translation id="5228579091201413441">Kveikja á samstillingu</translation>
 <translation id="5234764350956374838">Hunsa</translation>
 <translation id="5245322853195994030">Hætta við samstillingu</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Atriði fjarlægt</translation>
 <translation id="6136914049981179737">sekúndur síðan</translation>
 <translation id="6144589619057374135">Opna ${url} í huliðsstillingu</translation>
-<translation id="616831107264507309">Lesa síðar</translation>
 <translation id="6177442314419606057">Leita í Chrome</translation>
 <translation id="6184086493125982861">Sýna flipa</translation>
 <translation id="6187302354554850004">Síðast samstillt: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Til að kveikja á öruggri vefskoðun skaltu opna <ph name="BEGIN_LINK" />Google þjónustur<ph name="END_LINK" /> og ýta á „Örugg vefskoðun“.</translation>
 <translation id="6303969859164067831">Skrá út og slökkva á samstillingu</translation>
 <translation id="6308436439357671616">Með þessu móti geturðu tekið myndir og hlaðið þeim upp.</translation>
+<translation id="6321526113093607004">Bæta við bókamerki</translation>
 <translation id="6324528485781869530">Skipta um samstillingarreikning</translation>
 <translation id="6324669097367352121">Innskráningarstillingar</translation>
 <translation id="6337234675334993532">Dulkóðun</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Tókst ekki að sækja</translation>
 <translation id="7859704718976024901">Vafraferill</translation>
 <translation id="7887198238286927132">Til að tryggja öryggi þitt fyllir Chrome ekki sjálfkrafa út í þennan reit.</translation>
-<translation id="7918293828610777738">Leslistinn þinn er tiltækur án nettengingar. Þú bætir síðu við leslistann með því að ýta á <ph name="SHARE_OPENING_ICON" /> og síðan <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Flytja út aðgangsorð...</translation>
 <translation id="7947953824732555851">Samþykkja og skrá inn</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_it.xtb b/ios/chrome/app/strings/resources/ios_strings_it.xtb
index 68b13aa..14fb863 100644
--- a/ios/chrome/app/strings/resources/ios_strings_it.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_it.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Segna come…</translation>
 <translation id="3131206671572504478">Blocca tutti</translation>
 <translation id="3153862085237805241">Salva carta</translation>
+<translation id="3157387275655328056">Aggiungi all'elenco di lettura</translation>
 <translation id="3157684681743766797">Segna tutti come...</translation>
 <translation id="3161291298470460782">In questo modo il tuo account verrà disconnesso, la sincronizzazione verrà disattivata e tutti i dati di Chrome verranno eliminati da questo dispositivo. I tuoi dati sincronizzati rimarranno nel tuo Account Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">L'impostazione relativa ai cookie viene applicata a tutte le schede. Per applicare una nuova impostazione a una scheda aperta, ricarica la scheda.</translation>
 <translation id="5190835502935405962">Barra dei Preferiti</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Chiudi scheda</translation>
 <translation id="5228579091201413441">Abilita sincronizzazione</translation>
 <translation id="5234764350956374838">Ignora</translation>
 <translation id="5245322853195994030">Annulla sincronizzazione</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Elemento rimosso</translation>
 <translation id="6136914049981179737">Secondi fa</translation>
 <translation id="6144589619057374135">Apri ${url} in incognito</translation>
-<translation id="616831107264507309">Leggi dopo</translation>
 <translation id="6177442314419606057">Cerca in Chrome</translation>
 <translation id="6184086493125982861">Mostra schede</translation>
 <translation id="6187302354554850004">Ultima sincronizzazione: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Per attivare Navigazione sicura, apri <ph name="BEGIN_LINK" />Servizi Google<ph name="END_LINK" /> e tocca Navigazione sicura.</translation>
 <translation id="6303969859164067831">Esci e disattiva la sincronizzazione</translation>
 <translation id="6308436439357671616">In questo modo puoi scattare e caricare foto.</translation>
+<translation id="6321526113093607004">Aggiungi ai preferiti</translation>
 <translation id="6324528485781869530">Cambia account di sincronizzazione</translation>
 <translation id="6324669097367352121">Impostazioni accesso</translation>
 <translation id="6337234675334993532">Crittografia</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Download non riuscito</translation>
 <translation id="7859704718976024901">Cronologia di navigazione</translation>
 <translation id="7887198238286927132">Per tutelare la tua privacy, Chrome non compilerà automaticamente questo campo.</translation>
-<translation id="7918293828610777738">Il tuo elenco di lettura è disponibile offline. Per aggiungere una pagina all'elenco di lettura, tocca <ph name="SHARE_OPENING_ICON" />, quindi <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Esporta password...</translation>
 <translation id="7947953824732555851">Accetta e accedi</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
index e82c0f58..484d135 100644
--- a/ios/chrome/app/strings/resources/ios_strings_iw.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">סימון…</translation>
 <translation id="3131206671572504478">‏חסימת כל קובצי ה-cookie</translation>
 <translation id="3153862085237805241">שמירת כרטיס</translation>
+<translation id="3157387275655328056">הוסף לרשימת הקריאה</translation>
 <translation id="3157684681743766797">סימון הכול…</translation>
 <translation id="3161291298470460782">‏הפעולה הזו תוציא אותך מהחשבון, תשבית את הסנכרון ותנקה את כל נתוני Chrome מהמכשיר הזה. הנתונים המסונכרנים יישארו בחשבון Google שלך.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">‏הגדרת קובצי ה-cookie שלך חלה על כל הכרטיסיות. כדי להחיל הגדרה חדשה על כרטיסייה פתוחה יש לטעון את הכרטיסייה מחדש.</translation>
 <translation id="5190835502935405962">סרגל הסימניות</translation>
 <translation id="5197255632782567636">אינטרנט</translation>
+<translation id="5210365745912300556">סגירת כרטיסייה</translation>
 <translation id="5228579091201413441">הפעלת סנכרון</translation>
 <translation id="5234764350956374838">סגירה</translation>
 <translation id="5245322853195994030">ביטול הסנכרון</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">הפריט הוסר</translation>
 <translation id="6136914049981179737">שניות</translation>
 <translation id="6144589619057374135">‏פתיחת ${urls} במצב אנונימי</translation>
-<translation id="616831107264507309">קריאה אחר כך</translation>
 <translation id="6177442314419606057">‏חיפוש ב-Chrome</translation>
 <translation id="6184086493125982861">הצגת כרטיסיות</translation>
 <translation id="6187302354554850004">סונכרן לאחרונה: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">‏כדי להפעיל גלישה בטוחה, יש להיכנס ל<ph name="BEGIN_LINK" />שירותי Google<ph name="END_LINK" /> ולהקיש על 'גלישה בטוחה'.</translation>
 <translation id="6303969859164067831">יציאה וכיבוי הסנכרון</translation>
 <translation id="6308436439357671616">אישור זה מאפשר לך לצלם ולעדכן תמונות.</translation>
+<translation id="6321526113093607004">הוספה לסימניות</translation>
 <translation id="6324528485781869530">החלפת חשבון לסנכרון</translation>
 <translation id="6324669097367352121">הגדרות כניסה</translation>
 <translation id="6337234675334993532">הצפנה</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">ההורדה נכשלה</translation>
 <translation id="7859704718976024901">היסטוריית הגלישה</translation>
 <translation id="7887198238286927132">‏כדי לשמור על הפרטיות שלך, מערכת Chrome לא ממלאת את השדה הזה באופן אוטומטי.</translation>
-<translation id="7918293828610777738">רשימת הקריאה זמינה אופליין. כדי להוסיף דף לרשימת הקריאה צריך להקיש על <ph name="SHARE_OPENING_ICON" /> ועל <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">ייצוא סיסמאות...</translation>
 <translation id="7947953824732555851">קבלה וכניסה</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
index e041c7e..5d07166 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ja.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">マーク...</translation>
 <translation id="3131206671572504478">すべてブロック</translation>
 <translation id="3153862085237805241">カードを保存</translation>
+<translation id="3157387275655328056">リーディング リストに追加</translation>
 <translation id="3157684681743766797">すべてマーク...</translation>
 <translation id="3161291298470460782">この操作を行うと、ログアウトして同期がオフになり、このデバイスから Chrome のデータがすべて削除されます。同期データは Google アカウントに残ります。</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Cookie の設定はすべてのタブに適用されます。開いているタブに新しい設定を適用するには、タブを再読み込みしてください。</translation>
 <translation id="5190835502935405962">ブックマーク バー</translation>
 <translation id="5197255632782567636">インターネット</translation>
+<translation id="5210365745912300556">タブを閉じる</translation>
 <translation id="5228579091201413441">同期を有効にする</translation>
 <translation id="5234764350956374838">閉じる</translation>
 <translation id="5245322853195994030">同期をキャンセル</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">アイテムを削除しました</translation>
 <translation id="6136914049981179737">数秒前</translation>
 <translation id="6144589619057374135">${url} をシークレット モードで開く</translation>
-<translation id="616831107264507309">後で読む</translation>
 <translation id="6177442314419606057">Chrome で検索</translation>
 <translation id="6184086493125982861">タブを表示</translation>
 <translation id="6187302354554850004">最終同期: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">セーフ ブラウジングをオンにするには、[<ph name="BEGIN_LINK" />Google サービス<ph name="END_LINK" />] を開いて [セーフ ブラウジング] をタップします。</translation>
 <translation id="6303969859164067831">ログアウトして同期をオフにする</translation>
 <translation id="6308436439357671616">写真を撮影してアップロードできます。</translation>
+<translation id="6321526113093607004">ブックマークに追加</translation>
 <translation id="6324528485781869530">同期アカウントの切り替え</translation>
 <translation id="6324669097367352121">ログインの設定</translation>
 <translation id="6337234675334993532">暗号化</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">ダウンロードできませんでした</translation>
 <translation id="7859704718976024901">閲覧履歴</translation>
 <translation id="7887198238286927132">プライバシー保護のため、Chrome ではこの欄の自動入力は行われません。</translation>
-<translation id="7918293828610777738">リーディング リストをオフラインで利用できます。リーディング リストにページを追加するには、<ph name="SHARE_OPENING_ICON" /> &gt; [<ph name="READ_LATER_TEXT" />] をタップします。</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">パスワードをエクスポート...</translation>
 <translation id="7947953824732555851">同意してログイン</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ka.xtb b/ios/chrome/app/strings/resources/ios_strings_ka.xtb
index bfd2d4d0..995e683d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ka.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ka.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">მონიშვნა…</translation>
 <translation id="3131206671572504478">ყველას დაბლოკვა</translation>
 <translation id="3153862085237805241">ბარათის შენახვა</translation>
+<translation id="3157387275655328056">საკითხავ სიაში დამატება</translation>
 <translation id="3157684681743766797">ყველას მონიშვნა…</translation>
 <translation id="3161291298470460782">ეს მოქმედება გამოგიყვანთ სისტემიდან, გამორთავს სინქრონიზაციას და გაასუფთავებს Chrome-ის ყველა მონაცემს ამ მოწყობილობიდან. თქვენი სინქრონიზებული მონაცემები დარჩება თქვენს Google ანგარიშში.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">ქუქი-ჩანაწერების პარამეტრები ვრცელდება ყველა ჩანართზე. ახალი პარამეტრის გახსნილ ჩანართზე მისასადაგებლად გადატვირთეთ ჩანართი.</translation>
 <translation id="5190835502935405962">სანიშნეების ზოლი</translation>
 <translation id="5197255632782567636">ინტერნეტი</translation>
+<translation id="5210365745912300556">ჩანართის დახურვა</translation>
 <translation id="5228579091201413441">სინქრონიზაციის ჩართვა</translation>
 <translation id="5234764350956374838">გაუქმება</translation>
 <translation id="5245322853195994030">სინქრონიზაციის გაუქმება</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">ერთეული ამოიშალა</translation>
 <translation id="6136914049981179737">წამის წინ</translation>
 <translation id="6144589619057374135">${url}-ის გახსნა ინკოგნიტო რეჟიმში</translation>
-<translation id="616831107264507309">მოგვიანებით წაკითხვა</translation>
 <translation id="6177442314419606057">Chrome-ში ძიება</translation>
 <translation id="6184086493125982861">ჩანართების ჩვენება</translation>
 <translation id="6187302354554850004">ბოლო სინქრონიზაცია: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Safe Browsing-ის ჩასართავად გახსენით <ph name="BEGIN_LINK" />Google სერვისები<ph name="END_LINK" /> და შეეხეთ Safe Browsing-ს.</translation>
 <translation id="6303969859164067831">გამოსვლა და სინქრონიზაციის გამორთვა</translation>
 <translation id="6308436439357671616">საშუალებას გაძლევთ, გადაიღოთ და ატვირთოთ ფოტოები.</translation>
+<translation id="6321526113093607004">სანიშნეებში დამატება</translation>
 <translation id="6324528485781869530">სინქრონიზაციის ანგარიშის გადართვა</translation>
 <translation id="6324669097367352121">შესვლის პარამეტრები</translation>
 <translation id="6337234675334993532">დაშიფვრა</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">ჩამოტვირთვა ვერ მოხერხდა</translation>
 <translation id="7859704718976024901">დათვალიერების ისტორია</translation>
 <translation id="7887198238286927132">თქვენი კონფიდენციალურობის დაცვის მიზნით, Chrome არ შეავსებს ავტომატურად ამ ველს.</translation>
-<translation id="7918293828610777738">თქვენი საკითხავი სია ხელმისაწვდომია ხაზგარეშე რეჟიმში. მასში გვერდის დასამატებლად შეეხებით აირჩიეთ <ph name="SHARE_OPENING_ICON" />, ხოლო შემდეგ — „<ph name="READ_LATER_TEXT" />“.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">პაროლების ექსპორტი...</translation>
 <translation id="7947953824732555851">მიღება და შესვლა</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kk.xtb b/ios/chrome/app/strings/resources/ios_strings_kk.xtb
index bccbfe7..13ebcb0 100644
--- a/ios/chrome/app/strings/resources/ios_strings_kk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_kk.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Белгілеу…</translation>
 <translation id="3131206671572504478">Барлығын бөгеу</translation>
 <translation id="3153862085237805241">Картаны сақтау</translation>
+<translation id="3157387275655328056">Оқу тізіміне қосу</translation>
 <translation id="3157684681743766797">Барлығын белгілеу…</translation>
 <translation id="3161291298470460782">Бұл сізді есептік жазбадан шығарады, синхрондауды өшіреді және осы құрылғыдағы барлық Chrome деректерін жояды. Синхрондалған деректер Google есептік жазбасында сақталады.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Cookie параметрі барлық қойындыларға қолданылады. Жаңа параметрді ашық қойындыға қолдану үшін қойындыны қайта жүктеңіз.</translation>
 <translation id="5190835502935405962">Бетбелгілер жолағы</translation>
 <translation id="5197255632782567636">Интернет</translation>
+<translation id="5210365745912300556">Қойындыны жабу</translation>
 <translation id="5228579091201413441">Синхрондауды қосу</translation>
 <translation id="5234764350956374838">Жабу</translation>
 <translation id="5245322853195994030">Синхрондаудан бас тарту</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Элемент жойылған</translation>
 <translation id="6136914049981179737">Секунд бұрын</translation>
 <translation id="6144589619057374135">${url} сілтемесін инкогнито режимінде ашу</translation>
-<translation id="616831107264507309">Кейінірек оқу</translation>
 <translation id="6177442314419606057">Chrome браузерінде іздеу</translation>
 <translation id="6184086493125982861">Қойындыларды көрсету</translation>
 <translation id="6187302354554850004">Соңғы рет синхрондалған: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Safe Browsing функциясын қосу үшін <ph name="BEGIN_LINK" />Google қызметтерін<ph name="END_LINK" /> ашып, Safe Browsing түймесін түртіңіз.</translation>
 <translation id="6303969859164067831">Есептік жазбадан шығу және синхрондау функциясын өшіру</translation>
 <translation id="6308436439357671616">Суреттерді түсіруге және жүктеп алуға мүмкіндік береді.</translation>
+<translation id="6321526113093607004">Бетбелгілерге қосу</translation>
 <translation id="6324528485781869530">Синхрондау есептік жазбасына ауысу</translation>
 <translation id="6324669097367352121">Кіру параметрлері</translation>
 <translation id="6337234675334993532">Шифрлау</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Жүктеп алынбады</translation>
 <translation id="7859704718976024901">Шолу журналы</translation>
 <translation id="7887198238286927132">Құпиялылығыңызды сақтау мақсатында бұл өріс автоматты түрде толтырылмайды.</translation>
-<translation id="7918293828610777738">Оқу тізіміңіз офлайн режимде қолжетімді. Оқу тізіміне бет енгізу үшін <ph name="SHARE_OPENING_ICON" /> белгішесін, одан кейін <ph name="READ_LATER_TEXT" /> мәтінін басыңыз.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Құпия сөздерді экспорттау...</translation>
 <translation id="7947953824732555851">Қабылдау және кіру</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_km.xtb b/ios/chrome/app/strings/resources/ios_strings_km.xtb
index 6c45b60..e5c77ad4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_km.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_km.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">សម្គាល់…</translation>
 <translation id="3131206671572504478">ទប់ស្កាត់​​ទាំង​អស់</translation>
 <translation id="3153862085237805241">រក្សាទុក​បណ្ណ</translation>
+<translation id="3157387275655328056">បន្ថែមទៅបញ្ជីអាន</translation>
 <translation id="3157684681743766797">សម្គាល់ទាំងអស់…</translation>
 <translation id="3161291298470460782">ការធ្វើបែបនេះនឹងនាំអ្នកចេញពីគណនី បិទសមកាលកម្ម និងសម្អាតទិន្នន័យ Chrome ទាំងអស់​ចេញពីឧបករណ៍នេះ។ ទិន្នន័យ​ដែលអ្នកបានធ្វើសមកាលកម្ម​នឹងនៅតែមាននៅក្នុងគណនី Google របស់អ្នកដដែល។</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">ការកំណត់ខូគីរបស់អ្នកត្រូវ​បាន​អនុវត្តនៅក្នុងផ្ទាំងទាំងអស់។ ដើម្បីប្រើការកំណត់ថ្មីនៅក្នុងផ្ទាំងដែលបើក សូមផ្ទុកផ្ទាំងនោះឡើងវិញ។</translation>
 <translation id="5190835502935405962">របាចំណាំ</translation>
 <translation id="5197255632782567636">អ៊ីនធឺណិត</translation>
+<translation id="5210365745912300556">បិទផ្ទាំង</translation>
 <translation id="5228579091201413441">បើកដំណើរការធ្វើសមកាលកម្ម</translation>
 <translation id="5234764350956374838">ច្រានចោល</translation>
 <translation id="5245322853195994030">បោះបង់​ការធ្វើសមកាលកម្ម</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">ធាតុត្រូវបានយកចេញ</translation>
 <translation id="6136914049981179737">វិនាទីមុន</translation>
 <translation id="6144589619057374135">បើក ${url} នៅក្នុង​មុខងារឯកជន</translation>
-<translation id="616831107264507309">អាននៅពេលក្រោយ</translation>
 <translation id="6177442314419606057">ការស្វែងរកនៅក្នុង Chrome</translation>
 <translation id="6184086493125982861">បង្ហាញផ្ទាំង</translation>
 <translation id="6187302354554850004">សមកម្មចុងក្រោយ: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">ដើម្បីបើក "ការរុករកដោយសុវត្ថិភាព" សូមបើក​<ph name="BEGIN_LINK" />សេវាកម្ម Google<ph name="END_LINK" /> រួចចុច "ការរុករកដោយសុវត្ថិភាព"។</translation>
 <translation id="6303969859164067831">ចាកចេញ ហើយបិទការធ្វើសមកាលកម្ម</translation>
 <translation id="6308436439357671616">វាអនុញ្ញាតឲ្យអ្នកថត និងអាប់ឡូតរូបថត</translation>
+<translation id="6321526113093607004">បញ្ចូល​ទៅ​ក្នុង​ចំណាំ</translation>
 <translation id="6324528485781869530">ប្តូរ​គណនី​សមកាលកម្ម</translation>
 <translation id="6324669097367352121">ការកំណត់ការចូល</translation>
 <translation id="6337234675334993532">ការអ៊ីនគ្រីប</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">មិន​អាច​ទាញ​យកបាន​ទេ</translation>
 <translation id="7859704718976024901">ប្រវត្តិរុករក</translation>
 <translation id="7887198238286927132">ដើម្បី​ការពារ​ឯកជនភាព​របស់អ្នក Chrome នឹងមិន​បំពេញ​កន្លែងបញ្ចូល​នេះដោយស្វ័យ​ប្រវត្តិទេ។</translation>
-<translation id="7918293828610777738">បញ្ជី​អាន​របស់អ្នក​អាច​ប្រើបាន​ពេលគ្មានអ៊ីធឺណិត។ ដើម្បី​បញ្ចូល​ទំព័រ​ទៅ​ក្នុង​បញ្ជី​អាន​របស់អ្នក សូមចុច <ph name="SHARE_OPENING_ICON" />  បន្ទាប់មក <ph name="READ_LATER_TEXT" /> ។</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">នាំចេញ​ពាក្យ​សម្ងាត់...</translation>
 <translation id="7947953824732555851">ទទួល និងចូល</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
index 588683c3..c609972f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_kn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">ಗುರುತಿಸಿ...</translation>
 <translation id="3131206671572504478">ಎಲ್ಲವನ್ನೂ ನಿರ್ಬಂಧಿಸಿ</translation>
 <translation id="3153862085237805241">ಕಾರ್ಡ್‌ ಅನ್ನು ಉಳಿಸಿ</translation>
+<translation id="3157387275655328056">ಓದುವ ಪಟ್ಟಿಗೆ ಸೇರಿಸಿ</translation>
 <translation id="3157684681743766797">ಎಲ್ಲವನ್ನೂ ಗುರುತಿಸಿ…</translation>
 <translation id="3161291298470460782">ಇದು ನಿಮ್ಮನ್ನು ಸೈನ್ ಔಟ್ ಮಾಡುತ್ತದೆ, ಸಿಂಕ್ ಅನ್ನು ಆಫ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಈ ಸಾಧನದಲ್ಲಿರುವ ಎಲ್ಲಾ Chrome ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ. ಸಿಂಕ್ ಮಾಡಿರುವ ನಿಮ್ಮ ಡೇಟಾ ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಯುತ್ತದೆ.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">ನಿಮ್ಮ ಕುಕೀಗಳ ಸೆಟ್ಟಿಂಗ್ ಎಲ್ಲಾ ಟ್ಯಾಬ್‌ಗಳಿಗೆ ಅನ್ವಯಿಸುತ್ತದೆ. ತೆರೆದ ಟ್ಯಾಬ್‌ ಒಂದಕ್ಕೆ ಹೊಸ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಅನ್ವಯಿಸಲು, ಟ್ಯಾಬ್ ಅನ್ನು ಮರುಲೋಡ್ ಮಾಡಿ.</translation>
 <translation id="5190835502935405962">ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳ ಬಾರ್</translation>
 <translation id="5197255632782567636">ಇಂಟರ್ನೆಟ್</translation>
+<translation id="5210365745912300556">ಟ್ಯಾಬ್ ಅನ್ನು ಮುಚ್ಚಿ</translation>
 <translation id="5228579091201413441">ಸಿಂಕ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="5234764350956374838">ವಜಾಗೊಳಿಸಿ</translation>
 <translation id="5245322853195994030">ಸಿಂಕ್ ರದ್ದುಗೊಳಿಸಿ</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">ಐಟಂ ತೆಗೆದುಹಾಕಲಾಗಿದೆ</translation>
 <translation id="6136914049981179737">ಸೆಕೆಂಡ್ ಹಿಂದೆ</translation>
 <translation id="6144589619057374135">${url} ಅನ್ನು ಅದೃಶ್ಯ ಮೋಡ್‌ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
-<translation id="616831107264507309">ನಂತರ ಓದಿ</translation>
 <translation id="6177442314419606057">Chrome ನಲ್ಲಿ ಹುಡುಕಿ</translation>
 <translation id="6184086493125982861">ಟ್ಯಾಬ್‌ಗಳನ್ನು ತೋರಿಸಿ</translation>
 <translation id="6187302354554850004">ಕೊನೆಯದಾಗಿ ಸಿಂಕ್ ಮಾಡಿರುವುದು: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್ ಅನ್ನು ಆನ್ ಮಾಡಲು, <ph name="BEGIN_LINK" />Google ಸೇವೆಗಳನ್ನು<ph name="END_LINK" /> ತೆರೆಯಿರಿ ಮತ್ತು ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ.</translation>
 <translation id="6303969859164067831">ಸೈನ್ ಔಟ್ ಮಾಡಿ ಮತ್ತು ಸಿಂಕ್ ಆಫ್ ಮಾಡಿ</translation>
 <translation id="6308436439357671616">ಇದು ಫೋಟೋಗಳನ್ನು ತೆಗೆಯಲು ಮತ್ತು ಅಪ್‌ಲೋಡ್ ಮಾಡಲು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ.</translation>
+<translation id="6321526113093607004">ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳಿಗೆ ಸೇರಿಸಿ</translation>
 <translation id="6324528485781869530">ಸಿಂಕ್ ಖಾತೆಯನ್ನು ಬದಲಾಯಿಸಿ</translation>
 <translation id="6324669097367352121">ಸೈನ್ ಇನ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
 <translation id="6337234675334993532">ಎನ್‌ಕ್ರಿಪ್ಶನ್</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">ಡೌನ್‌ಲೋಡ್‌ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation>
 <translation id="7859704718976024901">ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸ</translation>
 <translation id="7887198238286927132">ನಿಮ್ಮ ಗೌಪ್ಯತೆಯನ್ನು ರಕ್ಷಿಸಲು, Chrome ಈ ಫೀಲ್ಡ್ ಅನ್ನು ಸ್ವಯಂ ಭರ್ತಿ ಮಾಡುವುದಿಲ್ಲ.</translation>
-<translation id="7918293828610777738">ನಿಮ್ಮ ಓದುವ ಪಟ್ಟಿಯು ಆಫ್‌ಲೈನ್‌ನಲ್ಲಿ ಲಭ್ಯವಿದೆ. ನಿಮ್ಮ ಓದುವ ಪಟ್ಟಿಯಲ್ಲಿ ಪುಟವನ್ನು ಸೇರಿಸಲು, <ph name="SHARE_OPENING_ICON" /> ಟ್ಯಾಪ್ ಮಾಡಿ ನಂತರ <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಎಕ್ಸ್‌ಪೋರ್ಟ್ ಮಾಡಿ...</translation>
 <translation id="7947953824732555851">ಸಮ್ಮತಿಸಿ ಮತ್ತು ಸೈನ್‌ ಇನ್‌ ಮಾಡಿ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
index 45998656..76b9f4da 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ko.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">표시…</translation>
 <translation id="3131206671572504478">모두 차단</translation>
 <translation id="3153862085237805241">카드 저장</translation>
+<translation id="3157387275655328056">읽기 목록에 추가</translation>
 <translation id="3157684681743766797">모두 표시...</translation>
 <translation id="3161291298470460782">로그아웃되고 동기화가 사용 중지되며 기기에서 모든 Chrome 데이터가 삭제됩니다. 동기화된 데이터는 Google 계정에 그대로 유지됩니다.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">쿠키 설정이 모든 탭에 적용됩니다. 새로운 설정을 열려 있는 탭에 적용하려면 탭을 새로고침하세요.</translation>
 <translation id="5190835502935405962">북마크바</translation>
 <translation id="5197255632782567636">인터넷</translation>
+<translation id="5210365745912300556">탭 닫기</translation>
 <translation id="5228579091201413441">동기화 사용</translation>
 <translation id="5234764350956374838">닫기</translation>
 <translation id="5245322853195994030">동기화 취소</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">항목 삭제됨</translation>
 <translation id="6136914049981179737">초 전</translation>
 <translation id="6144589619057374135">시크릿 모드에서 ${url} 열기</translation>
-<translation id="616831107264507309">나중에 읽기</translation>
 <translation id="6177442314419606057">Chrome에서 검색</translation>
 <translation id="6184086493125982861">탭 표시</translation>
 <translation id="6187302354554850004">최근 동기화: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">세이프 브라우징을 사용 설정하려면 <ph name="BEGIN_LINK" />Google 서비스<ph name="END_LINK" />를 열고 세이프 브라우징을 탭하세요.</translation>
 <translation id="6303969859164067831">로그아웃하고 동기화 사용 중지</translation>
 <translation id="6308436439357671616">액세스를 허용하면 사진을 찍고 업로드할 수 있습니다.</translation>
+<translation id="6321526113093607004">북마크에 추가</translation>
 <translation id="6324528485781869530">동기화 계정 전환</translation>
 <translation id="6324669097367352121">로그인 설정</translation>
 <translation id="6337234675334993532">암호화</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">다운로드할 수 없음</translation>
 <translation id="7859704718976024901">인터넷 사용 기록</translation>
 <translation id="7887198238286927132">Chrome에서는 개인정보 보호를 위해 이 입력란을 자동 완성하지 않습니다.</translation>
-<translation id="7918293828610777738">읽기 목록을 오프라인으로 사용할 수 있습니다. 읽기 목록에 페이지를 추가하려면 <ph name="SHARE_OPENING_ICON" />, <ph name="READ_LATER_TEXT" />을(를) 차례로 탭하세요.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">비밀번호 내보내기...</translation>
 <translation id="7947953824732555851">수락 및 로그인</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
index 8a44d6d..2bb20504 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ky.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Белгилөө…</translation>
 <translation id="3131206671572504478">Баарын бөгөттөө</translation>
 <translation id="3153862085237805241">Карточканы сактоо</translation>
+<translation id="3157387275655328056">Окуу тизмесине кошуу</translation>
 <translation id="3157684681743766797">Баарын белгилөө…</translation>
 <translation id="3161291298470460782">Ушуну менен, аккаунтуңуздан чыгарыласыз, шайкештирүү өчүрүлүп, Chrome'догу бардык дайындар бул түзмөктөн тазаланат. Шайкештирилген маалымат Google аккаунтуңузда сакталып турат.</translation>
 <translation id="3169472444629675720">Аныктоо</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Cookie файлдарыңыздын жөндөөсү бардык өтмөктөргө карата колдонулат. Жаңы жөндөөнү ачык өтмөккө карата колдонуу үчүн өтмөктү кайрадан жүктөңүз.</translation>
 <translation id="5190835502935405962">Кыстармалар тилкеси</translation>
 <translation id="5197255632782567636">Интернет</translation>
+<translation id="5210365745912300556">Өтмөктү жабуу</translation>
 <translation id="5228579091201413441">Шайкештирүүнү иштетүү</translation>
 <translation id="5234764350956374838">Этибарга албоо</translation>
 <translation id="5245322853195994030">Шайкештештирүүнү жокко чыгаруу</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Нерсе өчүрүлдү</translation>
 <translation id="6136914049981179737">Секнд мурн</translation>
 <translation id="6144589619057374135">${url} сайтын Жашыруун режимде ачуу</translation>
-<translation id="616831107264507309">Кийинчерээк окуу</translation>
 <translation id="6177442314419606057">Chrome'до издөө</translation>
 <translation id="6184086493125982861">Өтмөктөрдү көрсөтүү</translation>
 <translation id="6187302354554850004">Акркы жолу шайкешт: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Коопсуз серептөөнү күйгүзүү үчүн <ph name="BEGIN_LINK" />Google кызматтарын<ph name="END_LINK" /> ачып, Коопсуз серептөөнү таптаңыз.</translation>
 <translation id="6303969859164067831">Аккаунттан чыгып, шайкештирүүнү өчүрүү</translation>
 <translation id="6308436439357671616">Бул сүрөткө тартууга жана аларды жүктөп берүүгө жол ачат.</translation>
+<translation id="6321526113093607004">Кыстармаларга кошуу</translation>
 <translation id="6324528485781869530">Аккаунтту алмаштыруу</translation>
 <translation id="6324669097367352121">Жөндөөлөргө кирүү</translation>
 <translation id="6337234675334993532">Шифрлөө</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Жүктөлүп алынган жок</translation>
 <translation id="7859704718976024901">Серептөө таржымалы</translation>
 <translation id="7887198238286927132">Купуялыгыңызды коргоо максатында, Chrome бул талааны автоматтык түрдө толтурбайт.</translation>
-<translation id="7918293828610777738">Окуу тизмеңиз оффлайн режиминде да иштейт. Окуу тизмеңизге баракты кошуу үчүн <ph name="SHARE_OPENING_ICON" />, андан кийин <ph name="READ_LATER_TEXT" /> баскычын таптап коюңуз.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Сырсөздөрдү экспорттоо…</translation>
 <translation id="7947953824732555851">Кабыл алуу жана кирүү</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
index e0c8d3c..2a13965 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lo.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">ໝາຍ...</translation>
 <translation id="3131206671572504478">ບລັອກທັງໝົດ</translation>
 <translation id="3153862085237805241">ບັນທຶກບັດ</translation>
+<translation id="3157387275655328056">ເພີ່ມໃສ່ລາຍການທີ່ຈະອ່ານ</translation>
 <translation id="3157684681743766797">ໝາຍທັງໝົດ…</translation>
 <translation id="3161291298470460782">ນີ້ຈະນຳທ່ານອອກຈາກລະບົບ, ປິດການຊິ້ງຂໍ້ມູນ ແລະ ລຶບລ້າງຂໍ້ມູນ Chrome ອອກຈາກອຸປະກອນນີ້. ຂໍ້ມູນທີ່ຊິ້ງແລ້ວຂອງທ່ານຈະຍັງຄົງຢູ່ໃນບັນຊີ Google ຂອງທ່ານ.</translation>
 <translation id="3169472444629675720">ຄົ້ນຫາ</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">ການຕັ້ງຄ່າຄຸກກີ້ຂອງທ່ານນຳໃຊ້ກັບແຖບທັງໝົດ. ເພື່ອນຳໃຊ້ການຕັ້ງຄ່າໃໝ່ກັບແຖບເປີດ, ກະລຸນາໂຫຼດແຖບ.</translation>
 <translation id="5190835502935405962">ແຖບບຸກມາກສ໌</translation>
 <translation id="5197255632782567636">ອິນ​ເຕີ​ເນັດ</translation>
+<translation id="5210365745912300556">ປິດແຖບ</translation>
 <translation id="5228579091201413441">ເປີດໃຊ້ງານຊິງຄ໌</translation>
 <translation id="5234764350956374838">ປ່ອຍໄປ</translation>
 <translation id="5245322853195994030">ຍົກເລີກການຊິ້ງຂໍ້ມູນ</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">ລຶບລາຍການອອກແລ້ວ</translation>
 <translation id="6136914049981179737">ວິ​ນາ​ທີ​ກ່ອນ​​ນີ້</translation>
 <translation id="6144589619057374135">ເປີດ ${url} ໃນໂໝດທີ່ບໍ່ເປີດເຜີຍຕົວຕົນ</translation>
-<translation id="616831107264507309">ອ່ານໃນພາຍຫຼັງ</translation>
 <translation id="6177442314419606057">ຊອກຫາໃນ Chrome</translation>
 <translation id="6184086493125982861">ສະ​ແດງ​ແຖບ</translation>
 <translation id="6187302354554850004">ຊິ້ງຂໍ້ມູນຫຼ້າສຸດ: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">ເພື່ອເປີດ Safe Browsing, ກະລຸນາເປີດ <ph name="BEGIN_LINK" />ການບໍລິການ Google<ph name="END_LINK" /> ແລະ ແຕະ Safe Browsing.</translation>
 <translation id="6303969859164067831">ອອກຈາກລະບົບ ແລະ ປິດການຊິ້ງຂໍ້ມູນ</translation>
 <translation id="6308436439357671616">ນີ້ອະນຸຍາດໃຫ້ທ່ານຖ່າຍຮູບ ແລະ ອັບໂຫຼດຮູບຖ່າຍ.</translation>
+<translation id="6321526113093607004">ເພີ່ມໃສ່ບຸກມາກ</translation>
 <translation id="6324528485781869530">ປ່ຽນບັນຊີ Sync</translation>
 <translation id="6324669097367352121">ເຂົ້າ​ສູ່​ລະ​ບົບ​ການ​ຕັ້ງ​ຄ່າ</translation>
 <translation id="6337234675334993532">ການເຂົ້າລະຫັດ</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">ບໍ່ສາມາດດາວໂຫລດໄດ້</translation>
 <translation id="7859704718976024901">ປະຫວັດການທ່ອງເວັບ</translation>
 <translation id="7887198238286927132">ເພື່ອປົກປ້ອງຄວາມເປັນສ່ວນຕົວຂອງທ່ານ, Chrome ຈະບໍ່ຕື່ມຂໍ້ມູນໃສ່ຊ່ອງຂໍ້ມູນນີ້ໂດຍອັດຕະໂນມັດ.</translation>
-<translation id="7918293828610777738">ລາຍການທີ່ຈະອ່ານຂອງທ່ານສາມາດອ່ານໄດ້ແບບອອບລາຍ. ເພື່ອເພີ່ມໜ້າໃສ່ລາຍການທີ່ຈະອ່ານຂອງທ່ານ, ກະລຸນາແຕະ <ph name="SHARE_OPENING_ICON" /> ຈາກນັ້ນ <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">ສົ່ງລະຫັດຜ່ານອອກ...</translation>
 <translation id="7947953824732555851">ຍອມ​ຮັບ​ ແລະ​ລົງຊື່ເຂົ້າ​ໃຊ້</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lt.xtb b/ios/chrome/app/strings/resources/ios_strings_lt.xtb
index 0f2779c..4d216ef 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lt.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lt.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Pažymėti…</translation>
 <translation id="3131206671572504478">Blokuoti viską</translation>
 <translation id="3153862085237805241">Kortelės išsaugojimas</translation>
+<translation id="3157387275655328056">Pridėti prie skaitomų sąrašo</translation>
 <translation id="3157684681743766797">Pažymėti visus...</translation>
 <translation id="3161291298470460782">Būsite atjungti, bus išjungtas sinchronizavimas ir išvalyti visi „Chrome“ duomenys iš šio įrenginio. Sinchronizuojami duomenys liks „Google“ paskyroje.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Slapukų nustatymai taikomi visiems skirtukams. Norėdami taikyti naują nustatymą atidarytam skirtukui, įkelkite jį iš naujo.</translation>
 <translation id="5190835502935405962">Žymių juosta</translation>
 <translation id="5197255632782567636">Internetas</translation>
+<translation id="5210365745912300556">Uždaryti skirtuką</translation>
 <translation id="5228579091201413441">Įgalinti sinchronizavimą</translation>
 <translation id="5234764350956374838">Atsisakyti</translation>
 <translation id="5245322853195994030">Atšaukti sinchronizavimą</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Elementas pašalintas</translation>
 <translation id="6136914049981179737">Prieš sek.</translation>
 <translation id="6144589619057374135">Atidaryti ${url} inkognito režimu</translation>
-<translation id="616831107264507309">Skaityti vėliau</translation>
 <translation id="6177442314419606057">Paieška naršyklėje „Chrome“</translation>
 <translation id="6184086493125982861">Rodyti skirtukus</translation>
 <translation id="6187302354554850004">Pask. k. sinchr.: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Jei norite įjungti saugų naršymą, atidarykite skiltį <ph name="BEGIN_LINK" />„Google“ paslaugos“<ph name="END_LINK" /> ir palieskite „Saugus naršymas“.</translation>
 <translation id="6303969859164067831">Atsijungti ir išjungti sinchronizavimą</translation>
 <translation id="6308436439357671616">Taip galite fotografuoti ir įkelti nuotraukas.</translation>
+<translation id="6321526113093607004">Pridėti prie žymių</translation>
 <translation id="6324528485781869530">Sinchronizuojamos paskyros perjungimas</translation>
 <translation id="6324669097367352121">Prisijungimo nustat.</translation>
 <translation id="6337234675334993532">Šifruotė</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Nepavyko atsisiųsti</translation>
 <translation id="7859704718976024901">Naršymo istorija</translation>
 <translation id="7887198238286927132">Siekiant apsaugoti jūsų privatumą, „Chrome“ šio lauko automatiškai nepildys.</translation>
-<translation id="7918293828610777738">Skaitymo sąrašas pasiekiamas neprisijungus. Kad pridėtumėte puslapį prie skaitymo sąrašo, palieskite <ph name="SHARE_OPENING_ICON" />, tada „<ph name="READ_LATER_TEXT" />“.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Eksportuoti slaptažodžius...</translation>
 <translation id="7947953824732555851">Sutikti ir prisij.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lv.xtb b/ios/chrome/app/strings/resources/ios_strings_lv.xtb
index 5b28a47..c63dfebd 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lv.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lv.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Atzīmēt…</translation>
 <translation id="3131206671572504478">Bloķēt visus</translation>
 <translation id="3153862085237805241">Saglabāt karti</translation>
+<translation id="3157387275655328056">Pievienot lasīšanas sarakstam</translation>
 <translation id="3157684681743766797">Atzīmēt visus…</translation>
 <translation id="3161291298470460782">Tādējādi jūs tiksiet izrakstīts, tiks izslēgta sinhronizācija un no šīs ierīces tiks dzēsti visi Chrome dati. Jūsu sinhronizētie dati joprojām būs pieejami jūsu Google kontā.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Izvēlētais sīkfailu iestatījums attiecas uz visām cilnēm. Lai atvērtā cilnē lietotu jaunu iestatījumu, atkārtoti ielādējiet cilni.</translation>
 <translation id="5190835502935405962">Grāmatzīmju josla</translation>
 <translation id="5197255632782567636">Internets</translation>
+<translation id="5210365745912300556">Aizvērt cilni</translation>
 <translation id="5228579091201413441">Iespējot sinhronizāciju</translation>
 <translation id="5234764350956374838">Nerādīt</translation>
 <translation id="5245322853195994030">Atcelt sinhronizēšanu</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Vienums ir noņemts</translation>
 <translation id="6136914049981179737">Pirms sek.</translation>
 <translation id="6144589619057374135">Atvērt vietni ${url} inkognito režīmā</translation>
-<translation id="616831107264507309">Lasīt vēlāk</translation>
 <translation id="6177442314419606057">Meklēšana pārlūkā Chrome</translation>
 <translation id="6184086493125982861">Rādīt cilnes</translation>
 <translation id="6187302354554850004">Pēdējoreiz sinhr.: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Lai ieslēgtu drošo pārlūkošanu, atveriet sadaļu <ph name="BEGIN_LINK" />Google pakalpojumi<ph name="END_LINK" /> un pieskarieties vienumam Droša pārlūkošana.</translation>
 <translation id="6303969859164067831">Izrakstīties un izslēgt sinhronizēšanu</translation>
 <translation id="6308436439357671616">Varat uzņemt un augšupielādēt fotoattēlus.</translation>
+<translation id="6321526113093607004">Pievienot grāmatzīmēm</translation>
 <translation id="6324528485781869530">Sinhronizējamā konta pārslēgšana</translation>
 <translation id="6324669097367352121">Pierakst.iestatījumi</translation>
 <translation id="6337234675334993532">Šifrēšana</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Lejupielāde neizdevās</translation>
 <translation id="7859704718976024901">Pārlūkošanas vēsture</translation>
 <translation id="7887198238286927132">Lai aizsargātu jūsu konfidencialitāti, Chrome neveiks šī lauka automātisko aizpildi.</translation>
-<translation id="7918293828610777738">Jūsu lasīšanas saraksts ir pieejams bezsaistē. Lai pievienotu lapu lasīšanas sarakstam, pieskarieties vienumam <ph name="SHARE_OPENING_ICON" />, pēc tam — <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Eksportēt paroles...</translation>
 <translation id="7947953824732555851">Pieņemt un pierakst.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mk.xtb b/ios/chrome/app/strings/resources/ios_strings_mk.xtb
index f02ead7..17cc3828 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mk.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Означи…</translation>
 <translation id="3131206671572504478">Се блокираат сите</translation>
 <translation id="3153862085237805241">Зачувај ја картичката</translation>
+<translation id="3157387275655328056">Додај во „Списокот за читање“</translation>
 <translation id="3157684681743766797">Означи ги сите…</translation>
 <translation id="3161291298470460782">Со ова ќе се одјавите, ќе се исклучи синхронизацијата и сите податоци од Chrome ќе се избришат од уредов. Синхронизираните податоци ќе останат во вашата сметка на Google.</translation>
 <translation id="3169472444629675720">Откриј</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Поставката за колачиња се применува на сите картички. За да примените нова поставка на отворена картичка, вчитајте ја картичката повторно.</translation>
 <translation id="5190835502935405962">Лента со обележувачи</translation>
 <translation id="5197255632782567636">Интернет</translation>
+<translation id="5210365745912300556">Затвори ја картичката</translation>
 <translation id="5228579091201413441">Овозможи синхронизација</translation>
 <translation id="5234764350956374838">Отфрли</translation>
 <translation id="5245322853195994030">Откажи ја синхронизацијата</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Ставката е отстранета</translation>
 <translation id="6136914049981179737">Пред секунди</translation>
 <translation id="6144589619057374135">Отвори ${url} во „Инкогнито“</translation>
-<translation id="616831107264507309">Прочитајте подоцна</translation>
 <translation id="6177442314419606057">Пребарувајте во Chrome</translation>
 <translation id="6184086493125982861">Прикажи картички</translation>
 <translation id="6187302354554850004">Последна синхронизација: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">За да го вклучите „Безбедното прелистување“, отворете <ph name="BEGIN_LINK" />Услуги на Google<ph name="END_LINK" /> и допрете „Безбедно прелистување“.</translation>
 <translation id="6303969859164067831">Одјавете се и исклучете ја синхронизацијата</translation>
 <translation id="6308436439357671616">Ова ви овозможува да фотографирате и да поставувате фотографии.</translation>
+<translation id="6321526113093607004">Додај во „Обележувачи“</translation>
 <translation id="6324528485781869530">Префрли синхронизација на сметка</translation>
 <translation id="6324669097367352121">Поставки за најавување</translation>
 <translation id="6337234675334993532">Шифрирање</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Не може да се преземе</translation>
 <translation id="7859704718976024901">Историја на прелистувањето</translation>
 <translation id="7887198238286927132">За да ја заштити вашата приватност, Chrome нема автоматски да го пополнува ова поле.</translation>
-<translation id="7918293828610777738">„Списокот за читање“ е достапен офлајн. За да додадете страница во списокот за читање, допрете <ph name="SHARE_OPENING_ICON" />, а потоа <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Извезување лозинки…</translation>
 <translation id="7947953824732555851">Прифати и најави се</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
index b3881a4..38ac79b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ml.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">അടയാളപ്പെടുത്തുക…</translation>
 <translation id="3131206671572504478">എല്ലാം ബ്ലോക്ക് ചെയ്യുക</translation>
 <translation id="3153862085237805241">കാർഡ് സംരക്ഷിക്കുക</translation>
+<translation id="3157387275655328056">വായന ലിസ്റ്റിൽ ചേർക്കുക</translation>
 <translation id="3157684681743766797">എല്ലാം അടയാളപ്പെടുത്തുക…</translation>
 <translation id="3161291298470460782">ഇത് നിങ്ങളെ സൈൻ ഔട്ട് ആക്കുകയും സമന്വയിപ്പിക്കൽ ഓഫാക്കുകയും ചെയ്യും, ഒപ്പം ഉപകരണത്തിൽ നിന്ന് എല്ലാ Chrome ഡാറ്റയും മായ്ക്കും. നിങ്ങളുടെ സമന്വയിപ്പിച്ച ഡാറ്റ Google അക്കൗണ്ടിൽ നിലനിൽക്കും.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">നിങ്ങളുടെ കുക്കികളുടെ ക്രമീകരണം എല്ലാ ടാബുകൾക്കും ബാധകമാണ്. തുറന്നിരിക്കുന്ന ടാബിൽ ഒരു പുതിയ ക്രമീകരണം ബാധകമാക്കാൻ, ടാബ് റീലോഡ് ചെയ്യുക.</translation>
 <translation id="5190835502935405962">ബുക്ക്‌മാര്‍‌ക്ക് ബാര്‍‌</translation>
 <translation id="5197255632782567636">ഇന്‍റര്‍നെറ്റ്</translation>
+<translation id="5210365745912300556">ടാബ് അടയ്ക്കൂക</translation>
 <translation id="5228579091201413441">സമന്വയം പ്രവർത്തനക്ഷമമാക്കുക</translation>
 <translation id="5234764350956374838">ഡിസ്മിസ്സ് ചെയ്യുക</translation>
 <translation id="5245322853195994030">സമന്വയം റദ്ദാക്കുക</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">ഇനം നീക്കംചെയ്‌തു</translation>
 <translation id="6136914049981179737">സെക്കൻഡ് മുമ്പ്</translation>
 <translation id="6144589619057374135">${url} അദൃശ്യ മോഡിൽ തുറക്കുക</translation>
-<translation id="616831107264507309">പിന്നീട് വായിക്കുക</translation>
 <translation id="6177442314419606057">Chrome-ൽ തിരയുക</translation>
 <translation id="6184086493125982861">ടാബുകൾ കാണിക്കുക</translation>
 <translation id="6187302354554850004">അവസാനം സമന്വയിപ്പിച്ചത്: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">സുരക്ഷിത ബ്രൗസിംഗ് ഓണാക്കാൻ, <ph name="BEGIN_LINK" />Google സേവനങ്ങൾ<ph name="END_LINK" /> തുറന്ന് സുരക്ഷിത ബ്രൗസിംഗ് ടാപ്പ് ചെയ്യുക.</translation>
 <translation id="6303969859164067831">സൈൻ ഔട്ട് ചെയ്‌ത് സമന്വയം ഓഫാക്കുക</translation>
 <translation id="6308436439357671616">ഫോട്ടോകളെടുത്ത് അപ്‌ലോഡ് ചെയ്യാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു.</translation>
+<translation id="6321526113093607004">ബുക്ക്‌മാർക്കുകളിൽ ചേർക്കുക</translation>
 <translation id="6324528485781869530">സമന്വയ അക്കൗണ്ട് മാറുക</translation>
 <translation id="6324669097367352121">സൈൻ ഇൻ ക്രമീകരണങ്ങൾ</translation>
 <translation id="6337234675334993532">എന്‍ക്രിപ്ഷന്‍</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">ഡൗൺലോഡ് ചെയ്യാനായില്ല</translation>
 <translation id="7859704718976024901">ബ്രൗസിംഗ് ചരിത്രം</translation>
 <translation id="7887198238286927132">നിങ്ങളുടെ സ്വകാര്യത പരിരക്ഷിക്കാൻ, Chrome ഈ ഫീൽഡ് സ്വമേധയാ പൂരിപ്പിക്കില്ല.</translation>
-<translation id="7918293828610777738">നിങ്ങളുടെ വായനാ ലിസ്‌റ്റ് ഓഫ്‌ലൈനായി ലഭ്യമാണ്. വായനാ ലിസ്‌റ്റിലേക്ക് ഒരു പേജ് ചേർക്കാൻ, ആദ്യം <ph name="SHARE_OPENING_ICON" />, തുടർന്ന് <ph name="READ_LATER_TEXT" /> എന്നിവ ടാപ്പ് ചെയ്യുക.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">പാസ്‌വേഡുകൾ എക്‌സ്‌പോർട്ട് ചെയ്യുക...</translation>
 <translation id="7947953824732555851">അംഗീകരിച്ച് സൈൻ ഇൻ ചെയ്യുക</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mn.xtb b/ios/chrome/app/strings/resources/ios_strings_mn.xtb
index 2fa0d191..5bb18ad 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mn.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Тэмдэглэх...</translation>
 <translation id="3131206671572504478">Бүх күүкийг блоклосон</translation>
 <translation id="3153862085237805241">Картыг хадгалах</translation>
+<translation id="3157387275655328056">Унших жагсаалтад нэмэх</translation>
 <translation id="3157684681743766797">Бүгдийг тэмдэглэх...</translation>
 <translation id="3161291298470460782">Ингэснээр таныг гаргаж, синк хийхийг унтраах бөгөөд Chrome-н бүх өгөгдлийг энэ төхөөрөмжөөс устгана. Таны cинк хийсэн өгөгдөл Google Бүртгэлд тань үлдэнэ.</translation>
 <translation id="3169472444629675720">Олох</translation>
@@ -398,6 +399,7 @@
 <translation id="5188482106078495165">Таны күүкиний тохиргоо бүх табд хэрэгжинэ. Шинэ тохиргоог нээлттэй табд хэрэгжүүлэхийн тулд табыг дахин ачаална уу.</translation>
 <translation id="5190835502935405962">Хайлтын жагсаалтын цонх</translation>
 <translation id="5197255632782567636">Интернэт</translation>
+<translation id="5210365745912300556">Цонхыг хаа</translation>
 <translation id="5228579091201413441">Синхроныг идэвхжүүлэх</translation>
 <translation id="5234764350956374838">Хэрэгсэхгүй болго</translation>
 <translation id="5245322853195994030">Синкийг цуцлах</translation>
@@ -485,7 +487,6 @@
 <translation id="6127379762771434464">Хамгийн их зочилсон вэбсайтуудыг устгасан</translation>
 <translation id="6136914049981179737">Секунтын өмнө</translation>
 <translation id="6144589619057374135">${url}-г Нууцлалтай горимд нээх</translation>
-<translation id="616831107264507309">Дараа унших</translation>
 <translation id="6177442314419606057">Chrome-с хайх</translation>
 <translation id="6184086493125982861">Цонхнуудыг харуул</translation>
 <translation id="6187302354554850004">Хамгийн сүүлд синк хийсэн: <ph name="LAST_USED_TIME" /></translation>
@@ -500,6 +501,7 @@
 <translation id="6293101329759844770">Аюулгүй үзэлтийг асаахын тулд <ph name="BEGIN_LINK" />Google-н үйлчилгээнүүдийг<ph name="END_LINK" /> нээж, Аюулгүй үзэлт дээр товшино уу.</translation>
 <translation id="6303969859164067831">Гараад синк хийхийг унтраах</translation>
 <translation id="6308436439357671616">Энэ нь танд зураг авах, байршуулах боломжийг олгодог.</translation>
+<translation id="6321526113093607004">Хавчуургaд нэмэх</translation>
 <translation id="6324528485781869530">Синклэх бүртгэлийг солих</translation>
 <translation id="6324669097367352121">Нэвтрэх тохиргоонууд</translation>
 <translation id="6337234675334993532">Шифрлэх</translation>
@@ -671,7 +673,6 @@
 <translation id="7856733331829174190">Татаж чадсангүй</translation>
 <translation id="7859704718976024901">Хайлтын түүх</translation>
 <translation id="7887198238286927132">Таны нууцлалыг хамгаалахын тулд Chrome энэ талбарыг автоматаар бөглөхгүй.</translation>
-<translation id="7918293828610777738">Таны унших жагсаалт офлайнаар боломжтой байна. Унших жагсаалтдаа хуудас нэмэхийн тулд <ph name="SHARE_OPENING_ICON" />-г, дараа нь <ph name="READ_LATER_TEXT" />-г товшино уу.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Нууц үгийг экспортлох...</translation>
 <translation id="7947953824732555851">Хүлээн зөвшөөрсний дараагаар нэвтрэх</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
index 714398a8..b7306428 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">चिन्हांकित करा…</translation>
 <translation id="3131206671572504478">सर्व ब्लॉक करा</translation>
 <translation id="3153862085237805241">कार्ड सेव्ह करा</translation>
+<translation id="3157387275655328056">वाचन सूचीमध्ये जोडा</translation>
 <translation id="3157684681743766797">सर्व चिन्हांकित करा…</translation>
 <translation id="3161291298470460782">हे या डिव्हाइसमधून तुम्हाला साइन आउट करेल, सिंक बंद करेल आणि सर्व Chrome डेटा साफ करेल. तुमचा सिंक केलेला डेटा तुमचे Google खाते यामध्ये राहील.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -400,6 +401,7 @@
 <translation id="5188482106078495165">तुमची कुकी सेटिंग्ज सर्व टॅबना लागू होतात. उघड्या टॅबवर नवीन सेटिंग लागू करण्यासाठी, टॅब रीलोड करा.</translation>
 <translation id="5190835502935405962">बुकमार्क बार</translation>
 <translation id="5197255632782567636">इंटरनेट</translation>
+<translation id="5210365745912300556">टॅब बंद करा</translation>
 <translation id="5228579091201413441">सिंक सुरू करा</translation>
 <translation id="5234764350956374838">डिसमिस करा</translation>
 <translation id="5245322853195994030">सिंक रद्द करा</translation>
@@ -447,6 +449,7 @@
 <translation id="5782227691023083829">भाषांतर करीत आहे...</translation>
 <translation id="5803566855766646066">तुम्हाला हे नवीन कार्ड नक्की काढून टाकायचे आहे का?</translation>
 <translation id="5816228676161003208">हे तुम्हाला तुमचा व्‍हॉइस वापरून अधिक जलद शोधू देते.</translation>
+<translation id="581659025233126501">सिंक सुरू करा</translation>
 <translation id="5819208479324046259"><ph name="MANAGER" /> ने व्यवस्थापित केलेले. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation>
 <translation id="5846482154967366008">शोध इंजीन</translation>
 <translation id="5854790677617711513">30 दिवसांपेक्षा जुना</translation>
@@ -486,7 +489,6 @@
 <translation id="6127379762771434464">आयटम काढला</translation>
 <translation id="6136914049981179737">सेकंदांपूर्वी</translation>
 <translation id="6144589619057374135">${url} गुप्त मोडमध्ये उघडा</translation>
-<translation id="616831107264507309">नंतर वाचा</translation>
 <translation id="6177442314419606057">Chrome मध्ये शोधा</translation>
 <translation id="6184086493125982861">टॅब दर्शवा</translation>
 <translation id="6187302354554850004">अखेरचे संंकालित: <ph name="LAST_USED_TIME" /></translation>
@@ -494,6 +496,7 @@
 <translation id="6196207969502475924">व्हॉइस शोध</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} टॅब बंद करा}other{{COUNT} टॅब बंद करा}}</translation>
 <translation id="6219688215832490856">कधीही भाषांतर करू नका</translation>
+<translation id="6223816392543092032">तुमच्या सर्व डिव्हाइसवर तुमचे बुकमार्क, इतिहास, पासवर्ड आणि इतर सेटिंग्ज मिळवा.</translation>
 <translation id="6254066287920239840">ब्राउझर ऐवजी ॲपमध्ये लिंक उघडा.</translation>
 <translation id="6255097610484507482">क्रेडिट कार्ड संपादित करा</translation>
 <translation id="6284652193729350524"><ph name="LANGUAGE" /> भाषांतरित करण्यासाठी ऑफर</translation>
@@ -501,6 +504,7 @@
 करा.</translation>
 <translation id="6303969859164067831">साइन आउट करा आणि सिंक बंद करा</translation>
 <translation id="6308436439357671616">हे तुम्हाला फोटो घेऊ आणि अपलोड करू देते.</translation>
+<translation id="6321526113093607004">बुकमार्क मध्ये जोडा</translation>
 <translation id="6324528485781869530">सिंक खाते स्विच करा</translation>
 <translation id="6324669097367352121">साइन इन सेटिंग्ज</translation>
 <translation id="6337234675334993532">एंक्रिप्शन</translation>
@@ -527,6 +531,7 @@
 <translation id="6445981559479772097">संदेश पाठविला.</translation>
 <translation id="6447842834002726250">कुकीज</translation>
 <translation id="6453018583485750254">तपासणी कधीही रन केली गेली नाही.</translation>
+<translation id="6459307836338400162">गोपनीयता, सुरक्षा आणि डेटा संग्रह यांच्याशी संबंधित आणखी सेटिंग्जसाठी, <ph name="BEGIN_LINK" />सिंक<ph name="END_LINK" /> व <ph name="BEGIN_LINK" />Google सेवा<ph name="END_LINK" /> हे दोन्ही पहा.</translation>
 <translation id="6464071786529933911">नवीन गुप्त टॅबमध्ये उघडा</translation>
 <translation id="6464397691496239022">तुमच्या ब्राउझिंग अनुभवात सुधारणा करण्यासाठी, उदाहरणार्थ, तुम्हाला साइन इन केलेले ठेवण्यासाठी किंवा तुमच्या शॉपिंग कार्टमधील आयटम लक्षात ठेवण्यासाठी साइट कुकी वापरू शकतात.
 
@@ -671,7 +676,6 @@
 <translation id="7856733331829174190">डाउनलोड करता आले नाही</translation>
 <translation id="7859704718976024901">ब्राउझिंग इतिहास</translation>
 <translation id="7887198238286927132">तुमच्या गोपनीयतेचे संरक्षण करण्‍यासाठी, Chrome हा भाग ऑटोफिल करणार नाही.</translation>
-<translation id="7918293828610777738">तुमची वाचन सूची ऑफलाइन उपलब्ध आहे. तुमच्या वाचन सूचीमध्‍ये पेज जोडण्‍यासाठी, <ph name="SHARE_OPENING_ICON" /> त्यानंतर <ph name="READ_LATER_TEXT" /> वर टॅप करा.</translation>
 <translation id="7938254975914653459">फेसटाइम</translation>
 <translation id="7939128259257418052">पासवर्ड एक्सपोर्ट करा...</translation>
 <translation id="7947953824732555851">स्वीकार करा आणि साइन इन करा</translation>
@@ -710,6 +714,7 @@
 <translation id="8281886186245836920">वगळा</translation>
 <translation id="8283172974887967105">सेट करा…</translation>
 <translation id="8299417921174340354">पासवर्ड वापरण्यासाठी, तुम्ही आधी तुमच्या डिव्हाइसवर पासकोड सेट करणे आवश्यक आहे.</translation>
+<translation id="83100941411593607">साइन-इन बंद केले आहे</translation>
 <translation id="8319076807703933069">नवीन शोध</translation>
 <translation id="8323906514956095947">आणखी टॅब पर्यायांसाठी स्पर्श करा आणि धरून ठेवा</translation>
 <translation id="8328777765163860529">सर्व बंद करा</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
index 5a85d0c..a423f9f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ms.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Tandakan...</translation>
 <translation id="3131206671572504478">Sekat Semua</translation>
 <translation id="3153862085237805241">Simpan Kad</translation>
+<translation id="3157387275655328056">Tambahkan pada Senarai Bacaan</translation>
 <translation id="3157684681743766797">Tandakan Semua...</translation>
 <translation id="3161291298470460782">Tindakan ini akan membuatkan anda dilog keluar, mematikan penyegerakan dan mengosongkan semua data Chrome daripada peranti ini. Data anda yang disegerakkan akan kekal disimpan dalam Akaun Google anda.</translation>
 <translation id="3169472444629675720">Temui</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Tetapan kuki anda digunakan pada semua tab. Untuk menggunakan tetapan baharu pada tab yang terbuka, muat semula tab itu.</translation>
 <translation id="5190835502935405962">Bar Penanda Halaman</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Tutup tab</translation>
 <translation id="5228579091201413441">Dayakan penyegerakan</translation>
 <translation id="5234764350956374838">Ketepikan</translation>
 <translation id="5245322853195994030">Batalkan Penyegerakan</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Item dialih keluar</translation>
 <translation id="6136914049981179737">Bbrp saat lalu</translation>
 <translation id="6144589619057374135">Buka ${url} dalam Inkognito</translation>
-<translation id="616831107264507309">Baca Kemudian</translation>
 <translation id="6177442314419606057">Cari dalam Chrome</translation>
 <translation id="6184086493125982861">Paparkan Tab</translation>
 <translation id="6187302354554850004">Terakhir disgrkkan: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Untuk menghidupkan Penyemakan Imbas Selamat, buka <ph name="BEGIN_LINK" />Perkhidmatan Google<ph name="END_LINK" /> dan ketik Penyemakan Imbas Selamat.</translation>
 <translation id="6303969859164067831">Log keluar dan matikan penyegerakan</translation>
 <translation id="6308436439357671616">Langkah ini membolehkan anda mengambil dan memuat naik foto.</translation>
+<translation id="6321526113093607004">Tambahkan pada Penanda Halaman</translation>
 <translation id="6324528485781869530">Tukar Akaun Segerak</translation>
 <translation id="6324669097367352121">Tetapan log masuk</translation>
 <translation id="6337234675334993532">Penyulitan</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Tidak Dapat Memuat Turun</translation>
 <translation id="7859704718976024901">Sejarah Penyemakan Imbas</translation>
 <translation id="7887198238286927132">Untuk melindungi privasi anda, Chrome tidak akan mengisi medan ini secara automatik.</translation>
-<translation id="7918293828610777738">Senarai bacaan anda tersedia di luar talian. Untuk menambahkan halaman pada senarai bacaan anda, ketik  <ph name="SHARE_OPENING_ICON" /> kemudian <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Eksport Kata Laluan...</translation>
 <translation id="7947953824732555851">Terima dan log masuk</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_my.xtb b/ios/chrome/app/strings/resources/ios_strings_my.xtb
index 1f1f964..7400871 100644
--- a/ios/chrome/app/strings/resources/ios_strings_my.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_my.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">အမှတ်အသားလုပ်ရန်…</translation>
 <translation id="3131206671572504478">အားလုံးကို ပိတ်ရန်</translation>
 <translation id="3153862085237805241">ကတ်ကို သိမ်းရန်</translation>
+<translation id="3157387275655328056">ဖတ်ရန်စာရင်းသို့ ထည့်ပါ</translation>
 <translation id="3157684681743766797">အားလုံးကို အမှတ်အသားလုပ်ရန်…</translation>
 <translation id="3161291298470460782">ယခုလုပ်ဆောင်ချက်က သင့်အကောင့်မှထွက်သွားပြီး စင့်ခ်လုပ်ခြင်းကို ပိတ်လိုက်မည်၊ ထို့နောက် ဤစက်မှ Chrome ဒေတာအားလုံး ဖယ်ရှားလိုက်ပါမည်။ သင်စင့်ခ်လုပ်ထားသော ဒေတာများ သင်၏ Google Account တွင် ကျန်နေပါမည်။</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">သင့်ကွတ်ကီးများဆက်တင်က တဘ်အားလုံးသို့ သက်ရောက်ပါသည်။ ဖွင့်ထားသောတဘ်သို့ ဆက်တင်အသစ်ထည့်သွင်းရန် တဘ်ကိုပြန်စတင်ပါ။</translation>
 <translation id="5190835502935405962">စာညှပ် ဘား</translation>
 <translation id="5197255632782567636">အင်တာနက်</translation>
+<translation id="5210365745912300556">တဘ် ပိတ်ရန်</translation>
 <translation id="5228579091201413441">စင့်က် ဖွင့်ထားရန်</translation>
 <translation id="5234764350956374838">ပယ်ရန်</translation>
 <translation id="5245322853195994030">စင့်ခ်လုပ်ခြင်း ပယ်ဖျက်ရန်</translation>
@@ -485,7 +487,6 @@
 <translation id="6127379762771434464">အကြောင်းအရာကို ဖယ်ရှားလိုက်ပါပြီ</translation>
 <translation id="6136914049981179737">ပြီးခဲ့သော စက္ကန့်</translation>
 <translation id="6144589619057374135">ရုပ်ဖျက်မုဒ်တွင် ${url} ဖွင့်ရန်</translation>
-<translation id="616831107264507309">နောက်မှဖတ်ရန်</translation>
 <translation id="6177442314419606057">Chrome တွင် ရှာဖွေရန်</translation>
 <translation id="6184086493125982861">တဲဘ်များ ပြမည်</translation>
 <translation id="6187302354554850004">နောက်ဆုံး ထပ်တူပြုခြင်း: <ph name="LAST_USED_TIME" /></translation>
@@ -500,6 +501,7 @@
 <translation id="6293101329759844770">'လုံခြုံစွာ ဖွင့်ကြည့်ခြင်း' ကိုဖွင့်ရန် <ph name="BEGIN_LINK" />Google ဝန်ဆောင်မှုများ<ph name="END_LINK" /> တွင် 'လုံခြုံစွာ ဖွင့်ကြည့်ခြင်း' ကို တို့ပါ။</translation>
 <translation id="6303969859164067831">ထွက်ပြီးနောက် စင့်ခ်လုပ်ခြင်းကို ပိတ်ပါ</translation>
 <translation id="6308436439357671616">၎င်းသည် ဓာတ်ပုံရိုက်ရန်နှင့် အပ်လုဒ်လုပ်ရန် ခွင့်ပြုပါသည်။</translation>
+<translation id="6321526113093607004">လိပ်စာများသို့ ထည့်ရန်</translation>
 <translation id="6324528485781869530">စင့်ခ်အကောင့်ကို ပြောင်းလဲခြင်း</translation>
 <translation id="6324669097367352121">လက်မှတ်ထိုးဝင်ရောက်ခြင်း ဆက်တင်များ</translation>
 <translation id="6337234675334993532">လျှို့ဝှက်ကုဒ်သွင်းခြင်း</translation>
@@ -671,7 +673,6 @@
 <translation id="7856733331829174190">ဒေါင်းလုဒ် လုပ်၍မရပါ</translation>
 <translation id="7859704718976024901">ရှာဖွေမှု မှတ်တမ်း</translation>
 <translation id="7887198238286927132">သင်၏ ပုဂ္ဂိုလ်ရေးကို ကာကွယ်ရန် Chrome သည် ဤအကွက်တွင် အော်တိုဖြည့်မည် မဟုတ်ပါ။</translation>
-<translation id="7918293828610777738">သင်၏ ဖတ်ရန်စာရင်းကို အော့ဖ်လိုင်းတွင် ရနိုင်ပါသည်။ ဖတ်ရန်စာရင်းသို့ စာမျက်နှာတစ်ခုထည့်ရန် <ph name="SHARE_OPENING_ICON" /> ကို တို့ပြီး <ph name="READ_LATER_TEXT" /> ကို တို့ပါ။</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">စကားဝှက်များကို တင်ပို့ခြင်း…</translation>
 <translation id="7947953824732555851">လက်ခံကာ ဝင်ရောက်မည်</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
index 28cfce02..aa80e42 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ne.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">चिन्ह लगाउनुहोस्…</translation>
 <translation id="3131206671572504478">सबै ब्लक गर्नुहोस्</translation>
 <translation id="3153862085237805241">कार्ड सेभ गर्नुहोस्</translation>
+<translation id="3157387275655328056">पाठ्य सूचीमा थप्नुहोस्</translation>
 <translation id="3157684681743766797">सबैलाई चिन्ह लगाउनुहोस्…</translation>
 <translation id="3161291298470460782">यस कार्यले तपाईंलाई साइन आउट गराउने छ, सिंक गर्ने सुविधा निष्क्रिय पार्ने छ र यो यन्त्रबाट Chrome का सबै डेटा मेटाउने छ। सिंक भएको तपाईंको डेटा तपाईंको Google खातामा रहिरहने छ।</translation>
 <translation id="3169472444629675720">पत्ता लगाउनुहोस्</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">तपाईंको कुकीसम्बन्धी सेटिङ सबै ट्याबमा लागू हुन्छ। कुनै खुला रहेको ट्याबमा नयाँ सेटिङ लागू गर्न उक्त ट्याब पुनः लोड गर्नुहोस्।</translation>
 <translation id="5190835502935405962">पृष्ठमञ्जूषा पट्टी</translation>
 <translation id="5197255632782567636">इन्टरनेट</translation>
+<translation id="5210365745912300556">ट्याब बन्द गर्नुहोस्</translation>
 <translation id="5228579091201413441">सिंकलाई सक्रिय गर्नुहोस्</translation>
 <translation id="5234764350956374838">खारेज गर्नुहोस्</translation>
 <translation id="5245322853195994030">सिंक गर्ने कार्य रद्द गर्नुहोस्</translation>
@@ -485,7 +487,6 @@
 <translation id="6127379762771434464">वस्तुलाई हटाइयो</translation>
 <translation id="6136914049981179737">सेकेन्ड अघि</translation>
 <translation id="6144589619057374135">${url} इन्कोग्निटो मोडमा खोल्नुहोस्</translation>
-<translation id="616831107264507309">पछि पढ्नुुहोस्</translation>
 <translation id="6177442314419606057">Chrome मा खोज्नुहोस्</translation>
 <translation id="6184086493125982861">ट्याबहरू देखाउनुहोस्</translation>
 <translation id="6187302354554850004">पछिल्लोपटक सिंक भएको: <ph name="LAST_USED_TIME" /></translation>
@@ -499,6 +500,7 @@
 <translation id="6293101329759844770">Safe Browsing अन गर्न <ph name="BEGIN_LINK" />Google का सेवाहरू<ph name="END_LINK" /> खोल्नुहोस् र Safe Browsing मा ट्याप गर्नुहोस्।</translation>
 <translation id="6303969859164067831">साइन आउट गरी सिंक प्रक्रिया निष्क्रिय पार्नुहोस्</translation>
 <translation id="6308436439357671616">यसले तपाईँलाई तस्बिरहरू लिन र अपलोड गर्न दिन्छ।</translation>
+<translation id="6321526113093607004">'बुकमार्कहरू' मा हाल्नुहोस्</translation>
 <translation id="6324528485781869530">सिंक गरिने खाता बदल्नुहोस्</translation>
 <translation id="6324669097367352121">सेटिङहरूमा साइन इन गर्नुहोस्</translation>
 <translation id="6337234675334993532">इन्क्रिप्सन</translation>
@@ -669,7 +671,6 @@
 <translation id="7856733331829174190">डाउनलोड गर्न सकिएन</translation>
 <translation id="7859704718976024901">ब्राउजिङ इतिहास</translation>
 <translation id="7887198238286927132">तपाईंको गोपनीयताको सुरक्षा गर्न Chrome ले यो फिल्ड स्वतः भर्ने छैन।</translation>
-<translation id="7918293828610777738">तपाईंको पाठ्य सूची अफलाइन उपलब्ध छ। आफ्नो पाठ्य सूचीमा कुनै पृष्ठ थप्न पहिला <ph name="SHARE_OPENING_ICON" /> र त्यसपछि <ph name="READ_LATER_TEXT" /> मा ट्याप गर्नुहोस्।</translation>
 <translation id="7938254975914653459">फेसटाइम</translation>
 <translation id="7939128259257418052">पासवर्ड निर्यात गर्नु…</translation>
 <translation id="7947953824732555851">स्वीकार र साइन इन गर्नुहोस्</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
index 7158d4c..4bda0ae 100644
--- a/ios/chrome/app/strings/resources/ios_strings_nl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Markeren…</translation>
 <translation id="3131206671572504478">Alles blokkeren</translation>
 <translation id="3153862085237805241">Pas opslaan</translation>
+<translation id="3157387275655328056">Toevoegen aan leeslijst</translation>
 <translation id="3157684681743766797">Alles markeren…</translation>
 <translation id="3161291298470460782">Hiermee word je uitgelogd en wordt de synchronisatie stopgezet. Ook worden alle Chrome-gegevens van dit apparaat gewist. Je gesynchroniseerde gegevens blijven in je Google-account staan.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Je cookie-instellingen zijn van toepassing op alle tabbladen. Als je een nieuwe instelling wilt toepassen op een geopend tabblad, laad je het tabblad opnieuw.</translation>
 <translation id="5190835502935405962">Bookmarkbalk</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Tabblad sluiten</translation>
 <translation id="5228579091201413441">Synchronisatie aanzetten</translation>
 <translation id="5234764350956374838">Sluiten</translation>
 <translation id="5245322853195994030">Synchronisatie annuleren</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Item verwijderd</translation>
 <translation id="6136914049981179737">Sec. geleden</translation>
 <translation id="6144589619057374135">${url} openen in de incognitomodus</translation>
-<translation id="616831107264507309">Later lezen</translation>
 <translation id="6177442314419606057">Zoeken in Chrome</translation>
 <translation id="6184086493125982861">Tabbladen tonen</translation>
 <translation id="6187302354554850004">Laatst gesynchroniseerd: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Als je Safe Browsing wilt gebruiken, open je <ph name="BEGIN_LINK" />Google-services<ph name="END_LINK" /> en tik je op Safe Browsing.</translation>
 <translation id="6303969859164067831">Uitloggen en synchronisatie uitzetten</translation>
 <translation id="6308436439357671616">Hiermee kun je foto's maken en uploaden.</translation>
+<translation id="6321526113093607004">Toevoegen aan bookmarks</translation>
 <translation id="6324528485781869530">Synchronisatieaccount wisselen</translation>
 <translation id="6324669097367352121">Inloginstellingen</translation>
 <translation id="6337234675334993532">Versleuteling</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Kan niet downloaden</translation>
 <translation id="7859704718976024901">Browsegeschiedenis</translation>
 <translation id="7887198238286927132">Ter bescherming van je privacy wordt dit veld niet automatisch ingevuld door Chrome.</translation>
-<translation id="7918293828610777738">Je leeslijst is offline beschikbaar. Tik op <ph name="SHARE_OPENING_ICON" /> en vervolgens op <ph name="READ_LATER_TEXT" /> om een pagina toe te voegen aan je leeslijst.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Wachtwoorden exporteren...</translation>
 <translation id="7947953824732555851">Accepteren en inloggen</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_no.xtb b/ios/chrome/app/strings/resources/ios_strings_no.xtb
index 45d3bee..c41cb24 100644
--- a/ios/chrome/app/strings/resources/ios_strings_no.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_no.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Merk…</translation>
 <translation id="3131206671572504478">Blokkér alle</translation>
 <translation id="3153862085237805241">Lagre kortet</translation>
+<translation id="3157387275655328056">Legg til i leselisten</translation>
 <translation id="3157684681743766797">Merk alle…</translation>
 <translation id="3161291298470460782">Dette medfører at du blir logget av, synkronisering blir slått av og alle Chrome-data blir slettet fra denne enheten. Du beholder de synkroniserte dataene i Google-kontoen din.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Innstillingen for informasjonskapsler gjelder for alle faner. For å ta i bruk en ny innstilling på en åpen fane, last inn fanen på nytt.</translation>
 <translation id="5190835502935405962">Bokmerkerad</translation>
 <translation id="5197255632782567636">Internett</translation>
+<translation id="5210365745912300556">Lukk fanen</translation>
 <translation id="5228579091201413441">Slå på synkronisering</translation>
 <translation id="5234764350956374838">Lukk</translation>
 <translation id="5245322853195994030">Avbryt synkronisering</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Elementet er fjernet</translation>
 <translation id="6136914049981179737">For noen sekunder siden</translation>
 <translation id="6144589619057374135">Åpne ${url} i inkognitomodus</translation>
-<translation id="616831107264507309">Les senere</translation>
 <translation id="6177442314419606057">Søk i Chrome</translation>
 <translation id="6184086493125982861">Vis faner</translation>
 <translation id="6187302354554850004">Sist synkronisert: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">For å slå på Safe Browsing, åpne <ph name="BEGIN_LINK" />Google-tjenester<ph name="END_LINK" /> og trykk på Safe Browsing.</translation>
 <translation id="6303969859164067831">Logg av og slå av synkronisering</translation>
 <translation id="6308436439357671616">Dette gjør at du kan ta og laste opp bilder.</translation>
+<translation id="6321526113093607004">Legg til i bokmerker</translation>
 <translation id="6324528485781869530">Bytt synkroniseringskonto</translation>
 <translation id="6324669097367352121">Påloggingsinnstillinger</translation>
 <translation id="6337234675334993532">Kryptering</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Kunne ikke laste ned</translation>
 <translation id="7859704718976024901">Nettleserlogg</translation>
 <translation id="7887198238286927132">For å beskytte personvernet ditt fyller ikke Chrome automatisk ut dette feltet.</translation>
-<translation id="7918293828610777738">Leselisten din er tilgjengelig uten nett. Du kan legge til sider i leselisten ved å trykke på <ph name="SHARE_OPENING_ICON" /> og deretter <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Eksportér passord</translation>
 <translation id="7947953824732555851">Godta og logg på</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_or.xtb b/ios/chrome/app/strings/resources/ios_strings_or.xtb
index d42a4d5..b8ecd7d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_or.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_or.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">ଟିହ୍ନଟ କରନ୍ତୁ…</translation>
 <translation id="3131206671572504478">ସବୁ ବ୍ଲକ୍ କରନ୍ତୁ</translation>
 <translation id="3153862085237805241">କାର୍ଡ ସେଭ୍ କରନ୍ତୁ</translation>
+<translation id="3157387275655328056">ପଢ଼ିବା ତାଲିକାରେ ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="3157684681743766797">ସବୁ ଚିହ୍ନଟ କରନ୍ତୁ…</translation>
 <translation id="3161291298470460782">ଏହା ଆପଣଙ୍କୁ ସାଇନ୍ ଆଉଟ୍ କରିଦେବ, ସିଙ୍କକୁ ବନ୍ଦ କରିଦେବ ଏବଂ ଏହି ଡିଭାଇସରୁ ସମସ୍ତ Chrome ଡାଟା ଖାଲି କରିଦେବ। ଆପଣଙ୍କର ସିଙ୍କ୍ କରାଯାଇଥିବା ଡାଟା ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ ରହିବ।</translation>
 <translation id="3169472444629675720">ଖୋଜି ପାଆନ୍ତୁ</translation>
@@ -397,6 +398,7 @@
 <translation id="5188482106078495165">ଆପଣଙ୍କ କୁକୀ ସେଟିଂ ସମସ୍ତ ଟାବରେ ଲାଗୁ ହୋଇଥାଏ। ଏକ ଖୋଲା ଟାବରେ ଏକ ନୂଆ ସେଟିଂ ଲାଗୁ କରିବାକୁ, ଟାବକୁ ପୁଣି ଲୋଡ୍ କରନ୍ତୁ।</translation>
 <translation id="5190835502935405962">ବୁକମାର୍କ ବାର୍</translation>
 <translation id="5197255632782567636">ଇଣ୍ଟର୍ନେଟ୍‍</translation>
+<translation id="5210365745912300556">ଟ୍ୟାବ୍ ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="5228579091201413441">ସିଙ୍କ୍‌ ସକ୍ଷମ କରନ୍ତୁ</translation>
 <translation id="5234764350956374838">ଖାରଜ କରନ୍ତୁ</translation>
 <translation id="5245322853195994030">ସିଙ୍କ୍ ବାତିଲ୍ କରନ୍ତୁ</translation>
@@ -444,6 +446,7 @@
 <translation id="5782227691023083829">ଅନୁବାଦ ହେଉଛି...</translation>
 <translation id="5803566855766646066">ଆପଣ ଏହି ନୂଆ କାର୍ଡକୁ ଖାରଜ କରିବାକୁ ଚାହୁଁଥିବା ନିଶ୍ଚିତ କି?</translation>
 <translation id="5816228676161003208">ଏହା ଆପଣଙ୍କର ଭଏସ୍‌କୁ ବ୍ୟବହାର କରି ଆପଣଙ୍କୁ ଦ୍ରୁତ ସନ୍ଧାନ କରିବାକୁ ଦେଇଥାଏ।</translation>
+<translation id="581659025233126501">ସିଙ୍କ୍ ଚାଲୁ କରନ୍ତୁ</translation>
 <translation id="5819208479324046259"><ph name="MANAGER" /> ଦ୍ୱାରା ପରିଚାଳିତ। <ph name="BEGIN_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK" /></translation>
 <translation id="5846482154967366008">ସନ୍ଧାନ ଇଞ୍ଜିନ୍</translation>
 <translation id="5854790677617711513">30 ଦିନରୁ ଅଧିକ ପୁରୁଣା</translation>
@@ -483,7 +486,6 @@
 <translation id="6127379762771434464">ଆଇଟମ୍‌ କଢ଼ାଗଲା</translation>
 <translation id="6136914049981179737">ସେକେଣ୍ଡ ପୂର୍ବେ</translation>
 <translation id="6144589619057374135">ଇନକଗ୍ନିଟୋରେ ${url} ଖୋଲନ୍ତୁ</translation>
-<translation id="616831107264507309">ପରେ ପଢ଼ନ୍ତୁ</translation>
 <translation id="6177442314419606057">Chromeରେ ଖୋଜନ୍ତୁ</translation>
 <translation id="6184086493125982861">ଟାବ୍‌ ଦେଖାନ୍ତୁ</translation>
 <translation id="6187302354554850004">ଗତଥର ସିଙ୍କ୍ ହୋଇଛି: <ph name="LAST_USED_TIME" /></translation>
@@ -491,12 +493,14 @@
 <translation id="6196207969502475924">ଭଏସ୍‌ ସନ୍ଧାନ କରନ୍ତୁ</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT}ଟି ଟାବ୍ ବନ୍ଦ କରନ୍ତୁ}other{{COUNT}ଟି ଟାବ୍ ବନ୍ଦ କରନ୍ତୁ}}</translation>
 <translation id="6219688215832490856">ଆଦୌ ଅନୁବାଦ କରନ୍ତୁ ନାହିଁ</translation>
+<translation id="6223816392543092032">ଆପଣଙ୍କ ସମସ୍ତ ଡିଭାଇସରେ ଆପଣଙ୍କର ବୁକମାର୍କ, ଇତିହାସ, ପାସୱାର୍ଡ ଏବଂ ଅନ୍ୟ ସେଟିଂସ୍ ପାଆନ୍ତୁ।</translation>
 <translation id="6254066287920239840">ଲିଙ୍କ୍‌ଗୁଡ଼ିକୁ ବ୍ରାଉଜର୍ ପରିବର୍ତ୍ତେ ଆପ୍‌‌ରେ ଖୋଲନ୍ତୁ।</translation>
 <translation id="6255097610484507482">କ୍ରେଡିଟ୍ କାର୍ଡ ଏଡିଟ୍ କରନ୍ତୁ</translation>
 <translation id="6284652193729350524"><ph name="LANGUAGE" />କୁ ଅନୁବାଦ କରିବା ପାଇଁ ଅଫର୍ କରନ୍ତୁ</translation>
 <translation id="6293101329759844770">ସେଫ୍ ବ୍ରାଉଜିଂ ଚାଲୁ କରିବାକୁ, <ph name="BEGIN_LINK" />Google ସେବାଗୁଡ଼ିକ<ph name="END_LINK" /> ଖୋଲନ୍ତୁ ଏବଂ ସେଫ୍ ବ୍ରାଉଜିଂରେ ଟାପ୍ କରନ୍ତୁ।</translation>
 <translation id="6303969859164067831">ସାଇନ୍ ଆଉଟ୍ କରନ୍ତୁ ଏବଂ ସିଙ୍କ୍ ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="6308436439357671616">ଏହ ଆପଣଙ୍କୁ ଫଟୋ ଉଠାଇବା ଏବଂ ଅପ୍‌ଲୋଡ୍‌ କରିବାକୁ ଦେଇଥାଏ।</translation>
+<translation id="6321526113093607004">ବୁକମାର୍କଗୁଡ଼ିକରେ ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="6324528485781869530">ସିଙ୍କ୍ ଆକାଉଣ୍ଟକୁ ସ୍ବିଚ୍ କରନ୍ତୁ</translation>
 <translation id="6324669097367352121">ସାଇନ୍ ଇନ୍ ସେଟିଂ</translation>
 <translation id="6337234675334993532">ଏନକ୍ରିପ୍ସନ୍</translation>
@@ -523,6 +527,7 @@
 <translation id="6445981559479772097">ମେସେଜ୍ ପଠାଗଲା।</translation>
 <translation id="6447842834002726250">କୁକୀଗୁଡିକ</translation>
 <translation id="6453018583485750254">କେବେ ବି ଯାଞ୍ଚ କରାଯାଇନାହିଁ।</translation>
+<translation id="6459307836338400162">ଗୋପନୀୟତା, ସୁରକ୍ଷା ଏବଂ ଡାଟା ସଂଗ୍ରହ ସହ ସମ୍ବନ୍ଧିତ ଅଧିକ ସେଟିଂସ୍ ପାଇଁ ଉଭୟ <ph name="BEGIN_LINK" />ସିଙ୍କ୍<ph name="END_LINK" /> ଏବଂ <ph name="BEGIN_LINK" />Google ସେବାଗୁଡ଼ିକୁ<ph name="END_LINK" /> ଦେଖନ୍ତୁ।</translation>
 <translation id="6464071786529933911">ନୂଆ ଇନ୍‌କଗ୍ନିଟୋ ଟାବ୍‌ରେ ଖୋଲନ୍ତୁ</translation>
 <translation id="6464397691496239022">ଆପଣଙ୍କୁ ସାଇନ୍ ଇନ୍ ରଖିବା କିମ୍ବା ଆପଣଙ୍କ ସପିଂ କାର୍ଟରେ ଥିବା ଆଇଟମଗୁଡ଼ିକୁ ମନେରଖିବା ପରି, ଆପଣଙ୍କ ବ୍ରାଉଜିଂ ଅନୁଭୂତିକୁ ଉନ୍ନତ କରିବା ନିମନ୍ତେ ସାଇଟଗୁଡ଼ିକ କୁକୀଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିପାରିବ।
 
@@ -667,7 +672,6 @@
 <translation id="7856733331829174190">ଡାଉନ୍‍‍ଲୋଡ୍ କରିହେଲା ନାହିଁ</translation>
 <translation id="7859704718976024901">ବ୍ରାଉଜିଂ ଇତିବୃତ୍ତି</translation>
 <translation id="7887198238286927132">ଆପଣଙ୍କର ଗୋପନୀୟତାର ସୁରକ୍ଷା ପାଇଁ, ଏହି ଫିଲ୍ଡକୁ Chrome will ଅଟୋଫିଲ୍‌ କରିବ ନାହିଁ।</translation>
-<translation id="7918293828610777738">ଆପଣଙ୍କର ପଢ଼ିବାର ତାଲିକା ଅଫ୍‌ଲାଇନ୍‌ରେ ଉପଲବ୍ଧ ଅଛି। ଆପଣଙ୍କର ପଢ଼ିବାର ତାଲିକାରେ ଗୋଟିଏ ପୃଷ୍ଠା ଯୋଗ କରିବାକୁ,  <ph name="SHARE_OPENING_ICON" />ରେ ଏହାପରେ <ph name="READ_LATER_TEXT" />ରେ ଟାପ୍‌ କରନ୍ତୁ।</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">ପାସ୍‍ୱର୍ଡଗୁଡ଼ିକୁ ଏକ୍ସପୋର୍ଟ କରନ୍ତୁ...</translation>
 <translation id="7947953824732555851">ସ୍ୱୀକାର ଓ ସାଇନ୍‌ଇନ୍‍</translation>
@@ -706,6 +710,7 @@
 <translation id="8281886186245836920">ଛାଡ଼ିଦିଅନ୍ତୁ</translation>
 <translation id="8283172974887967105">ସେଟ୍ କରନ୍ତୁ…</translation>
 <translation id="8299417921174340354">ପାସୱାର୍ଡଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିବାକୁ ଆପଣଙ୍କ ଡିଭାଇସରେ ଆପଣ ନିଶ୍ଚିତ ରୂପେ ପ୍ରଥମେ ଏକ ପାସକୋଡ୍ ସେଟ୍ କରିବା ଆବଶ୍ୟକ।</translation>
+<translation id="83100941411593607">ସାଇନ୍-ଇନ୍ କରିବା ଅକ୍ଷମ କରାଯାଇଛି</translation>
 <translation id="8319076807703933069">ନୂଆ ସନ୍ଧାନ</translation>
 <translation id="8323906514956095947">ଅଧିକ ଟାବ୍ ବିକଳ୍ପ ପାଇଁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ</translation>
 <translation id="8328777765163860529">ସବୁଗୁଡ଼ିକ ବନ୍ଦ କରନ୍ତୁ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
index d53aded..885cf258 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pa.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">ਨਿਸ਼ਾਨਦੇਹੀ ਕਰੋ…</translation>
 <translation id="3131206671572504478">ਸਭ ਬਲਾਕ ਕਰੋ</translation>
 <translation id="3153862085237805241">ਕਾਰਡ ਰੱਖਿਅਤ ਕਰੋ</translation>
+<translation id="3157387275655328056">ਪੜ੍ਹਨ ਸੂਚੀ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ</translation>
 <translation id="3157684681743766797">ਸਭ ਨਿਸ਼ਾਨਦੇਹ ਕਰੋ…</translation>
 <translation id="3161291298470460782">ਇੰਝ ਕਰਨ ਨਾਲ ਤੁਸੀਂ ਇਸ ਡੀਵਾਈਸ ਤੋਂ ਸਾਈਨ-ਆਊਟ ਹੋ ਜਾਵੋਗੇ, ਸਮਕਾਲੀਕਰਨ ਬੰਦ ਹੋ ਜਾਵੇਗਾ ਅਤੇ ਸਾਰਾ Chrome ਡਾਟਾ ਕਲੀਅਰ ਹੋ ਜਾਵੇਗਾ। ਤੁਹਾਡਾ ਸਮਕਾਲੀਕਿਰਤ ਡਾਟਾ ਤੁਹਾਡੇ Google ਖਾਤੇ ਵਿੱਚ ਬਰਕਰਾਰ ਰਹੇਗਾ।</translation>
 <translation id="3169472444629675720">ਖੋਜੋ</translation>
@@ -397,6 +398,7 @@
 <translation id="5188482106078495165">ਤੁਹਾਡੀ ਕੁਕੀਜ਼ ਸੈਟਿੰਗ ਸਾਰੀਆਂ ਟੈਬਾਂ 'ਤੇ ਲਾਗੂ ਹੁੰਦੀ ਹੈ। ਖੁਲ੍ਹੀ ਹੋਈ ਟੈਬ 'ਤੇ ਨਵੀਂ ਸੈਟਿੰਗ ਲਾਗੂ ਕਰਨ ਲਈ, ਟੈਬ ਨੂੰ ਰੀਲੋਡ ਕਰੋ।</translation>
 <translation id="5190835502935405962">ਬੁੱਕਮਾਰਸ ਬਾਰ</translation>
 <translation id="5197255632782567636">ਇੰਟਰਨੈਟ</translation>
+<translation id="5210365745912300556">ਟੈਬ ਬੰਦ ਕਰੋ</translation>
 <translation id="5228579091201413441">ਸਿੰਕ ਚਾਲੂ ਕਰੋ</translation>
 <translation id="5234764350956374838">ਬਰਖ਼ਾਸਤ ਕਰੋ</translation>
 <translation id="5245322853195994030">ਸਮਕਾਲੀਕਰਨ ਰੱਦ ਕਰੋ</translation>
@@ -484,7 +486,6 @@
 <translation id="6127379762771434464">ਆਈਟਮ ਹਟਾਈ ਗਈ</translation>
 <translation id="6136914049981179737">ਸਕਿੰਟ ਪਹਿਲਾਂ</translation>
 <translation id="6144589619057374135">${url} ਨੂੰ ਇਨਕੋਗਨਿਟੋ ਵਿੱਚ ਖੋਲ੍ਹੋ</translation>
-<translation id="616831107264507309">ਬਾਅਦ ਵਿੱਚ ਪੜ੍ਹੋ</translation>
 <translation id="6177442314419606057">Chrome ਵਿੱਚ ਖੋਜੋ</translation>
 <translation id="6184086493125982861">ਟੈਬਸ ਦਿਖਾਓ</translation>
 <translation id="6187302354554850004">ਪਿਛਲੀ ਵਾਰ ਸਿੰਕ ਕੀਤੇ: <ph name="LAST_USED_TIME" /></translation>
@@ -499,6 +500,7 @@
 <translation id="6293101329759844770">ਸੁਰੱਖਿਅਤ ਬ੍ਰਾਊਜ਼ਿੰਗ ਚਾਲੂ ਕਰਨ ਲਈ, <ph name="BEGIN_LINK" />Google ਸੇਵਾਵਾਂ<ph name="END_LINK" /> ਖੋਲ੍ਹੋ ਅਤੇ ਸੁਰੱਖਿਅਤ ਬ੍ਰਾਊਜ਼ਿੰਗ 'ਤੇ ਟੈਪ ਕਰੋ।</translation>
 <translation id="6303969859164067831">ਸਾਈਨ-ਆਊਟ ਕਰਕੇ ਸਮਕਾਲੀਕਰਨ ਬੰਦ ਕਰੋ</translation>
 <translation id="6308436439357671616">ਇਹ ਤੁਹਾਨੂੰ ਫ਼ੋਟੋਆਂ ਖਿੱਚਣ ਅਤੇ ਅੱਪਲੋਡ ਕਰਨ ਦਿੰਦਾ ਹੈ।</translation>
+<translation id="6321526113093607004">ਬੁੱਕਮਾਰਕਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ</translation>
 <translation id="6324528485781869530">ਸਮਕਾਲੀਕਰਨ ਖਾਤਾ ਬਦਲੀ ਕਰੋ</translation>
 <translation id="6324669097367352121">ਸਾਈਨ-ਇਨ ਸੈਟਿੰਗਾਂ</translation>
 <translation id="6337234675334993532">ਇਨਕ੍ਰਿਪਸ਼ਨ</translation>
@@ -670,7 +672,6 @@
 <translation id="7856733331829174190">ਡਾਊਨਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ</translation>
 <translation id="7859704718976024901">ਬ੍ਰਾਉਜ਼ਿੰਗ ਇਤਿਹਾਸ</translation>
 <translation id="7887198238286927132">ਤੁਹਾਡੀ ਪਰਦੇਦਾਰੀ ਦੀ ਸੁਰੱਖਿਆ ਲਈ, Chrome ਇਸ ਖੇਤਰ ਨੂੰ ਆਟੋਫਿਲ ਨਹੀਂ ਕਰੇਗਾ।</translation>
-<translation id="7918293828610777738">ਤੁਹਾਡੀ ਪੜ੍ਹਨ-ਸੂਚੀ ਆਫ਼ਲਾਈਨ ਉਪਲਬਧ ਹੈ। ਤੁਹਾਡੀ ਪੜ੍ਹਨ-ਸੂਚੀ ਵਿੱਚ ਇੱਕ ਪੰਨਾ ਸ਼ਾਮਲ ਕਰਨ ਲਈ, ਪਹਿਲਾਂ <ph name="SHARE_OPENING_ICON" /> 'ਤੇ ਟੈਪ ਕਰੋ ਅਤੇ ਬਾਅਦ ਵਿੱਚ <ph name="READ_LATER_TEXT" /> 'ਤੇ।</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">ਪਾਸਵਰਡ ਨਿਰਯਾਤ ਕਰੋ...</translation>
 <translation id="7947953824732555851">ਸਵੀਕਾਰ ਕਰਕੇ ਸਾਈਨ-ਇਨ ਕਰੋ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
index 687fe1a..9e41669 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Oznacz…</translation>
 <translation id="3131206671572504478">Blokuj wszystkie</translation>
 <translation id="3153862085237805241">Zapisz kartę</translation>
+<translation id="3157387275655328056">Dodaj do listy „Do przeczytania”</translation>
 <translation id="3157684681743766797">Oznacz wszystko…</translation>
 <translation id="3161291298470460782">Spowoduje to wylogowanie Cię, wyłączenie synchronizacji i usunięcie wszystkich danych Chrome z tego urządzenia. Zsynchronizowane dane pozostaną na Twoim koncie Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -397,6 +398,7 @@
 <translation id="5188482106078495165">Ustawienie plików cookie obowiązuje w odniesieniu do wszystkich kart. Aby zastosować nowe ustawienie do otwartej karty, załaduj ją ponownie.</translation>
 <translation id="5190835502935405962">Pasek zakładek</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Zamknij kartę</translation>
 <translation id="5228579091201413441">Włącz synchronizację</translation>
 <translation id="5234764350956374838">Zamknij</translation>
 <translation id="5245322853195994030">Anuluj synchronizację</translation>
@@ -484,7 +486,6 @@
 <translation id="6127379762771434464">Element został usunięty</translation>
 <translation id="6136914049981179737">Przed chwilą</translation>
 <translation id="6144589619057374135">Otwórz ${url} w trybie incognito</translation>
-<translation id="616831107264507309">Przeczytaj później</translation>
 <translation id="6177442314419606057">Szukaj w Chrome</translation>
 <translation id="6184086493125982861">Pokaż karty</translation>
 <translation id="6187302354554850004">Ostatnia synchronizacja: <ph name="LAST_USED_TIME" /></translation>
@@ -499,6 +500,7 @@
 <translation id="6293101329759844770">Aby włączyć Bezpieczne przeglądanie, otwórz <ph name="BEGIN_LINK" />Usługi Google<ph name="END_LINK" /> i kliknij Bezpieczne przeglądanie.</translation>
 <translation id="6303969859164067831">Wyloguj się i wyłącz synchronizację</translation>
 <translation id="6308436439357671616">Umożliwia robienie i przesyłanie zdjęć.</translation>
+<translation id="6321526113093607004">Dodaj do Zakładek</translation>
 <translation id="6324528485781869530">Zmień konto synchronizacji</translation>
 <translation id="6324669097367352121">Ustawienia logowania</translation>
 <translation id="6337234675334993532">Szyfrowanie</translation>
@@ -670,7 +672,6 @@
 <translation id="7856733331829174190">Nie udało się pobrać pliku</translation>
 <translation id="7859704718976024901">Historia przeglądania</translation>
 <translation id="7887198238286927132">Aby chronić Twoją prywatność, Chrome nie będzie automatycznie wypełniać tego pola.</translation>
-<translation id="7918293828610777738">Twoja lista Do przeczytania jest dostępna offline. Aby dodać do niej stronę, kliknij <ph name="SHARE_OPENING_ICON" />, a następnie <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Eksportuj hasła…</translation>
 <translation id="7947953824732555851">Zaakceptuj i zaloguj się</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
index e5dd534..bf00f30 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Marcar...</translation>
 <translation id="3131206671572504478">Bloquear tudo</translation>
 <translation id="3153862085237805241">Salvar cartão</translation>
+<translation id="3157387275655328056">Adicionar à lista de leitura</translation>
 <translation id="3157684681743766797">Marcar tudo...</translation>
 <translation id="3161291298470460782">Essa ação desconectará sua conta, desativará a sincronização e apagará todos os dados do Chrome neste dispositivo. Os dados sincronizados permanecerão na sua Conta do Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Sua configuração de cookies é aplicada a todas as guias. Para aplicar uma nova configuração a uma guia aberta, atualize a guia.</translation>
 <translation id="5190835502935405962">Barra de favoritos</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Fechar guia</translation>
 <translation id="5228579091201413441">Ativar sincronização</translation>
 <translation id="5234764350956374838">Dispensar</translation>
 <translation id="5245322853195994030">Cancelar sincronização</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Item removido</translation>
 <translation id="6136914049981179737">Segundos atrás</translation>
 <translation id="6144589619057374135">Abrir ${url} na navegação anônima</translation>
-<translation id="616831107264507309">Ler mais tarde</translation>
 <translation id="6177442314419606057">Pesquisar no Chrome</translation>
 <translation id="6184086493125982861">Mostrar guias</translation>
 <translation id="6187302354554850004">Última sincronização: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Acesse <ph name="BEGIN_LINK" />Serviços do Google<ph name="END_LINK" /> e toque em "Navegação segura" para ativar esse recurso.</translation>
 <translation id="6303969859164067831">Sair e desativar a sincronização</translation>
 <translation id="6308436439357671616">Isso permite que você tire fotos e faça upload delas.</translation>
+<translation id="6321526113093607004">Adicionar aos favoritos</translation>
 <translation id="6324528485781869530">Mudar conta de sincronização</translation>
 <translation id="6324669097367352121">Configurações de login</translation>
 <translation id="6337234675334993532">Criptografia</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Falha no download</translation>
 <translation id="7859704718976024901">Histórico de navegação</translation>
 <translation id="7887198238286927132">Para proteger sua privacidade, o Chrome não preencherá esse campo automaticamente.</translation>
-<translation id="7918293828610777738">Sua lista de leitura está disponível off-line. Para adicionar uma página à lista, toque em <ph name="SHARE_OPENING_ICON" /> e depois em <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Exportar senhas…</translation>
 <translation id="7947953824732555851">Aceitar/fazer login</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
index 0f097be..6c3730c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Marcar…</translation>
 <translation id="3131206671572504478">Bloquear tudo</translation>
 <translation id="3153862085237805241">Guardar cartão</translation>
+<translation id="3157387275655328056">Adicionar à lista de leitura</translation>
 <translation id="3157684681743766797">Marcar tudo…</translation>
 <translation id="3161291298470460782">Esta ação termina a sua sessão, desativa a sincronização e limpa todos os dados do Chrome deste dispositivo. Os seus dados sincronizados permanecem na sua Conta Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">A sua definição de cookies aplica-se a todos os separadores. Para aplicar uma nova definição a um separador aberto, atualize o separador.</translation>
 <translation id="5190835502935405962">Barra de marcadores</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Fechar separador</translation>
 <translation id="5228579091201413441">Ativar a sincronização</translation>
 <translation id="5234764350956374838">Ignorar</translation>
 <translation id="5245322853195994030">Cancelar sincronização</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Item removido</translation>
 <translation id="6136914049981179737">Há segundos</translation>
 <translation id="6144589619057374135">Abrir ${url} na Navegação anónima</translation>
-<translation id="616831107264507309">Ler mais tarde</translation>
 <translation id="6177442314419606057">Pesquisar no Chrome</translation>
 <translation id="6184086493125982861">Mostrar Separadores</translation>
 <translation id="6187302354554850004">Última sincronização: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Para ativar a Navegação segura, abra <ph name="BEGIN_LINK" />Serviços Google<ph name="END_LINK" /> e toque em Navegação segura.</translation>
 <translation id="6303969859164067831">Terminar sessão e desativar a sincronização</translation>
 <translation id="6308436439357671616">Isto permite-lhe tirar e carregar fotos.</translation>
+<translation id="6321526113093607004">Adicionar aos Marcadores</translation>
 <translation id="6324528485781869530">Mudar conta de sincronização</translation>
 <translation id="6324669097367352121">Definições de início de sessão</translation>
 <translation id="6337234675334993532">Encriptação</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Impossível transferir</translation>
 <translation id="7859704718976024901">Histórico de navegação</translation>
 <translation id="7887198238286927132">Para proteger a sua privacidade, o Chrome não irá preencher automaticamente este campo.</translation>
-<translation id="7918293828610777738">A sua lista de leitura está disponível offline. Para adicionar uma página à mesma, toque em <ph name="SHARE_OPENING_ICON" /> e, em seguida, em <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Exportar palavras-passe...</translation>
 <translation id="7947953824732555851">Aceitar e in. sessão</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
index f6cc4ea..71d55bc 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ro.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Marchează…</translation>
 <translation id="3131206671572504478">Blochează-le pe toate</translation>
 <translation id="3153862085237805241">Salvează cardul</translation>
+<translation id="3157387275655328056">Adaugă în lista de lectură</translation>
 <translation id="3157684681743766797">Marchează-le pe toate…</translation>
 <translation id="3161291298470460782">Astfel, te vei deconecta, vei dezactiva sincronizarea și vei șterge toate datele Chrome de pe dispozitiv. Datele sincronizate se vor păstra în Contul Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Setarea pentru cookie-uri se aplică tuturor filelor. Pentru a aplica o nouă setare unei file deschise, reîncarcă fila.</translation>
 <translation id="5190835502935405962">Bară de marcaje</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Închide fila</translation>
 <translation id="5228579091201413441">Activează sincronizarea</translation>
 <translation id="5234764350956374838">Închide</translation>
 <translation id="5245322853195994030">Anulează sincronizarea</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Elementul a fost eliminat</translation>
 <translation id="6136914049981179737">Secunde</translation>
 <translation id="6144589619057374135">Deschide ${url} în modul incognito</translation>
-<translation id="616831107264507309">Citește mai târziu</translation>
 <translation id="6177442314419606057">Caută în Chrome</translation>
 <translation id="6184086493125982861">Afișează butonul File</translation>
 <translation id="6187302354554850004">Ultima sincronizare: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Pentru a activa Navigarea sigură, deschide <ph name="BEGIN_LINK" />Serviciile Google<ph name="END_LINK" /> și atinge Navigare sigură.</translation>
 <translation id="6303969859164067831">Deconectează-te și dezactivează sincronizarea</translation>
 <translation id="6308436439357671616">Astfel, poți să fotografiezi și să încarci fotografiile.</translation>
+<translation id="6321526113093607004">Adaugă în Marcaje</translation>
 <translation id="6324528485781869530">Schimbă contul de sincronizare</translation>
 <translation id="6324669097367352121">Setări de conectare</translation>
 <translation id="6337234675334993532">Criptare</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Nu s-a putut descărca</translation>
 <translation id="7859704718976024901">Istoricul de navigare</translation>
 <translation id="7887198238286927132">Pentru a-ți proteja confidențialitatea, Chrome nu va completa automat acest câmp.</translation>
-<translation id="7918293828610777738">Lista de lectură este disponibilă offline. Pentru a adăuga o pagină în lista de lectură, atinge <ph name="SHARE_OPENING_ICON" />, apoi <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Exportă parolele...</translation>
 <translation id="7947953824732555851">Accept și conectare</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ru.xtb b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
index 694140c..5fc5233 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ru.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Отметить…</translation>
 <translation id="3131206671572504478">Блокировать все</translation>
 <translation id="3153862085237805241">Сохранить подсказку</translation>
+<translation id="3157387275655328056">Добавить в список для чтения</translation>
 <translation id="3157684681743766797">Отметить все…</translation>
 <translation id="3161291298470460782">Вы выйдете из аккаунта, синхронизация будет отключена, а все данные Chrome – удалены с этого устройства. Синхронизированные данные останутся в вашем аккаунте Google.</translation>
 <translation id="3169472444629675720">Рекомендации</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Заданные вами параметры в отношении файлов cookie действуют для всех вкладок. Если вам нужно применить новый параметр к открытой вкладке, перезагрузите ее.</translation>
 <translation id="5190835502935405962">Панель закладок</translation>
 <translation id="5197255632782567636">Интернет</translation>
+<translation id="5210365745912300556">Закрыть вкладку</translation>
 <translation id="5228579091201413441">Включить синхронизацию</translation>
 <translation id="5234764350956374838">Закрыть</translation>
 <translation id="5245322853195994030">Отключить</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Быстрая ссылка удалена.</translation>
 <translation id="6136914049981179737">только что</translation>
 <translation id="6144589619057374135">Открыть ${url} в режиме инкогнито</translation>
-<translation id="616831107264507309">Читать позже</translation>
 <translation id="6177442314419606057">Поиск в Chrome</translation>
 <translation id="6184086493125982861">Показать вкладки</translation>
 <translation id="6187302354554850004">Послед. синхр.: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Чтобы включить Безопасный просмотр, откройте <ph name="BEGIN_LINK" />сервисы Google<ph name="END_LINK" /> и нажмите "Безопасный просмотр".</translation>
 <translation id="6303969859164067831">Выйти из аккаунта и отключить синхронизацию</translation>
 <translation id="6308436439357671616">Это нужно, чтобы делать снимки и загружать фотографии</translation>
+<translation id="6321526113093607004">Добавить в закладки</translation>
 <translation id="6324528485781869530">Смена аккаунта</translation>
 <translation id="6324669097367352121">Настройки входа</translation>
 <translation id="6337234675334993532">Шифрование</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Не удалось скачать файл</translation>
 <translation id="7859704718976024901">История браузера</translation>
 <translation id="7887198238286927132">Чтобы обеспечить конфиденциальность ваших данных, Chrome не использует автозаполнение для этого поля.</translation>
-<translation id="7918293828610777738">Список для чтения доступен без подключения к Интернету. Чтобы добавить в него страницу, нажмите <ph name="SHARE_OPENING_ICON" />, а затем –<ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Экспорт паролей...</translation>
 <translation id="7947953824732555851">Принять и войти</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_si.xtb b/ios/chrome/app/strings/resources/ios_strings_si.xtb
index 0ffe002a..38d97f5 100644
--- a/ios/chrome/app/strings/resources/ios_strings_si.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_si.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">ලකුණු කරන්න…</translation>
 <translation id="3131206671572504478">සියල්ල අවහිර කරන්න</translation>
 <translation id="3153862085237805241">කාඩ්පත සුරකින්න</translation>
+<translation id="3157387275655328056">කියවීම් ලැයිස්තුවට එක් කරන්න</translation>
 <translation id="3157684681743766797">සියල්ල ලකුණු කරන්න…</translation>
 <translation id="3161291298470460782">මෙය ඔබව වරනය කර, සමමුහුව ක්‍රියා විරහිත කර මෙම උපාංගයෙන් සියලු Chrome දත්ත හිස් කරනු ඇත. ඔබේ සමමුහුර්ත දත්ත ඔබේ Google ගිණුමේ පවතිනු ඇත.</translation>
 <translation id="3169472444629675720">අනාවරණය</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">ඔබේ කුකි සැකසීම සියලු ටැබවලට යෙදේ. නව සැකසීමක් විවෘත ටැබයකට යෙදීමට, ටැබය නැවත පූරණය කරන්න.</translation>
 <translation id="5190835502935405962">පොත්සලකුණු තීරුව</translation>
 <translation id="5197255632782567636">අන්තර්ජාලය</translation>
+<translation id="5210365745912300556">ටැබය වසන්න</translation>
 <translation id="5228579091201413441">සමමුහුර්ත කිරීම සබල කරන්න</translation>
 <translation id="5234764350956374838">ඉවත් කරන්න</translation>
 <translation id="5245322853195994030">සමමුහූර්තය අවලංගු කරන්න</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">අයිතමය ඉවත් කරන ලදී</translation>
 <translation id="6136914049981179737">තත්පර ගණනකට පෙර</translation>
 <translation id="6144589619057374135">අප්‍රසිද්ධ තුළ ${url} විවෘත කරන්න</translation>
-<translation id="616831107264507309">පසුව කියවන්න</translation>
 <translation id="6177442314419606057">Chrome තුළ සොයන්න</translation>
 <translation id="6184086493125982861">පටිති පෙන්වන්න</translation>
 <translation id="6187302354554850004">අවසන් වරට සමමුහුර්ත කළේ: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">සුරක්ෂිත බ්‍රවුස් කිරීම ක්‍රියාත්මක කිරීමට, <ph name="BEGIN_LINK" />Google සේවා<ph name="END_LINK" /> විවෘත කර සුරක්ෂිත බ්‍රවුස් කිරීම තට්ටු කරන්න.</translation>
 <translation id="6303969859164067831">වරනය වී සමමුහුව ක්‍රියාවිරහිත කරන්න</translation>
 <translation id="6308436439357671616">මෙය ඔබට ඡායාරූප ගෙන උඩුගත කිරීමට ඉඩ දෙයි.</translation>
+<translation id="6321526113093607004">පිටුසන් වෙත එක් කරන්න</translation>
 <translation id="6324528485781869530">සමමුහුර්ත ගිණුම මාරු කරන්න</translation>
 <translation id="6324669097367352121">පුරනය වීමේ සැකසීම්</translation>
 <translation id="6337234675334993532">සංකේතනය</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">බාගැනීමට නොහැකි විය</translation>
 <translation id="7859704718976024901">බ්‍රවුස් කිරීමේ ඉතිහාසය</translation>
 <translation id="7887198238286927132">ඔබේ පෞද්ගලිකත්වය ආරක්‍ෂා කිරීමට, Chrome මෙම ක්‍ෂේත්‍රය ස්වයං පිරවුම නොකරයි.</translation>
-<translation id="7918293828610777738">ඔබගේ කියවීමේ ලැයිස්තුව නොබැඳිව ලබා ගත හැක. ඔබගේ කියවීමේ ලැයිස්තුවට පිටුවක් එකතු කර ගැනීමට, <ph name="SHARE_OPENING_ICON" />  සහ ඊළඟට <ph name="READ_LATER_TEXT" /> තට්ටු කරන්න.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">මුරපද නිර්යාත කරන්න...</translation>
 <translation id="7947953824732555851">පිළිගෙන පුරන්න</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
index dc43ca7..6f351f7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Označiť…</translation>
 <translation id="3131206671572504478">Blokovať všetky</translation>
 <translation id="3153862085237805241">Uložiť kartu</translation>
+<translation id="3157387275655328056">Pridať do zoznamu na čítanie</translation>
 <translation id="3157684681743766797">Označiť všetko…</translation>
 <translation id="3161291298470460782">Touto akciou sa odhlásite, vypnete synchronizáciu a vymažete všetky údaje Chromu z tohto zariadenia. Synchronizované údaje zostanú vo vašom účte Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Nastavenie súborov cookie platí pre všetky karty. Ak chcete pre otvorenú kartu použiť nové nastavenie, znova ju načítajte.</translation>
 <translation id="5190835502935405962">Panel so záložkami</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Zatvoriť kartu</translation>
 <translation id="5228579091201413441">Povoliť synchronizáciu</translation>
 <translation id="5234764350956374838">Ignorovať</translation>
 <translation id="5245322853195994030">Zrušiť synchronizáciu</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Položka bola odstránená</translation>
 <translation id="6136914049981179737">Pred chvíľou</translation>
 <translation id="6144589619057374135">Otvoriť adresu ${url} v režime inkognito</translation>
-<translation id="616831107264507309">Prečítať neskôr</translation>
 <translation id="6177442314419606057">Hľadať v Chrome</translation>
 <translation id="6184086493125982861">Zobraziť karty</translation>
 <translation id="6187302354554850004">Synchronizované <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Ak chcete zapnúť Bezpečné prehliadanie, otvorte <ph name="BEGIN_LINK" />Služby Googlu<ph name="END_LINK" /> a klepnite na Bezpečné prehliadanie.</translation>
 <translation id="6303969859164067831">Odhlásiť sa a vypnúť synchronizáciu</translation>
 <translation id="6308436439357671616">Umožňuje fotiť a nahrať fotky.</translation>
+<translation id="6321526113093607004">Pridať medzi záložky</translation>
 <translation id="6324528485781869530">Prepnutie účtu na synchronizáciu</translation>
 <translation id="6324669097367352121">Nastavenia prihlásenia</translation>
 <translation id="6337234675334993532">Šifrovanie</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Sťahovanie zlyhalo</translation>
 <translation id="7859704718976024901">História prehliadania</translation>
 <translation id="7887198238286927132">Chrome automaticky nedoplní toho pole, čím ochráni vaše súkromie.</translation>
-<translation id="7918293828610777738">Váš čitateľský zoznam je k dispozícii offline. Ak doň chcete pridať stránku, klepnite na položku <ph name="SHARE_OPENING_ICON" /> a potom na možnosť <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Exportovať heslá...</translation>
 <translation id="7947953824732555851">Prijať a prihl. sa</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
index 6e7cd9f..4700bba5 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Označi …</translation>
 <translation id="3131206671572504478">Blokiraj vse</translation>
 <translation id="3153862085237805241">Shranjevanje kartice</translation>
+<translation id="3157387275655328056">Dodaj na bralni seznam</translation>
 <translation id="3157684681743766797">Označi vse …</translation>
 <translation id="3161291298470460782">S tem boste odjavljeni, izklopljena bo sinhronizacija in izbrisani bodo vsi podatki v Chromu v tej napravi. Sinhronizirani podatki bodo ostali v računu Google.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Nastavitev piškotkov velja za vse zavihke. Če želite uporabiti novo nastavitev na odprtem zavihku, ga znova naložite.</translation>
 <translation id="5190835502935405962">Vrstica z zaznamki</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Zapri zavihek</translation>
 <translation id="5228579091201413441">Omogoči sinhronizacijo</translation>
 <translation id="5234764350956374838">Opusti</translation>
 <translation id="5245322853195994030">Prekliči sinhronizacijo</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Element odstranjen</translation>
 <translation id="6136914049981179737">Pred sek.</translation>
 <translation id="6144589619057374135">Odprite ${url} v anonimnem načinu</translation>
-<translation id="616831107264507309">Poznejše branje</translation>
 <translation id="6177442314419606057">Iskanje v Chromu</translation>
 <translation id="6184086493125982861">Pokaži zavihke</translation>
 <translation id="6187302354554850004">Nazadnje sinhronizirano: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Če želite vklopiti Varno brskanje, odprite <ph name="BEGIN_LINK" />Google storitve<ph name="END_LINK" /> in se dotaknite »Varno brskanje«.</translation>
 <translation id="6303969859164067831">Odjava in izklop sinhronizacije</translation>
 <translation id="6308436439357671616">S tem je mogoče fotografirati in nalagati fotografije.</translation>
+<translation id="6321526113093607004">Dodaj med zaznamke</translation>
 <translation id="6324528485781869530">Preklop med računi za sinhronizacijo</translation>
 <translation id="6324669097367352121">Nastavitve za prijavo</translation>
 <translation id="6337234675334993532">Šifriranje</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Prenos ni uspel</translation>
 <translation id="7859704718976024901">Zgodovina brskanja</translation>
 <translation id="7887198238286927132">Chrome zaradi varovanja vaše zasebnosti ne bo samodejno izpolnil tega polja.</translation>
-<translation id="7918293828610777738">Bralni seznam je na voljo brez povezave. Če želite dodati stran na bralni seznam, se dotaknite <ph name="SHARE_OPENING_ICON" />, nato pa <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Izvozi gesla ...</translation>
 <translation id="7947953824732555851">Sprejem in prijava</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sq.xtb b/ios/chrome/app/strings/resources/ios_strings_sq.xtb
index 867b4c2b..af06bce0 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sq.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sq.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Shëno...</translation>
 <translation id="3131206671572504478">Bllokoji të gjitha</translation>
 <translation id="3153862085237805241">Ruaj kartën</translation>
+<translation id="3157387275655328056">Shto te lista e leximit</translation>
 <translation id="3157684681743766797">Shëno të gjitha…</translation>
 <translation id="3161291298470460782">Kjo do të të nxjerrë nga llogaria, do të çaktivizojë sinkronizimin dhe do të pastrojë të gjitha të dhënat e Chrome nga kjo pajisje. Të dhënat e tua të sinkronizuara do të mbeten në "Llogarinë tënde të Google".</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Cilësimet e tua të kukive zbatohen te të gjitha skedat. Për të zbatuar një cilësim të ri te një skedë e hapur, ringarkoje skedën.</translation>
 <translation id="5190835502935405962">Shiriti i faqeshënuesve</translation>
 <translation id="5197255632782567636">Interneti</translation>
+<translation id="5210365745912300556">Mbyll skedën</translation>
 <translation id="5228579091201413441">Aktivizo sinkronizimin</translation>
 <translation id="5234764350956374838">Hiq</translation>
 <translation id="5245322853195994030">Anulo sinkronizimin</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Artikulli u hoq</translation>
 <translation id="6136914049981179737">Sekonda më parë</translation>
 <translation id="6144589619057374135">Hap ${url} në modalitetin "I fshehtë"</translation>
-<translation id="616831107264507309">Lexo më vonë</translation>
 <translation id="6177442314419606057">Kërko në Chrome</translation>
 <translation id="6184086493125982861">Trego skedat</translation>
 <translation id="6187302354554850004">Sinkronizimi i fundit: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Për të aktivizuar "Shfletimin e sigurt", hap <ph name="BEGIN_LINK" />Shërbimet e Google<ph name="END_LINK" /> dhe trokit te "Shfletimi i sigurt".</translation>
 <translation id="6303969859164067831">Dil dhe çaktivizo sinkronizimin</translation>
 <translation id="6308436439357671616">Kjo të lejon të nxjerrësh dhe të ngarkosh fotografitë.</translation>
+<translation id="6321526113093607004">Shto te faqeshënuesit</translation>
 <translation id="6324528485781869530">Ndërro llogarinë e sinkronizimit</translation>
 <translation id="6324669097367352121">Cilësimet e identifikimit</translation>
 <translation id="6337234675334993532">Enkriptimi</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Nuk mundi të shkarkohej</translation>
 <translation id="7859704718976024901">Historiku i shfletimit</translation>
 <translation id="7887198238286927132">Për të mbrojtur privatësinë tënde, Chrome nuk do ta plotësojë automatikisht këtë fushë.</translation>
-<translation id="7918293828610777738">Lista jote e leximit ofrohet jashtë linje. Për të shtuar një faqe në listën tënde të leximit, trokit te <ph name="SHARE_OPENING_ICON" /> më pas te <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Eksporto fjalëkalimet...</translation>
 <translation id="7947953824732555851">Pranoje dhe identifikohu</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
index 7bfd2343..3c27d7c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Označi…</translation>
 <translation id="3131206671572504478">Sve je blokirano</translation>
 <translation id="3153862085237805241">Sačuvaj karticu</translation>
+<translation id="3157387275655328056">Dodaj na listu za čitanje</translation>
 <translation id="3157684681743766797">Označi sve…</translation>
 <translation id="3161291298470460782">Time ćete se odjaviti, isključiti sinhronizaciju i obrisati sve Chrome podatke sa ovog uređaja. Sinhronizovani podaci će ostati na Google nalogu.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Podešavanje kolačića se primenjuje na sve kartice. Da biste primenili novo podešavanje na otvorenu karticu, ponovo učitajte karticu.</translation>
 <translation id="5190835502935405962">Traka sa obeleživačima</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Zatvori karticu</translation>
 <translation id="5228579091201413441">Omogući sinhronizaciju</translation>
 <translation id="5234764350956374838">Odbaci</translation>
 <translation id="5245322853195994030">Želite li da otkažete sinhronizaciju?</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Uklonili ste stavku</translation>
 <translation id="6136914049981179737">Malopre</translation>
 <translation id="6144589619057374135">Otvori ${url} u režimu bez arhiviranja</translation>
-<translation id="616831107264507309">Pročitajte kasnije</translation>
 <translation id="6177442314419606057">Pretražite u Chrome-u</translation>
 <translation id="6184086493125982861">Prikaži kartice</translation>
 <translation id="6187302354554850004">Poslednja sinhron.: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Da biste uključili Bezbedno pregledanje, otvorite <ph name="BEGIN_LINK" />Google usluge<ph name="END_LINK" /> i dodirnite Bezbedno pregledanje.</translation>
 <translation id="6303969859164067831">Odjavi me i isključi sinhronizaciju</translation>
 <translation id="6308436439357671616">Ovo vam omogućava da snimate i otpremate slike.</translation>
+<translation id="6321526113093607004">Dodaj u obeleživače</translation>
 <translation id="6324528485781869530">Promenite nalog za sinhronizaciju</translation>
 <translation id="6324669097367352121">Podešavanja prijavljivanja</translation>
 <translation id="6337234675334993532">Šifrovanje</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Preuzimanje nije uspelo</translation>
 <translation id="7859704718976024901">Istorija pregledanja</translation>
 <translation id="7887198238286927132">Radi zaštite privatnosti Chrome neće automatski popunjavati ovo polje.</translation>
-<translation id="7918293828610777738">Lista za čitanje je dostupna oflajn. Da biste dodali stranicu na listu za čitanje, dodirnite <ph name="SHARE_OPENING_ICON" />, pa <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Izvezi lozinke…</translation>
 <translation id="7947953824732555851">Prihvati i prijavi me</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
index 915d659..8e8e22d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Означи…</translation>
 <translation id="3131206671572504478">Све је блокирано</translation>
 <translation id="3153862085237805241">Сачувај картицу</translation>
+<translation id="3157387275655328056">Додај на листу за читање</translation>
 <translation id="3157684681743766797">Означи све…</translation>
 <translation id="3161291298470460782">Тиме ћете се одјавити, искључити синхронизацију и обрисати све Chrome податке са овог уређаја. Синхронизовани подаци ће остати на Google налогу.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Подешавање колачића се примењује на све картице. Да бисте применили ново подешавање на отворену картицу, поново учитајте картицу.</translation>
 <translation id="5190835502935405962">Трака са обележивачима</translation>
 <translation id="5197255632782567636">Интернет</translation>
+<translation id="5210365745912300556">Затвори картицу</translation>
 <translation id="5228579091201413441">Омогући синхронизацију</translation>
 <translation id="5234764350956374838">Одбаци</translation>
 <translation id="5245322853195994030">Желите ли да откажете синхронизацију?</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Уклонили сте ставку</translation>
 <translation id="6136914049981179737">Малопре</translation>
 <translation id="6144589619057374135">Отвори ${url} у режиму без архивирања</translation>
-<translation id="616831107264507309">Прочитајте касније</translation>
 <translation id="6177442314419606057">Претражите у Chrome-у</translation>
 <translation id="6184086493125982861">Прикажи картице</translation>
 <translation id="6187302354554850004">Последња синхрон.: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Да бисте укључили Безбедно прегледање, отворите <ph name="BEGIN_LINK" />Google услуге<ph name="END_LINK" /> и додирните Безбедно прегледање.</translation>
 <translation id="6303969859164067831">Одјави ме и искључи синхронизацију</translation>
 <translation id="6308436439357671616">Ово вам омогућава да снимате и отпремате слике.</translation>
+<translation id="6321526113093607004">Додај у обележиваче</translation>
 <translation id="6324528485781869530">Промените налог за синхронизацију</translation>
 <translation id="6324669097367352121">Подешавања пријављивања</translation>
 <translation id="6337234675334993532">Шифровање</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Преузимање није успело</translation>
 <translation id="7859704718976024901">Историја прегледања</translation>
 <translation id="7887198238286927132">Ради заштите приватности Chrome неће аутоматски попуњавати ово поље.</translation>
-<translation id="7918293828610777738">Листа за читање је доступна офлајн. Да бисте додали страницу на листу за читање, додирните <ph name="SHARE_OPENING_ICON" />, па <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Извези лозинке…</translation>
 <translation id="7947953824732555851">Прихвати и пријави ме</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sv.xtb b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
index bf11c0e..274b381 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sv.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Markera …</translation>
 <translation id="3131206671572504478">Blockera alla</translation>
 <translation id="3153862085237805241">Spara kortet</translation>
+<translation id="3157387275655328056">Lägg till i läslistan</translation>
 <translation id="3157684681743766797">Markera alla …</translation>
 <translation id="3161291298470460782">Med den här åtgärden loggas du ut, synkroniseringen inaktiveras och all data i Chrome rensas från enheten. Din synkroniserade data finns kvar i Google-kontot.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Cookie-inställningarna tillämpas för alla flikar. Om du vill tillämpa en ny inställning på en öppen flik läser du in fliken igen.</translation>
 <translation id="5190835502935405962">Bokmärkesfältet</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Stäng flik</translation>
 <translation id="5228579091201413441">Aktivera synkronisering</translation>
 <translation id="5234764350956374838">Stäng</translation>
 <translation id="5245322853195994030">Avbryt synkronisering</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Objektet har tagits bort</translation>
 <translation id="6136914049981179737">Nyss</translation>
 <translation id="6144589619057374135">Öppna ${url} i inkognitoläget</translation>
-<translation id="616831107264507309">Läs senare</translation>
 <translation id="6177442314419606057">Sök i Chrome</translation>
 <translation id="6184086493125982861">Visa flikar</translation>
 <translation id="6187302354554850004">Synkroniserades senast: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Öppna <ph name="BEGIN_LINK" />Googles tjänster<ph name="END_LINK" /> och tryck på Säker webbsökning om du vill aktivera det.</translation>
 <translation id="6303969859164067831">Logga ut och inaktivera synkronisering</translation>
 <translation id="6308436439357671616">Det här gör att du kan ta foton och ladda upp dem.</translation>
+<translation id="6321526113093607004">Lägg till i bokmärken</translation>
 <translation id="6324528485781869530">Byt synkroniseringskonto</translation>
 <translation id="6324669097367352121">Inloggningsinställn.</translation>
 <translation id="6337234675334993532">Kryptering</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Nedladdning misslyckades</translation>
 <translation id="7859704718976024901">Webbhistorik</translation>
 <translation id="7887198238286927132">Av sekretesskäl fylls det här fältet inte i automatiskt.</translation>
-<translation id="7918293828610777738">Läslistan är tillgänglig offline. Om du vill lägga till en sida i läslistan trycker du på <ph name="SHARE_OPENING_ICON" /> följt av <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Exportera lösenord …</translation>
 <translation id="7947953824732555851">Godkänn och logga in</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sw.xtb b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
index 1e616a39..92d2a89 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sw.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Tia alama…</translation>
 <translation id="3131206671572504478">Zuia Vyote</translation>
 <translation id="3153862085237805241">Hifadhi Kadi</translation>
+<translation id="3157387275655328056">Ongeza kwenye Orodha ya Kusoma</translation>
 <translation id="3157684681743766797">Tia Zote Alama...</translation>
 <translation id="3161291298470460782">Hatua hii itakuondoa katika akaunti, izime usawazishaji na ifute data yote ya Chrome kutoka kwenye kifaa hiki. Data yako iliyosawazishwa itabaki kwenye Akaunti yako ya Google.</translation>
 <translation id="3169472444629675720">Gundua</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Mipangilio yako ya vidakuzi inatumika kwenye vichupo vyote. Ili utumie mipangilio mipya kwenye kichupo ulichofungua, kipakie upya.</translation>
 <translation id="5190835502935405962">Sehemu ya Alamisho</translation>
 <translation id="5197255632782567636">Wavuti</translation>
+<translation id="5210365745912300556">Funga kichupo</translation>
 <translation id="5228579091201413441">Washa usawazishaji</translation>
 <translation id="5234764350956374838">Ondoa</translation>
 <translation id="5245322853195994030">Ungependa kughairi usawazishaji</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Kipengee kimeondolewa</translation>
 <translation id="6136914049981179737">Sekunde chache</translation>
 <translation id="6144589619057374135">Fungua ${url} katika Hali Fiche</translation>
-<translation id="616831107264507309">Soma baadaye</translation>
 <translation id="6177442314419606057">Tafuta katika Chrome</translation>
 <translation id="6184086493125982861">Onyesha Vichupo</translation>
 <translation id="6187302354554850004">Ilisawazishwa mara ya mwisho: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Ili uwashe kipengele cha Kuvinjari Salama, fungua <ph name="BEGIN_LINK" />Huduma za Google<ph name="END_LINK" /> na uguse Kuvinjari Salama.</translation>
 <translation id="6303969859164067831">Ondoka kwenye akaunti na uzime usawazishaji</translation>
 <translation id="6308436439357671616">Hii hukuwezesha kupiga na kupakia picha.</translation>
+<translation id="6321526113093607004">Ongeza kwenye Alamisho</translation>
 <translation id="6324528485781869530">Badilisha Akaunti ya Usawazishaji</translation>
 <translation id="6324669097367352121">Ingia kwenye mipangilio</translation>
 <translation id="6337234675334993532">Usimbaji fiche</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Imeshindwa Kupakua</translation>
 <translation id="7859704718976024901">Historia ya Kuvinjari</translation>
 <translation id="7887198238286927132">Ili kulinda faragha yako, Chrome haitajaza kiotomatiki sehemu hii.</translation>
-<translation id="7918293828610777738">Orodha yako ya kusoma inapatikana nje ya mtandao. Ili uongeze ukurasa kwenye orodha yako ya kusoma, gusa <ph name="SHARE_OPENING_ICON" /> kisha <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Hamisha Manenosiri...</translation>
 <translation id="7947953824732555851">Kubali na uingie</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
index 432f4768..fd8d022 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ta.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">குறி…</translation>
 <translation id="3131206671572504478">அனைத்தையும் தடு</translation>
 <translation id="3153862085237805241">கார்டைச் சேமிக்கும்</translation>
+<translation id="3157387275655328056">வாசிப்புப் பட்டியலில் சேர்</translation>
 <translation id="3157684681743766797">அனைத்தையும் குறி…</translation>
 <translation id="3161291298470460782">இதைச் செய்தால் வெளியேற்றப்படுவீர்கள், ஒத்திசைவு முடக்கப்படும், இந்தச் சாதனத்திலிருந்து Chrome தரவு அனைத்தும் அழிக்கப்படும். ஏற்கெனவே ஒத்திசைக்கப்பட்ட தரவு தொடர்ந்து உங்கள் Google கணக்கிலேயே இருக்கும்.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">குக்கீகளுக்கான உங்கள் அமைப்பு அனைத்துத் தாவல்களுக்கும் பொருந்தும். திறந்திருக்கும் தாவலை புதிய அமைப்புக்கு உட்படுத்த, அதை ரெஃப்ரெஷ் செய்யவும்.</translation>
 <translation id="5190835502935405962">புக்மார்க் பட்டி</translation>
 <translation id="5197255632782567636">இணையம்</translation>
+<translation id="5210365745912300556">தாவலை மூடுக</translation>
 <translation id="5228579091201413441">ஒத்திசைவை இயக்கு</translation>
 <translation id="5234764350956374838">நிராகரி</translation>
 <translation id="5245322853195994030">ஒத்திசைவை ரத்துசெய்</translation>
@@ -446,6 +448,7 @@
 <translation id="5782227691023083829">மொழிபெயர்க்கிறது...</translation>
 <translation id="5803566855766646066">இந்தப் புதிய கார்டை நிராகரிக்க வேண்டுமா?</translation>
 <translation id="5816228676161003208">இதன் மூலம் உங்கள் குரலைப் பயன்படுத்தி வேகமாகத் தேடலாம்.</translation>
+<translation id="581659025233126501">ஒத்திசைவை இயக்கு</translation>
 <translation id="5819208479324046259"><ph name="MANAGER" /> நிர்வகிக்கிறது. <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></translation>
 <translation id="5846482154967366008">தேடல் இன்ஜின்</translation>
 <translation id="5854790677617711513">30 நாட்களுக்கு முந்தையவை</translation>
@@ -485,7 +488,6 @@
 <translation id="6127379762771434464">உருப்படி அகற்றப்பட்டது</translation>
 <translation id="6136914049981179737">வினாடிகள் முன்பு</translation>
 <translation id="6144589619057374135">${url} இணைப்பை மறைநிலையில் திற</translation>
-<translation id="616831107264507309">பின்னர் படிக்க</translation>
 <translation id="6177442314419606057">Chromeமில் தேடு</translation>
 <translation id="6184086493125982861">தாவல்களைக் காண்பி</translation>
 <translation id="6187302354554850004">கடைசியாக ஒத்திசைத்தது: <ph name="LAST_USED_TIME" /></translation>
@@ -493,12 +495,14 @@
 <translation id="6196207969502475924">குரல் தேடல்</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} தாவலை மூடுக}other{{COUNT} தாவல்களை மூடுக}}</translation>
 <translation id="6219688215832490856">எப்போதும் மொழிபெயர்க்க வேண்டாம்</translation>
+<translation id="6223816392543092032">உங்கள் புக்மார்க்குகள், வரலாறு, கடவுச்சொற்கள் மற்றும் பிற அமைப்புகளை உங்கள் சாதனங்கள் அனைத்திலும் பெறலாம்.</translation>
 <translation id="6254066287920239840">உலாவியில் திறப்பதற்குப் பதிலாக இணைப்புகளைப் பயன்பாட்டில் திற.</translation>
 <translation id="6255097610484507482">கடன் அட்டையைத் திருத்துக</translation>
 <translation id="6284652193729350524"><ph name="LANGUAGE" /> க்கு மொழிபெயர்</translation>
 <translation id="6293101329759844770">’பாதுகாப்பு உலாவலை’ இயக்க, <ph name="BEGIN_LINK" />Google சேவைகள்<ph name="END_LINK" /> என்பதைத் திறந்து ’பாதுகாப்பு உலாவல்’ என்பதைத் தட்டவும்.</translation>
 <translation id="6303969859164067831">வெளியேறி ஒத்திசைவை முடக்கு</translation>
 <translation id="6308436439357671616">இதன் மூலம் படங்களை எடுத்துப் பதிவேற்றலாம்.</translation>
+<translation id="6321526113093607004">புக்மார்க்குகளில் சேர்</translation>
 <translation id="6324528485781869530">ஒத்திசைவுக் கணக்கை மாற்றவும்</translation>
 <translation id="6324669097367352121">உள்நுழைவு அமைப்புகள்</translation>
 <translation id="6337234675334993532">என்க்ரிப்ஷன்</translation>
@@ -525,6 +529,7 @@
 <translation id="6445981559479772097">செய்தி அனுப்பப்பட்டது.</translation>
 <translation id="6447842834002726250">குக்கீகள்</translation>
 <translation id="6453018583485750254">இதுவரை சரிபார்ப்பு இயக்கப்படவில்லை.</translation>
+<translation id="6459307836338400162">தனியுரிமை, பாதுகாப்பு, தரவுச் சேகரிப்பு ஆகியவை தொடர்பான கூடுதல் அமைப்புகளுக்கு <ph name="BEGIN_LINK" />ஒத்திசைவு<ph name="END_LINK" />, <ph name="BEGIN_LINK" />Google சேவைகள்<ph name="END_LINK" /> ஆகிய இரண்டு அமைப்புகளுக்கும் செல்லவும்.</translation>
 <translation id="6464071786529933911">புதிய மறைநிலைத் தாவலில் திற</translation>
 <translation id="6464397691496239022">உங்கள் உலாவல் அனுபவத்தை மேம்படுத்துவதற்காக (எ.கா., உங்களை உள்நுழைந்தபடியே வைத்திருப்பது, உங்கள் ஷாப்பிங் கார்ட்டில் உள்ளவற்றை நினைவில் கொள்வது போன்றவை) குக்கீகளைத் தளங்கள் பயன்படுத்த முடியும்.
 
@@ -669,7 +674,6 @@
 <translation id="7856733331829174190">பதிவிறக்க முடியவில்லை</translation>
 <translation id="7859704718976024901">உலாவல் வரலாறு</translation>
 <translation id="7887198238286927132">உங்கள் தனியுரிமையைப் பாதுகாக்க, Chrome இந்தப் புலத்தைத் தானாக நிரப்பாது.</translation>
-<translation id="7918293828610777738">உங்கள் வாசிப்புப் பட்டியலை ஆஃப்லைனில் அணுகலாம். வாசிப்புப் பட்டியலில் ஒரு பக்கத்தைச் சேர்க்க, <ph name="SHARE_OPENING_ICON" /> ஐகானைத் தட்டிய பின்னர் <ph name="READ_LATER_TEXT" /> என்பதைத் தட்டவும்.</translation>
 <translation id="7938254975914653459">ஃபேஸ்டைம்</translation>
 <translation id="7939128259257418052">கடவுச்சொற்களை ஏற்று...</translation>
 <translation id="7947953824732555851">ஏற்று உள்நுழைக</translation>
@@ -708,6 +712,7 @@
 <translation id="8281886186245836920">தவிர்</translation>
 <translation id="8283172974887967105">அமை…</translation>
 <translation id="8299417921174340354">கடவுச்சொற்களைப் பயன்படுத்த முதலில் உங்கள் சாதனத்தில் கடவுக்குறியீட்டை அமைக்க வேண்டும்.</translation>
+<translation id="83100941411593607">உள்நுழைவு முடக்கப்பட்டுள்ளது</translation>
 <translation id="8319076807703933069">புதிய தேடல்</translation>
 <translation id="8323906514956095947">கூடுதல் தாவல் விருப்பத்தேர்வுகளுக்குத் தொட்டுப் பிடிக்கவும்</translation>
 <translation id="8328777765163860529">எல்லாவற்றையும் மூடு</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb
index fbe2c2a..ca47a31 100644
--- a/ios/chrome/app/strings/resources/ios_strings_te.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">గుర్తు పెట్టు…</translation>
 <translation id="3131206671572504478">అన్నీ బ్లాక్ చేయి</translation>
 <translation id="3153862085237805241">కార్డ్‌ను సేవ్ చేయండి</translation>
+<translation id="3157387275655328056">పఠన జాబితాకు జోడించు</translation>
 <translation id="3157684681743766797">అన్నీ గుర్తు పెట్టు…</translation>
 <translation id="3161291298470460782">ఇది మిమ్మల్ని సైన్ అవుట్ చేస్తుంది, సింక్‌ను ఆఫ్ చేస్తుంది, ఈ పరికరం నుండి మొత్తం Chrome డేటాను క్లియర్ చేస్తుంది. మీ సింక్ చేయబడిన డేటా మీ Google ఖాతాలోనే ఉండిపోతుంది.</translation>
 <translation id="3169472444629675720">కనుగొను</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">మీ కుక్కీల సెట్టింగ్ అన్ని ట్యాబ్‌లకు వర్తిస్తుంది. తెరిచి ఉన్న ట్యాబ్‌కు కొత్త సెట్టింగ్ వర్తించాలంటే, ట్యాబ్‌ను రీలోడ్ చేయండి.</translation>
 <translation id="5190835502935405962">బుక్‌మార్క్‌ల బార్</translation>
 <translation id="5197255632782567636">ఇంటర్నెట్</translation>
+<translation id="5210365745912300556">ట్యాబ్‌ను మూసివేయి</translation>
 <translation id="5228579091201413441">సమకాలీకరణను ప్రారంభించండి</translation>
 <translation id="5234764350956374838">తొలగించు</translation>
 <translation id="5245322853195994030">సింక్‌ను రద్దు చేయి</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">అంశాన్ని తీసివేసారు</translation>
 <translation id="6136914049981179737">సెకన్ల క్రితం</translation>
 <translation id="6144589619057374135">${url}ను అజ్ఞాత మోడ్‌లో తెరవండి</translation>
-<translation id="616831107264507309">తర్వాత చదవండి</translation>
 <translation id="6177442314419606057">Chromeలో వెతకండి</translation>
 <translation id="6184086493125982861">ట్యాబ్‌లను చూపించు</translation>
 <translation id="6187302354554850004">చివరగా సమకాలీకరించింది: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">సురక్షిత బ్రౌజింగ్ ఆన్ చేయడానికి, <ph name="BEGIN_LINK" />Google సర్వీస్‌ల<ph name="END_LINK" />ను తెరిచి, 'సురక్షిత బ్రౌజింగ్'ను ట్యాప్ చేయండి.</translation>
 <translation id="6303969859164067831">సైన్ అవుట్ చేసి, సమకాలీకరణను ఆఫ్ చేయండి</translation>
 <translation id="6308436439357671616">దీని వలన మీరు ఫోటోలను తీసి, అప్‌లోడ్ చేయగలుగుతారు.</translation>
+<translation id="6321526113093607004">బుక్‌మార్క్‌లకు జోడించు</translation>
 <translation id="6324528485781869530">సింక్‌ ఖాతాను మార్చండి</translation>
 <translation id="6324669097367352121">సైన్ ఇన్ సెట్టింగ్‌లు</translation>
 <translation id="6337234675334993532">ఎన్‌క్రిప్షన్</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">డౌన్‌లోడ్ సాధ్యపడలేదు</translation>
 <translation id="7859704718976024901">బ్రౌజింగ్ హిస్టరీ</translation>
 <translation id="7887198238286927132">మీ గోప్యతను సంరక్షించడానికి, Chrome ఈ ఫీల్డ్‌ను ఆటోమేటిక్‌గా పూరించదు.</translation>
-<translation id="7918293828610777738">మీ చదవాల్సిన జాబితా ఆఫ్‌లైన్‌లో అందుబాటులో ఉంది. మీ చదవాల్సిన జాబితాకు పేజీని జోడించడానికి, <ph name="SHARE_OPENING_ICON" />ని నొక్కి తర్వాత <ph name="READ_LATER_TEXT" /> ఎంపికను నొక్కండి.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">పాస్‌వర్డ్‌లను ఎగుమతి చేయి...</translation>
 <translation id="7947953824732555851">ఆమోదించి, సైన్ ఇన్ చేయండి</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_th.xtb b/ios/chrome/app/strings/resources/ios_strings_th.xtb
index ce6f782..f0cfde7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_th.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_th.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">ทำเครื่องหมาย…</translation>
 <translation id="3131206671572504478">บล็อกทั้งหมด</translation>
 <translation id="3153862085237805241">บันทึกบัตร</translation>
+<translation id="3157387275655328056">เพิ่มไปยังเรื่องรออ่าน</translation>
 <translation id="3157684681743766797">ทำเครื่องหมายทั้งหมด…</translation>
 <translation id="3161291298470460782">การดำเนินการนี้จะนำคุณออกจากระบบ ปิดการซิงค์ และล้างข้อมูล Chrome ทั้งหมดในอุปกรณ์นี้ แต่ข้อมูลที่ซิงค์ไว้จะยังอยู่ในบัญชี Google</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">การตั้งค่าคุกกี้จะมีผลกับทุกแท็บ โหลดแท็บซ้ำเพื่อให้การตั้งค่าใหม่มีผลกับแท็บที่เปิดอยู่</translation>
 <translation id="5190835502935405962">แถบบุ๊กมาร์ก</translation>
 <translation id="5197255632782567636">อินเทอร์เน็ต</translation>
+<translation id="5210365745912300556">ปิดแท็บ</translation>
 <translation id="5228579091201413441">เปิดใช้การซิงค์</translation>
 <translation id="5234764350956374838">ปิด</translation>
 <translation id="5245322853195994030">ยกเลิกการซิงค์</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">นำรายการออกแล้ว</translation>
 <translation id="6136914049981179737">วินาทีแล้ว</translation>
 <translation id="6144589619057374135">เปิด ${url} ในโหมดไม่ระบุตัวตน</translation>
-<translation id="616831107264507309">อ่านในภายหลัง</translation>
 <translation id="6177442314419606057">ค้นหาใน Chrome</translation>
 <translation id="6184086493125982861">แสดงแท็บ</translation>
 <translation id="6187302354554850004">ซิงค์ครั้งล่าสุด: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">หากต้องการเปิด Google Safe Browsing ให้เปิด<ph name="BEGIN_LINK" />บริการของ Google<ph name="END_LINK" /> จากนั้นแตะ Google Safe Browsing</translation>
 <translation id="6303969859164067831">ออกจากระบบและปิดการซิงค์</translation>
 <translation id="6308436439357671616">ช่วยให้คุณถ่ายและอัปโหลดรูปภาพได้</translation>
+<translation id="6321526113093607004">เพิ่มลงในบุ๊กมาร์ก</translation>
 <translation id="6324528485781869530">เปลี่ยนบัญชีที่จะซิงค์</translation>
 <translation id="6324669097367352121">ตั้งค่าลงชื่อเข้าใช้</translation>
 <translation id="6337234675334993532">การเข้ารหัส</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">ดาวน์โหลดไม่ได้</translation>
 <translation id="7859704718976024901">ประวัติการเข้าชม</translation>
 <translation id="7887198238286927132">Chrome จะไม่ป้อนข้อความลงในช่องนี้โดยอัตโนมัติเพื่อปกป้องความเป็นส่วนตัวของคุณ</translation>
-<translation id="7918293828610777738">เรื่องรออ่านของคุณพร้อมใช้งานในแบบออฟไลน์ หากต้องการเพิ่มหน้าลงในเรื่องรออ่าน ให้แตะ <ph name="SHARE_OPENING_ICON" /> แล้วแตะ "<ph name="READ_LATER_TEXT" />"</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">ส่งออกรหัสผ่าน...</translation>
 <translation id="7947953824732555851">ยอมรับและลงชื่อเข้าใช้</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
index 8e3df9b..c9bdd95 100644
--- a/ios/chrome/app/strings/resources/ios_strings_tr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">İşaretle…</translation>
 <translation id="3131206671572504478">Tümünü Engelle</translation>
 <translation id="3153862085237805241">Kartı Kaydet</translation>
+<translation id="3157387275655328056">Okuma Listesine Ekle</translation>
 <translation id="3157684681743766797">Tümünü İşaretle…</translation>
 <translation id="3161291298470460782">Bu işlem, oturumunuzun ve senkronizasyonun kapatılmasını, ayrıca tüm Chrome verilerinin bu cihazdan temizlenmesini sağlayacak. Senkronize edilmiş verileriniz Google Hesabınızda kalmaya devam edecek.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Çerez ayarlarınız tüm sekmelere uygulanır. Açık bir sekmeye yeni bir ayar uygulamak için sekmeyi yeniden yükleyin.</translation>
 <translation id="5190835502935405962">Yer İşareti Çubuğu</translation>
 <translation id="5197255632782567636">İnternet</translation>
+<translation id="5210365745912300556">Sekmeyi kapat</translation>
 <translation id="5228579091201413441">Senkronizasyonu etkinleştir</translation>
 <translation id="5234764350956374838">Kapat</translation>
 <translation id="5245322853195994030">Senkronizasyonu iptal et</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Öğe kaldırıldı</translation>
 <translation id="6136914049981179737">Sn. önce</translation>
 <translation id="6144589619057374135">Şunu Gizli modda aç: ${url}</translation>
-<translation id="616831107264507309">Daha Sonra Oku</translation>
 <translation id="6177442314419606057">Chrome'da ara</translation>
 <translation id="6184086493125982861">Sekmeleri Göster</translation>
 <translation id="6187302354554850004">Son senkronizasyon tarihi: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Güvenli Tarama'yı etkinleştirmek için <ph name="BEGIN_LINK" />Google Hizmetleri<ph name="END_LINK" />'ni açıp Güvenli Tarama'ya dokunun.</translation>
 <translation id="6303969859164067831">Oturumu ve senkronizasyonu kapat</translation>
 <translation id="6308436439357671616">Böylece, fotoğraf çekebilir ve yükleyebilirsiniz.</translation>
+<translation id="6321526113093607004">Yer İşaretlerine Ekle</translation>
 <translation id="6324528485781869530">Senkronizasyon Hesabını Değiştir</translation>
 <translation id="6324669097367352121">Oturum açma ayarları</translation>
 <translation id="6337234675334993532">Şifreleme</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">İndirilemedi</translation>
 <translation id="7859704718976024901">Tarama Geçmişi</translation>
 <translation id="7887198238286927132">Gizliliğinizi korumak için Chrome bu alanı otomatik olarak doldurmayacaktır.</translation>
-<translation id="7918293828610777738">Okuma listeniz çevrimdışı olarak kullanılabilir. Okuma listenize sayfa eklemek için önce <ph name="SHARE_OPENING_ICON" />, ardından <ph name="READ_LATER_TEXT" /> öğesine dokunun.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Şifreleri Dışa Aktar...</translation>
 <translation id="7947953824732555851">Kabul et ve oturum aç</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uk.xtb b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
index 81940d6bf..3c74763 100644
--- a/ios/chrome/app/strings/resources/ios_strings_uk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Позначити…</translation>
 <translation id="3131206671572504478">Заблокувати всі</translation>
 <translation id="3153862085237805241">Зберегти картку</translation>
+<translation id="3157387275655328056">Додати в список читання</translation>
 <translation id="3157684681743766797">Позначити всі…</translation>
 <translation id="3161291298470460782">Ваш сеанс в обліковому записі буде завершено, синхронізацію – вимкнено, а всі дані Chrome на пристрої – видалено. Синхронізовані дані залишаться у вашому обліковому записі Google.</translation>
 <translation id="3169472444629675720">Рекомендації</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Налаштування файлів cookie застосовується до всіх вкладок. Щоб застосувати його до відкритої вкладки, оновіть її.</translation>
 <translation id="5190835502935405962">Панель закладок</translation>
 <translation id="5197255632782567636">Інтернет</translation>
+<translation id="5210365745912300556">Закрити вкладку</translation>
 <translation id="5228579091201413441">Увімкнути синхронізацію</translation>
 <translation id="5234764350956374838">Закрити</translation>
 <translation id="5245322853195994030">Скасувати синхронізацію</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Веб-сайт видалено</translation>
 <translation id="6136914049981179737">Мить тому</translation>
 <translation id="6144589619057374135">Відкрити URL-адресу ${url} в анонімному режимі</translation>
-<translation id="616831107264507309">Читати пізніше</translation>
 <translation id="6177442314419606057">Пошук у Chrome</translation>
 <translation id="6184086493125982861">Показати вкладки</translation>
 <translation id="6187302354554850004">Востаннє синхрон.: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Щоб увімкнути Безпечний перегляд, відкрийте параметр <ph name="BEGIN_LINK" />Сервіси Google<ph name="END_LINK" /> і натисніть "Безпечний перегляд".</translation>
 <translation id="6303969859164067831">Вийти й вимкнути синхронізацію</translation>
 <translation id="6308436439357671616">Ви зможете робити й завантажувати фотографії.</translation>
+<translation id="6321526113093607004">Додати в закладки</translation>
 <translation id="6324528485781869530">Змінити обліковий запис для синхронізації</translation>
 <translation id="6324669097367352121">Налаштування входу</translation>
 <translation id="6337234675334993532">Шифрування</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Не вдалося завантажити</translation>
 <translation id="7859704718976024901">Історія веб-перегляду</translation>
 <translation id="7887198238286927132">Щоб захистити вашу конфіденційність, Chrome не буде автоматично заповнювати це поле.</translation>
-<translation id="7918293828610777738">Ваш список читання доступний офлайн. Щоб додати до нього сторінку, торкніться значка <ph name="SHARE_OPENING_ICON" /> й виберіть <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Експортувати паролі…</translation>
 <translation id="7947953824732555851">Прийняти й увійти</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ur.xtb b/ios/chrome/app/strings/resources/ios_strings_ur.xtb
index 64cd50e..646959f3 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ur.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ur.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">نشان زد کریں…</translation>
 <translation id="3131206671572504478">سبھی کو مسدود کریں</translation>
 <translation id="3153862085237805241">کارڈ محفوظ کریں</translation>
+<translation id="3157387275655328056">پڑھنے کی فہرست میں شامل کریں</translation>
 <translation id="3157684681743766797">سبھی کو نشان زد کریں…</translation>
 <translation id="3161291298470460782">‏یہ آپ کو سائن آؤٹ، مطابقت پذیری کو آف اور اس آلہ سے تمام Chrome ڈیٹا کو صاف کر دے گا۔ آپ کا مطابقت پذیر ڈیٹا آپ کے Google اکاؤنٹ میں رہے گا۔</translation>
 <translation id="3169472444629675720">دریافت کریں</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">آپ کی کوکیز کی ترتیب سبھی ٹیبز پر لاگو ہوتی ہے۔ ایک کھلے ٹیب پر نئی ترتیب لاگو کرنے کیلئے، ٹیب کو دوبارہ لوڈ کریں۔</translation>
 <translation id="5190835502935405962">بُک مارکس بار</translation>
 <translation id="5197255632782567636">انٹرنیٹ</translation>
+<translation id="5210365745912300556">ٹیب بند کریں</translation>
 <translation id="5228579091201413441">مطابقت پذیری فعال کریں</translation>
 <translation id="5234764350956374838">برخاست کریں</translation>
 <translation id="5245322853195994030">مطابقت پذیری منسوخ کریں</translation>
@@ -446,6 +448,7 @@
 <translation id="5782227691023083829">ترجمہ کیا جا رہا ہے...</translation>
 <translation id="5803566855766646066">کیا آپ واقعی اس نئے کارڈ کو مسترد کرنا چاہتے ہیں؟</translation>
 <translation id="5816228676161003208">یہ آپ کو اپنی آواز کا استعمال کر کے زیادہ تیزی سے تلاش کرنے دیتا ہے۔</translation>
+<translation id="581659025233126501">مطابقت پذیری آن کریں</translation>
 <translation id="5819208479324046259"><ph name="MANAGER" /> نظم کرتا ہے۔ <ph name="BEGIN_LINK" />مزید جانیں<ph name="END_LINK" /></translation>
 <translation id="5846482154967366008">تلاش انجن</translation>
 <translation id="5854790677617711513">30 دن سے زیادہ پرانا</translation>
@@ -485,7 +488,6 @@
 <translation id="6127379762771434464">آئٹم ہٹا دیا گیا</translation>
 <translation id="6136914049981179737">کچھ سیکنڈ پہلے</translation>
 <translation id="6144589619057374135">‏پوشیدگی میں {url}$ کھولیں</translation>
-<translation id="616831107264507309">بعد میں پڑھیں</translation>
 <translation id="6177442314419606057">‏Chrome میں تلاش کریں</translation>
 <translation id="6184086493125982861">ٹیبز دکھائیں</translation>
 <translation id="6187302354554850004">آخری مطابقت پذیری: <ph name="LAST_USED_TIME" /></translation>
@@ -493,12 +495,14 @@
 <translation id="6196207969502475924">صوتی تلاش</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} ٹیب بند کریں}other{{COUNT} ٹیبز بند کریں}}</translation>
 <translation id="6219688215832490856">کبھی بھی ترجمہ نہ کریں</translation>
+<translation id="6223816392543092032">اپنے سبھی آلات پر اپنے بُک مارکس، سرگزشت، پاس ورڈز اور دیگر ترتیبات حاصل کریں۔</translation>
 <translation id="6254066287920239840">براؤزر کی بجائے لنکس کو ایپ میں کھولیں۔</translation>
 <translation id="6255097610484507482">کریڈٹ کارڈ میں ترمیم کریں</translation>
 <translation id="6284652193729350524"><ph name="LANGUAGE" /> کا ترجمہ کرنے کی پیشکش کریں</translation>
 <translation id="6293101329759844770">‏محفوظ براؤزنگ کو آن کرنے کے لیے، <ph name="BEGIN_LINK" />Google سروسز<ph name="END_LINK" /> کھولیں اور محفوظ براؤزنگ پر تھپتھپائیں۔</translation>
 <translation id="6303969859164067831">سائن آؤٹ کریں اور مطابقت پذیری آف کریں</translation>
 <translation id="6308436439357671616">یہ آپ کو تصاویر لینے اور اپ لوڈ کرنے دیتا ہے۔</translation>
+<translation id="6321526113093607004">بُک مارکس میں شامل کریں</translation>
 <translation id="6324528485781869530">مطابقت پذیری اکاؤنٹ کو سوئچ کریں</translation>
 <translation id="6324669097367352121">سائن ان کی ترتیبات</translation>
 <translation id="6337234675334993532">مرموزکاری</translation>
@@ -525,6 +529,7 @@
 <translation id="6445981559479772097">پیغام بھیج دیا گیا۔</translation>
 <translation id="6447842834002726250">کوکیز</translation>
 <translation id="6453018583485750254">چیک کبھی نہیں چلتا ہے۔</translation>
+<translation id="6459307836338400162">‏رازداری، سیکیورٹی اور ڈیٹا جمع کرنے سے متعلق مزید ترتیبات کے لیے، <ph name="BEGIN_LINK" />مطابقت پذیری<ph name="END_LINK" /> اور <ph name="BEGIN_LINK" />Google سروسز<ph name="END_LINK" /> دونوں دیکھیں۔</translation>
 <translation id="6464071786529933911">نئے پوشیدگی ٹیب میں کھولیں</translation>
 <translation id="6464397691496239022">سائٹس آپ کے براؤزنگ کے تجربہ کو بہتر بنانے کے لیے کوکیز کا استعمال کر سکتی ہیں، مثال کے طور پر آپ کو سائن ان رکھنا یا آپ کی شاپنگ کارٹ میں آئٹمز کو یاد رکھنا۔
 
@@ -669,7 +674,6 @@
 <translation id="7856733331829174190">ڈاؤن لوڈ نہیں ہو سکی</translation>
 <translation id="7859704718976024901">براؤزنگ سرگزشت</translation>
 <translation id="7887198238286927132">‏آپ کی رازداری کے تحفظ کے لیے، Chrome اس فیلڈ کو آٹو فل نہیں کرے گا۔</translation>
-<translation id="7918293828610777738">آپ کی پڑھنے کی فہرست آف لائن دستیاب ہے۔ اپنی پڑھنے کی فہرست میں صفحہ شامل کرنے کیلئے، پہلے <ph name="SHARE_OPENING_ICON" /> پھر <ph name="READ_LATER_TEXT" /> کو تھپتھپائیں۔</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">پاس ورڈز برآمد کریں...</translation>
 <translation id="7947953824732555851">قبول و سائن ان کریں</translation>
@@ -708,6 +712,7 @@
 <translation id="8281886186245836920">نظر انداز کریں</translation>
 <translation id="8283172974887967105">سیٹ کریں…</translation>
 <translation id="8299417921174340354">پاس ورڈز استعمال کرنے کے ليے، آپ کو اپنے آلے پر پہلے پاس کوڈ سیٹ کرنا ہوگا۔</translation>
+<translation id="83100941411593607">سائن ان کی خصوصیت غیر فعال ہے</translation>
 <translation id="8319076807703933069">نئی تلاش</translation>
 <translation id="8323906514956095947">ٹیب کے مزید اختیارات کیلئے ٹچ کریں اور دبائے رکھیں</translation>
 <translation id="8328777765163860529">تمام بند کریں</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
index b0feb7a..2c0a1fb 100644
--- a/ios/chrome/app/strings/resources/ios_strings_uz.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Belgilash…</translation>
 <translation id="3131206671572504478">Hammasini bloklash</translation>
 <translation id="3153862085237805241">Bildirgini saqlash</translation>
+<translation id="3157387275655328056">Mutolaa ro‘yxatiga qo‘shish</translation>
 <translation id="3157684681743766797">Hammasini belgilash…</translation>
 <translation id="3161291298470460782">Bu hisobingizdan chiqarib, sinxronizatsiyani faolsizlantiradi va bu qurilmadagi barcha Chrome maʼlumotlaringizni tozalab tashlaydi. Google hisobingizga sinxronlangan maʼlumotlaringiz joyida qoladi.</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Cookie sozlamalaringiz barcha varaqlarga tadbiq qilinadi. Yangi sozlamani tadbiq qilish uchun, varaqni ochib, uni yangilang.</translation>
 <translation id="5190835502935405962">Xatcho‘plar paneli</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Tabni yopish</translation>
 <translation id="5228579091201413441">Sinxronlashni yoqish</translation>
 <translation id="5234764350956374838">Yopish</translation>
 <translation id="5245322853195994030">Sinxronizatsiyani bekor qilish</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Havola o‘chirildi</translation>
 <translation id="6136914049981179737">Yaqinda</translation>
 <translation id="6144589619057374135">${url} sahifasini Inkognito rejimida ochish</translation>
-<translation id="616831107264507309">Keyinroq o‘qish</translation>
 <translation id="6177442314419606057">Chromedan qidirish</translation>
 <translation id="6184086493125982861">Tablarni ko‘rsatish</translation>
 <translation id="6187302354554850004">Oxirgi sinxronizatsiya: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Saytlarni xavfsiz kezish rejimini yoqish uchun <ph name="BEGIN_LINK" />Google xizmatlari<ph name="END_LINK" /> bandini oching va Saytlarni xavfsiz kezish ustiga bosing.</translation>
 <translation id="6303969859164067831">Hisobdan chiqish va sinxronizatsiyani to‘xtatish</translation>
 <translation id="6308436439357671616">Suratga olish va rasmlaringizni internetga yuklash imkonini beradi.</translation>
+<translation id="6321526113093607004">Bukmarklash</translation>
 <translation id="6324528485781869530">Hisobni almashtirish</translation>
 <translation id="6324669097367352121">Kirish sozlamalari</translation>
 <translation id="6337234675334993532">Shifrlash</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Yuklab olinmadi</translation>
 <translation id="7859704718976024901">Veb-sahifalarni ko‘rish tarixi</translation>
 <translation id="7887198238286927132">Maxfiyligingizni muhofaza qilish uchun Chrome axborotlarni bu maydonga kiritmaydi.</translation>
-<translation id="7918293828610777738">Endi oflaynda ham mutolaa qilishingiz mumkin. Biror sahifani saqlab olish uchun <ph name="SHARE_OPENING_ICON" /> ustiga bosib, <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Parollarni eksport qilish...</translation>
 <translation id="7947953824732555851">Qabul qilish va kirish</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
index 251437a3..9d0f7f3 100644
--- a/ios/chrome/app/strings/resources/ios_strings_vi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Đánh dấu...</translation>
 <translation id="3131206671572504478">Chặn tất cả</translation>
 <translation id="3153862085237805241">Lưu thẻ</translation>
+<translation id="3157387275655328056">Thêm vào Danh sách đọc</translation>
 <translation id="3157684681743766797">Đánh dấu tất cả...</translation>
 <translation id="3161291298470460782">Thao tác này sẽ khiến bạn bị đăng xuất, tắt tính năng đồng bộ hóa và xóa tất cả dữ liệu trên Chrome khỏi thiết bị này. Dữ liệu đã đồng bộ hóa của bạn sẽ vẫn ở trong Tài khoản Google của bạn.</translation>
 <translation id="3169472444629675720">Khám phá</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Tùy chọn cài đặt cookie của bạn sẽ áp dụng cho mọi thẻ. Để áp dụng một tùy chọn cài đặt mới cho một thẻ đang mở, hãy tải lại thẻ đó.</translation>
 <translation id="5190835502935405962">Thanh Dấu trang</translation>
 <translation id="5197255632782567636">Internet</translation>
+<translation id="5210365745912300556">Đóng thẻ</translation>
 <translation id="5228579091201413441">Bật đồng bộ hóa</translation>
 <translation id="5234764350956374838">Bỏ qua</translation>
 <translation id="5245322853195994030">Hủy đồng bộ hóa</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Đã xóa mục</translation>
 <translation id="6136914049981179737">Giây trước</translation>
 <translation id="6144589619057374135">Mở ${url} ở Chế độ ẩn danh</translation>
-<translation id="616831107264507309">Đọc sau</translation>
 <translation id="6177442314419606057">Tìm kiếm trong Chrome</translation>
 <translation id="6184086493125982861">Hiển thị thẻ</translation>
 <translation id="6187302354554850004">Đồng bộ hóa lần gần đây nhất: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Để bật tính năng Duyệt web an toàn, hãy mở <ph name="BEGIN_LINK" />Các dịch vụ của Google<ph name="END_LINK" /> rồi nhấn vào Duyệt web an toàn.</translation>
 <translation id="6303969859164067831">Đăng xuất và tắt đồng bộ hóa</translation>
 <translation id="6308436439357671616">Điều này cho phép bạn chụp và tải ảnh lên.</translation>
+<translation id="6321526113093607004">Thêm vào Dấu trang</translation>
 <translation id="6324528485781869530">Chuyển đổi tài khoản đồng bộ hóa</translation>
 <translation id="6324669097367352121">Cài đặt đăng nhập</translation>
 <translation id="6337234675334993532">Mã hóa</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Không thể tải xuống</translation>
 <translation id="7859704718976024901">Lịch sử duyệt web</translation>
 <translation id="7887198238286927132">Để bảo vệ quyền riêng tư của bạn, Chrome sẽ không tự động điền trường này.</translation>
-<translation id="7918293828610777738">Danh sách đọc của bạn vẫn dùng được khi không có mạng. Để thêm một trang vào danh sách đọc, hãy nhấn vào biểu tượng <ph name="SHARE_OPENING_ICON" /> rồi nhấn vào <ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Xuất mật khẩu...</translation>
 <translation id="7947953824732555851">Chấp nhận &amp; đăng nhập</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
index 5538d22..bc4b50ac 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">标为…</translation>
 <translation id="3131206671572504478">阻止所有 Cookie</translation>
 <translation id="3153862085237805241">保存卡片</translation>
+<translation id="3157387275655328056">添加到阅读清单</translation>
 <translation id="3157684681743766797">全部标为…</translation>
 <translation id="3161291298470460782">执行此操作会使您退出帐号、关闭同步功能并清除此设备中的所有 Chrome 数据,但已同步的数据仍会保留在您的 Google 帐号中。</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">您的 Cookie 设置适用于所有标签页。若要对某个已打开的标签页应用新设置,请重新加载该标签页。</translation>
 <translation id="5190835502935405962">书签栏</translation>
 <translation id="5197255632782567636">互联网</translation>
+<translation id="5210365745912300556">关闭标签页</translation>
 <translation id="5228579091201413441">启用同步功能</translation>
 <translation id="5234764350956374838">关闭</translation>
 <translation id="5245322853195994030">取消同步</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">该项已移除</translation>
 <translation id="6136914049981179737">几秒前</translation>
 <translation id="6144589619057374135">在无痕模式下打开 ${url}</translation>
-<translation id="616831107264507309">稍后阅读</translation>
 <translation id="6177442314419606057">在 Chrome 中搜索</translation>
 <translation id="6184086493125982861">显示标签页</translation>
 <translation id="6187302354554850004">上次同步时间:<ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">如需开启“安全浏览”功能,请打开 <ph name="BEGIN_LINK" />Google 服务<ph name="END_LINK" />,然后点按“安全浏览”。</translation>
 <translation id="6303969859164067831">退出帐号并关闭同步功能</translation>
 <translation id="6308436439357671616">这样,您就可以拍摄并上传照片。</translation>
+<translation id="6321526113093607004">添加到“书签”</translation>
 <translation id="6324528485781869530">切换同步帐号</translation>
 <translation id="6324669097367352121">登录设置</translation>
 <translation id="6337234675334993532">加密</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">无法下载</translation>
 <translation id="7859704718976024901">浏览记录</translation>
 <translation id="7887198238286927132">为保护您的隐私,Chrome 不会自动填充此字段。</translation>
-<translation id="7918293828610777738">您的阅读清单支持离线访问。要将某个网页添加到该清单中,请依次点按 <ph name="SHARE_OPENING_ICON" /> 和“<ph name="READ_LATER_TEXT" />”。</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">导出密码…</translation>
 <translation id="7947953824732555851">接受并登录</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
index 9afcd60d..cdfe19b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">標示…</translation>
 <translation id="3131206671572504478">全部封鎖</translation>
 <translation id="3153862085237805241">儲存付款卡</translation>
+<translation id="3157387275655328056">新增至閱讀清單</translation>
 <translation id="3157684681743766797">標示全部…</translation>
 <translation id="3161291298470460782">此操作會將您登出、關閉同步處理功能,並清除此裝置上的所有 Chrome 資料。但已同步處理的資料會繼續保留在 Google 帳戶中。</translation>
 <translation id="3169472444629675720">探索</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">您的 Cookie 設定會套用至所有分頁。如要為已開啟的分頁套用新設定,請重新載入分頁。</translation>
 <translation id="5190835502935405962">書籤列</translation>
 <translation id="5197255632782567636">互聯網</translation>
+<translation id="5210365745912300556">關閉分頁</translation>
 <translation id="5228579091201413441">啟用同步功能</translation>
 <translation id="5234764350956374838">關閉</translation>
 <translation id="5245322853195994030">取消同步處理</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">項目已移除</translation>
 <translation id="6136914049981179737">幾秒前</translation>
 <translation id="6144589619057374135">在無痕模式中開啟 ${url}</translation>
-<translation id="616831107264507309">稍後閱讀</translation>
 <translation id="6177442314419606057">在 Chrome 中搜尋</translation>
 <translation id="6184086493125982861">顯示分頁</translation>
 <translation id="6187302354554850004">上次同步處理時間:<ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">如要啟用「安全瀏覽」功能,請開啟「<ph name="BEGIN_LINK" />Google 服務<ph name="END_LINK" />」,並輕按 [安全瀏覽]。</translation>
 <translation id="6303969859164067831">登出並停用同步功能</translation>
 <translation id="6308436439357671616">這樣您便可拍攝並上載相片。</translation>
+<translation id="6321526113093607004">新增至「書籤」</translation>
 <translation id="6324528485781869530">切換同步帳戶</translation>
 <translation id="6324669097367352121">登入設定</translation>
 <translation id="6337234675334993532">加密</translation>
@@ -670,7 +672,6 @@
 <translation id="7856733331829174190">無法下載</translation>
 <translation id="7859704718976024901">瀏覽記錄</translation>
 <translation id="7887198238286927132">為保障您的私隱,Chrome 不會自動填入此欄位。</translation>
-<translation id="7918293828610777738">閱讀清單現可供離線瀏覽。如要將網頁加入您的閱讀清單,請輕按 <ph name="SHARE_OPENING_ICON" />,然後輕按 [<ph name="READ_LATER_TEXT" />]。</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">匯出密碼…</translation>
 <translation id="7947953824732555851">接受並登入</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
index 91c8380..297a0e6 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">標示…</translation>
 <translation id="3131206671572504478">全部封鎖</translation>
 <translation id="3153862085237805241">儲存卡片</translation>
+<translation id="3157387275655328056">加入閱讀清單</translation>
 <translation id="3157684681743766797">全部標示…</translation>
 <translation id="3161291298470460782">這項操作會將你登出帳戶、關閉同步功能,並清除這部裝置上的所有 Chrome 資料,但是已同步處理的資料會繼續保留在你的 Google 帳戶中。</translation>
 <translation id="3169472444629675720">Discover</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">你的 Cookie 設定會套用到所有分頁。如要將新的設定套用到已開啟的分頁,請重新載入分頁。</translation>
 <translation id="5190835502935405962">書籤列</translation>
 <translation id="5197255632782567636">網際網路</translation>
+<translation id="5210365745912300556">關閉分頁</translation>
 <translation id="5228579091201413441">啟用同步功能</translation>
 <translation id="5234764350956374838">關閉</translation>
 <translation id="5245322853195994030">取消同步處理</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">已移除項目</translation>
 <translation id="6136914049981179737">幾秒前</translation>
 <translation id="6144589619057374135">在無痕模式中開啟 ${url}</translation>
-<translation id="616831107264507309">稍後閱讀</translation>
 <translation id="6177442314419606057">在 Chrome 中搜尋</translation>
 <translation id="6184086493125982861">顯示分頁</translation>
 <translation id="6187302354554850004">上次同步處理時間:<ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">如要啟用安全瀏覽功能,請開啟 <ph name="BEGIN_LINK" />Google 服務<ph name="END_LINK" />並輕觸 [安全瀏覽]。</translation>
 <translation id="6303969859164067831">登出並關閉同步處理功能</translation>
 <translation id="6308436439357671616">可讓你拍照並上傳相片。</translation>
+<translation id="6321526113093607004">加入書籤</translation>
 <translation id="6324528485781869530">切換同步處理帳戶</translation>
 <translation id="6324669097367352121">登入設定</translation>
 <translation id="6337234675334993532">加密</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">無法下載</translation>
 <translation id="7859704718976024901">瀏覽記錄</translation>
 <translation id="7887198238286927132">為保護個人隱私,Chrome 不會自動填入這個欄位。</translation>
-<translation id="7918293828610777738">閱讀清單可供離線存取。如要將網頁加入閱讀清單,請依序輕觸 <ph name="SHARE_OPENING_ICON" /> &gt; [<ph name="READ_LATER_TEXT" />]。</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">匯出密碼...</translation>
 <translation id="7947953824732555851">接受並登入</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
index b77f4f7..757aff3 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
@@ -204,6 +204,7 @@
 <translation id="3112556859945124369">Maka...</translation>
 <translation id="3131206671572504478">Vimbela konke</translation>
 <translation id="3153862085237805241">Londoloza ikhadi</translation>
+<translation id="3157387275655328056">Engeza kuhlu lokufunda</translation>
 <translation id="3157684681743766797">Maka konke...</translation>
 <translation id="3161291298470460782">Lokhu kuzokukhipha ngemvume, kuvale ukuvumelanisa, futhi kusule yonke idatha ye-Chrome kule divayisi. Idatha yakho evunyelanisiwe izohlala ku-Akhawunti yakho ye-Google.</translation>
 <translation id="3169472444629675720">Zitholele</translation>
@@ -399,6 +400,7 @@
 <translation id="5188482106078495165">Isethingi lamakhukhi wakho lisebenza kuwo wonke amathebhu. Ukuze usebenzise isethingi entsha ukuvula ithebhu, layisha kabusha ithebhu.</translation>
 <translation id="5190835502935405962">Ibha yamabhukhimakhi</translation>
 <translation id="5197255632782567636">I-inthanethi</translation>
+<translation id="5210365745912300556">Vala ithebhu</translation>
 <translation id="5228579091201413441">Nika amandla ukuvumelanisa</translation>
 <translation id="5234764350956374838">Cashisa</translation>
 <translation id="5245322853195994030">Khansela ukuvumelanisa</translation>
@@ -486,7 +488,6 @@
 <translation id="6127379762771434464">Into isusiwe</translation>
 <translation id="6136914049981179737">Amasekhondi adlule</translation>
 <translation id="6144589619057374135">Vula i-${url} ku-Incognito</translation>
-<translation id="616831107264507309">Funda ngemuva kwesikhathi</translation>
 <translation id="6177442314419606057">Sesha ku-Chrome</translation>
 <translation id="6184086493125982861">Bonisa amthebhu</translation>
 <translation id="6187302354554850004">Ukugcina ukuvumelanisa: <ph name="LAST_USED_TIME" /></translation>
@@ -501,6 +502,7 @@
 <translation id="6293101329759844770">Ukuze uvule Ukuphequlula Ngokuphepha, vula <ph name="BEGIN_LINK" />Amasevisi we-Google<ph name="END_LINK" /> bese uthepha okuthi Ukuphequlula ngokuphepha.</translation>
 <translation id="6303969859164067831">Phuma bese uvale ukuvumelanisa</translation>
 <translation id="6308436439357671616">Lokhu kukuvumela ukuthi uthathe uphinde wabelane ngezithombe.</translation>
+<translation id="6321526113093607004">Engeza kumabhukhimakhi</translation>
 <translation id="6324528485781869530">Shintsha i-akhawunti yokuvumelanisa</translation>
 <translation id="6324669097367352121">Izilungiselelo zokungena ngemvume</translation>
 <translation id="6337234675334993532">Ukubethela</translation>
@@ -672,7 +674,6 @@
 <translation id="7856733331829174190">Ayikwazanga ukulanda</translation>
 <translation id="7859704718976024901">Umlando wokuphequlula</translation>
 <translation id="7887198238286927132">Ukuvikela ubumfihlo bakho, i-Chrome ngeke igcwalise ngokuzenzakalelayo le nkambu.</translation>
-<translation id="7918293828610777738">Uhlu lwakho lokufunda lutholakala ungaxhunyiwe kwi-inthanethi. Ukuze ungeze ikhasi kuhlu lwakho lokufunda, thepha ku-<ph name="SHARE_OPENING_ICON" /> bese ku-<ph name="READ_LATER_TEXT" />.</translation>
 <translation id="7938254975914653459">I-FaceTime</translation>
 <translation id="7939128259257418052">Thumela amaphasiwedi...</translation>
 <translation id="7947953824732555851">Yamukela uphinde ungene ngemvume</translation>
diff --git a/ios/chrome/browser/ui/authentication/BUILD.gn b/ios/chrome/browser/ui/authentication/BUILD.gn
index 5619d34..30b76cd 100644
--- a/ios/chrome/browser/ui/authentication/BUILD.gn
+++ b/ios/chrome/browser/ui/authentication/BUILD.gn
@@ -53,7 +53,6 @@
     "//ios/chrome/browser/ui/alert_coordinator",
     "//ios/chrome/browser/ui/authentication/cells",
     "//ios/chrome/browser/ui/authentication/signin:signin_headers",
-    "//ios/chrome/browser/ui/collection_view/cells",
     "//ios/chrome/browser/ui/colors",
     "//ios/chrome/browser/ui/commands",
     "//ios/chrome/browser/ui/settings:settings_root",
diff --git a/ios/chrome/browser/ui/authentication/cells/BUILD.gn b/ios/chrome/browser/ui/authentication/cells/BUILD.gn
index 0043161..b74c1968 100644
--- a/ios/chrome/browser/ui/authentication/cells/BUILD.gn
+++ b/ios/chrome/browser/ui/authentication/cells/BUILD.gn
@@ -15,6 +15,10 @@
     "signin_promo_view_delegate.h",
     "table_view_account_item.h",
     "table_view_account_item.mm",
+    "table_view_identity_cell.h",
+    "table_view_identity_cell.mm",
+    "table_view_identity_item.h",
+    "table_view_identity_item.mm",
     "table_view_signin_promo_item.h",
     "table_view_signin_promo_item.mm",
   ]
@@ -24,12 +28,12 @@
     "//ios/chrome/app/strings",
     "//ios/chrome/browser",
     "//ios/chrome/browser/ui:feature_flags",
+    "//ios/chrome/browser/ui/authentication/views",
     "//ios/chrome/browser/ui/collection_view/cells",
     "//ios/chrome/browser/ui/colors",
     "//ios/chrome/browser/ui/commands",
     "//ios/chrome/browser/ui/settings/cells:public",
     "//ios/chrome/browser/ui/table_view:styler",
-    "//ios/chrome/browser/ui/table_view/cells",
     "//ios/chrome/browser/ui/table_view/cells:cells_constants",
     "//ios/chrome/common/ui/colors",
     "//ios/chrome/common/ui/util",
@@ -37,7 +41,10 @@
     "//ios/public/provider/chrome/browser/signin",
     "//ui/base",
   ]
-  public_deps = [ ":constants" ]
+  public_deps = [
+    ":constants",
+    "//ios/chrome/browser/ui/table_view/cells",
+  ]
   frameworks = [ "UIKit.framework" ]
 }
 
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_cell.h b/ios/chrome/browser/ui/authentication/cells/table_view_identity_cell.h
similarity index 64%
rename from ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_cell.h
rename to ios/chrome/browser/ui/authentication/cells/table_view_identity_cell.h
index 65d3105..e6b2bca6 100644
--- a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_cell.h
+++ b/ios/chrome/browser/ui/authentication/cells/table_view_identity_cell.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef IOS_CHROME_BROWSER_UI_AUTHENTICATION_UNIFIED_CONSENT_IDENTITY_CHOOSER_IDENTITY_CHOOSER_CELL_H_
-#define IOS_CHROME_BROWSER_UI_AUTHENTICATION_UNIFIED_CONSENT_IDENTITY_CHOOSER_IDENTITY_CHOOSER_CELL_H_
+#ifndef IOS_CHROME_BROWSER_UI_AUTHENTICATION_CELLS_TABLE_VIEW_IDENTITY_CELL_H_
+#define IOS_CHROME_BROWSER_UI_AUTHENTICATION_CELLS_TABLE_VIEW_IDENTITY_CELL_H_
 
 #import <UIKit/UIKit.h>
 
@@ -12,14 +12,14 @@
 @class IdentityView;
 
 // Cell to display an user identity or the "Add Account…" button.
-@interface IdentityChooserCell : TableViewCell
+@interface TableViewIdentityCell : TableViewCell
 
-// Initializes IdentityChooserCell instance.
+// Initializes TableViewIdentityCell instance.
 - (instancetype)initWithStyle:(UITableViewCellStyle)style
               reuseIdentifier:(NSString*)reuseIdentifier
     NS_DESIGNATED_INITIALIZER;
 
-// -[IdentityChooserCell initWithStyle:reuseIdentifier:] should be used.
+// -[TableViewIdentityCell initWithStyle:reuseIdentifier:] should be used.
 - (instancetype)initWithCoder:(NSCoder*)aDecoder NS_UNAVAILABLE;
 
 // Configures the cell with the title, subtitle and image. If |checked| is YES,
@@ -31,4 +31,4 @@
 
 @end
 
-#endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_UNIFIED_CONSENT_IDENTITY_CHOOSER_IDENTITY_CHOOSER_CELL_H_
+#endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_CELLS_TABLE_VIEW_IDENTITY_CELL_H_
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_cell.mm b/ios/chrome/browser/ui/authentication/cells/table_view_identity_cell.mm
similarity index 85%
rename from ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_cell.mm
rename to ios/chrome/browser/ui/authentication/cells/table_view_identity_cell.mm
index 72a563d..e5215771 100644
--- a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_cell.mm
+++ b/ios/chrome/browser/ui/authentication/cells/table_view_identity_cell.mm
@@ -2,12 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_cell.h"
+#import "ios/chrome/browser/ui/authentication/cells/table_view_identity_cell.h"
 
-#import "base/i18n/rtl.h"
 #import "ios/chrome/browser/ui/authentication/views/identity_view.h"
-#import "ios/chrome/browser/ui/util/uikit_ui_util.h"
-#import "ios/chrome/common/ui/colors/semantic_color_names.h"
 #import "ios/chrome/common/ui/util/constraints_ui_util.h"
 #import "ios/chrome/common/ui/util/pointer_interaction_util.h"
 
@@ -23,11 +20,11 @@
 const CGFloat kCheckmarkMagin = 26.;
 }  // namespace
 
-@interface IdentityChooserCell ()
+@interface TableViewIdentityCell ()
 @property(nonatomic, strong) IdentityView* identityView;
 @end
 
-@implementation IdentityChooserCell
+@implementation TableViewIdentityCell
 
 @synthesize identityView = _identityView;
 
@@ -47,7 +44,7 @@
     AddSameConstraintsToSidesWithInsets(_identityView, self.contentView,
                                         sideFlags, insets);
     if (@available(iOS 13.4, *)) {
-        [self addInteraction:[[ViewPointerInteraction alloc] init]];
+      [self addInteraction:[[ViewPointerInteraction alloc] init]];
     }
   }
   return self;
diff --git a/ios/chrome/browser/ui/authentication/cells/table_view_identity_item.h b/ios/chrome/browser/ui/authentication/cells/table_view_identity_item.h
new file mode 100644
index 0000000..9585224
--- /dev/null
+++ b/ios/chrome/browser/ui/authentication/cells/table_view_identity_item.h
@@ -0,0 +1,28 @@
+// 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.
+
+#ifndef IOS_CHROME_BROWSER_UI_AUTHENTICATION_CELLS_TABLE_VIEW_IDENTITY_ITEM_H_
+#define IOS_CHROME_BROWSER_UI_AUTHENTICATION_CELLS_TABLE_VIEW_IDENTITY_ITEM_H_
+
+#import <UIKit/UIKit.h>
+
+#import "ios/chrome/browser/ui/table_view/cells/table_view_item.h"
+
+// TableViewIdentityItem holds the model data for an identity.
+@interface TableViewIdentityItem : TableViewItem
+
+// Gaia ID.
+@property(nonatomic, strong) NSString* gaiaID;
+// User name.
+@property(nonatomic, strong) NSString* name;
+// User email.
+@property(nonatomic, strong) NSString* email;
+// User avatar.
+@property(nonatomic, strong) UIImage* avatar;
+// If YES, the identity is selected.
+@property(nonatomic, assign) BOOL selected;
+
+@end
+
+#endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_CELLS_TABLE_VIEW_IDENTITY_ITEM_H_
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_item.mm b/ios/chrome/browser/ui/authentication/cells/table_view_identity_item.mm
similarity index 73%
rename from ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_item.mm
rename to ios/chrome/browser/ui/authentication/cells/table_view_identity_item.mm
index 79a655d2..22cb4d7 100644
--- a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_item.mm
+++ b/ios/chrome/browser/ui/authentication/cells/table_view_identity_item.mm
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_item.h"
+#import "ios/chrome/browser/ui/authentication/cells/table_view_identity_item.h"
 
-#import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_cell.h"
+#import "ios/chrome/browser/ui/authentication/cells/table_view_identity_cell.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
 #endif
 
-@implementation IdentityChooserItem
+@implementation TableViewIdentityItem
 
 @synthesize gaiaID = _gaiaID;
 @synthesize name = _name;
@@ -21,12 +21,12 @@
 - (instancetype)initWithType:(NSInteger)type {
   self = [super initWithType:type];
   if (self) {
-    self.cellClass = [IdentityChooserCell class];
+    self.cellClass = [TableViewIdentityCell class];
   }
   return self;
 }
 
-- (void)configureCell:(IdentityChooserCell*)cell
+- (void)configureCell:(TableViewIdentityCell*)cell
            withStyler:(ChromeTableViewStyler*)styler {
   [super configureCell:cell withStyler:styler];
   NSString* title = self.name;
diff --git a/ios/chrome/browser/ui/authentication/signin/advanced_settings_signin/advanced_settings_signin_coordinator.mm b/ios/chrome/browser/ui/authentication/signin/advanced_settings_signin/advanced_settings_signin_coordinator.mm
index 212d1d6c..2d1b5c0 100644
--- a/ios/chrome/browser/ui/authentication/signin/advanced_settings_signin/advanced_settings_signin_coordinator.mm
+++ b/ios/chrome/browser/ui/authentication/signin/advanced_settings_signin/advanced_settings_signin_coordinator.mm
@@ -106,10 +106,12 @@
   [self.syncSettingsCoordinator stop];
   self.syncSettingsCoordinator = nil;
 
-  // Revokes all refresh tokens and alerts services of the signed-out state.
-  self.identityManager->GetPrimaryAccountMutator()->ClearPrimaryAccount(
-      signin_metrics::ABORT_SIGNIN,
-      signin_metrics::SignoutDelete::kIgnoreMetric);
+  if (base::FeatureList::IsEnabled(signin::kMobileIdentityConsistency)) {
+    // Revokes all refresh tokens and alerts services of the signed-out state.
+    self.identityManager->GetPrimaryAccountMutator()->ClearPrimaryAccount(
+        signin_metrics::ABORT_SIGNIN,
+        signin_metrics::SignoutDelete::kIgnoreMetric);
+  }
 
   switch (action) {
     case SigninCoordinatorInterruptActionNoDismiss:
diff --git a/ios/chrome/browser/ui/authentication/signin/signin_coordinator_egtest.mm b/ios/chrome/browser/ui/authentication/signin/signin_coordinator_egtest.mm
index 8aaa936..361393d9 100644
--- a/ios/chrome/browser/ui/authentication/signin/signin_coordinator_egtest.mm
+++ b/ios/chrome/browser/ui/authentication/signin/signin_coordinator_egtest.mm
@@ -55,7 +55,7 @@
 // Returns a matcher for |userEmail| in IdentityChooserViewController.
 id<GREYMatcher> identityChooserButtonMatcherWithEmail(NSString* userEmail) {
   return grey_allOf(grey_accessibilityID(userEmail),
-                    grey_kindOfClassName(@"IdentityChooserCell"),
+                    grey_kindOfClassName(@"TableViewIdentityCell"),
                     grey_sufficientlyVisible(), nil);
 }
 
@@ -459,8 +459,13 @@
   GREYAssertEqual(expectedURL, [ChromeEarlGrey webStateVisibleURL],
                   @"Didn't open new tab with example.com.");
 
-  // Should be not signed in.
-  [SigninEarlGrey verifySignedOut];
+  if (tapSettingsLink) {
+    // Should be signed in.
+    [SigninEarlGrey verifySignedInWithFakeIdentity:fakeIdentity];
+  } else {
+    // Should be not signed in.
+    [SigninEarlGrey verifySignedOut];
+  }
 
   // Check that the web page is visible.
   [[EarlGrey selectElementWithMatcher:chrome_test_util::Omnibox()]
diff --git a/ios/chrome/browser/ui/authentication/signin_earl_grey_app_interface.mm b/ios/chrome/browser/ui/authentication/signin_earl_grey_app_interface.mm
index e0572a9..fb28aa1f 100644
--- a/ios/chrome/browser/ui/authentication/signin_earl_grey_app_interface.mm
+++ b/ios/chrome/browser/ui/authentication/signin_earl_grey_app_interface.mm
@@ -15,7 +15,7 @@
 #include "ios/chrome/browser/signin/authentication_service.h"
 #include "ios/chrome/browser/signin/authentication_service_factory.h"
 #include "ios/chrome/browser/signin/identity_manager_factory.h"
-#import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_cell.h"
+#import "ios/chrome/browser/ui/authentication/cells/table_view_identity_cell.h"
 #import "ios/chrome/test/app/chrome_test_util.h"
 #import "ios/public/provider/chrome/browser/signin/fake_chrome_identity.h"
 #import "ios/public/provider/chrome/browser/signin/fake_chrome_identity_service.h"
@@ -86,7 +86,7 @@
 
 + (id<GREYMatcher>)identityCellMatcherForEmail:(NSString*)email {
   return grey_allOf(grey_accessibilityID(email),
-                    grey_kindOfClass([IdentityChooserCell class]),
+                    grey_kindOfClass([TableViewIdentityCell class]),
                     grey_sufficientlyVisible(), nil);
 }
 
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/BUILD.gn b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/BUILD.gn
index 7f2a50b..dd622ea 100644
--- a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/BUILD.gn
+++ b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/BUILD.gn
@@ -18,6 +18,7 @@
     "//base",
     "//ios/chrome/browser",
     "//ios/chrome/browser/signin",
+    "//ios/chrome/browser/ui/authentication/cells",
     "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
     "//ios/public/provider/chrome/browser/signin",
   ]
@@ -30,13 +31,9 @@
     "identity_chooser_add_account_item.mm",
     "identity_chooser_animator.h",
     "identity_chooser_animator.mm",
-    "identity_chooser_cell.h",
-    "identity_chooser_cell.mm",
     "identity_chooser_consumer.h",
     "identity_chooser_header_item.h",
     "identity_chooser_header_item.mm",
-    "identity_chooser_item.h",
-    "identity_chooser_item.mm",
     "identity_chooser_presentation_controller.h",
     "identity_chooser_presentation_controller.mm",
     "identity_chooser_transition_delegate.h",
@@ -53,12 +50,12 @@
     "//ios/chrome/app/strings",
     "//ios/chrome/browser",
     "//ios/chrome/browser/ui:feature_flags",
+    "//ios/chrome/browser/ui/authentication/cells",
     "//ios/chrome/browser/ui/authentication/views",
     "//ios/chrome/browser/ui/colors",
     "//ios/chrome/browser/ui/image_util",
     "//ios/chrome/browser/ui/list_model",
     "//ios/chrome/browser/ui/resources:menu_shadow",
-    "//ios/chrome/browser/ui/table_view/cells",
     "//ios/chrome/browser/ui/util",
     "//ios/chrome/browser/ui/util",
     "//ios/chrome/common",
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_add_account_item.mm b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_add_account_item.mm
index 1fda6b6..94abcbd 100644
--- a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_add_account_item.mm
+++ b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_add_account_item.mm
@@ -4,7 +4,7 @@
 
 #import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_add_account_item.h"
 
-#import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_cell.h"
+#import "ios/chrome/browser/ui/authentication/cells/table_view_identity_cell.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
 #include "ios/chrome/grit/ios_strings.h"
 #import "ui/base/l10n/l10n_util.h"
@@ -18,12 +18,12 @@
 - (instancetype)initWithType:(NSInteger)type {
   self = [super initWithType:type];
   if (self) {
-    self.cellClass = [IdentityChooserCell class];
+    self.cellClass = [TableViewIdentityCell class];
   }
   return self;
 }
 
-- (void)configureCell:(IdentityChooserCell*)cell
+- (void)configureCell:(TableViewIdentityCell*)cell
            withStyler:(ChromeTableViewStyler*)styler {
   [super configureCell:cell withStyler:styler];
   NSString* title =
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_consumer.h b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_consumer.h
index e7a03ad3..2ffcf272 100644
--- a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_consumer.h
+++ b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_consumer.h
@@ -5,19 +5,19 @@
 #ifndef IOS_CHROME_BROWSER_UI_AUTHENTICATION_UNIFIED_CONSENT_IDENTITY_CHOOSER_IDENTITY_CHOOSER_CONSUMER_H_
 #define IOS_CHROME_BROWSER_UI_AUTHENTICATION_UNIFIED_CONSENT_IDENTITY_CHOOSER_IDENTITY_CHOOSER_CONSUMER_H_
 
-@class IdentityChooserItem;
+@class TableViewIdentityItem;
 
 // Consumer for the IdentityChooser.
 @protocol IdentityChooserConsumer
 
 // Sets the |items| displayed by this consumer.
-- (void)setIdentityItems:(NSArray<IdentityChooserItem*>*)items;
+- (void)setIdentityItems:(NSArray<TableViewIdentityItem*>*)items;
 
 // Notifies the consumer that the |changedItem| has changed.
-- (void)itemHasChanged:(IdentityChooserItem*)changedItem;
+- (void)itemHasChanged:(TableViewIdentityItem*)changedItem;
 
-// Returns an IdentityChooserItem based on a gaia ID.
-- (IdentityChooserItem*)identityChooserItemWithGaiaID:(NSString*)gaiaID;
+// Returns an TableViewIdentityItem based on a gaia ID.
+- (TableViewIdentityItem*)tableViewIdentityItemWithGaiaID:(NSString*)gaiaID;
 
 @end
 
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_item.h b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_item.h
deleted file mode 100644
index 77095de..0000000
--- a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_item.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-
-#ifndef IOS_CHROME_BROWSER_UI_AUTHENTICATION_UNIFIED_CONSENT_IDENTITY_CHOOSER_IDENTITY_CHOOSER_ITEM_H_
-#define IOS_CHROME_BROWSER_UI_AUTHENTICATION_UNIFIED_CONSENT_IDENTITY_CHOOSER_IDENTITY_CHOOSER_ITEM_H_
-
-#import <UIKit/UIKit.h>
-
-#import "ios/chrome/browser/ui/table_view/cells/table_view_item.h"
-
-// IdentityChooserItem holds the model data for an identity.
-@interface IdentityChooserItem : TableViewItem
-
-// Gaia ID.
-@property(nonatomic, strong) NSString* gaiaID;
-// User name.
-@property(nonatomic, strong) NSString* name;
-// User email.
-@property(nonatomic, strong) NSString* email;
-// User avatar.
-@property(nonatomic, strong) UIImage* avatar;
-// If YES, the identity is selected.
-@property(nonatomic, assign) BOOL selected;
-
-@end
-
-#endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_UNIFIED_CONSENT_IDENTITY_CHOOSER_IDENTITY_CHOOSER_ITEM_H_
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_mediator.mm b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_mediator.mm
index 57d3347..e5ad9d63 100644
--- a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_mediator.mm
+++ b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_mediator.mm
@@ -7,8 +7,8 @@
 #include "base/strings/sys_string_conversions.h"
 #include "ios/chrome/browser/chrome_browser_provider_observer_bridge.h"
 #import "ios/chrome/browser/signin/chrome_identity_service_observer_bridge.h"
+#import "ios/chrome/browser/ui/authentication/cells/table_view_identity_item.h"
 #import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_consumer.h"
-#import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_item.h"
 #import "ios/public/provider/chrome/browser/signin/chrome_identity.h"
 #include "ios/public/provider/chrome/browser/signin/chrome_identity_service.h"
 
@@ -44,8 +44,8 @@
 - (void)setSelectedIdentity:(ChromeIdentity*)selectedIdentity {
   if ([_selectedIdentity isEqual:selectedIdentity])
     return;
-  IdentityChooserItem* previousSelectedItem = [self.consumer
-      identityChooserItemWithGaiaID:self.selectedIdentity.gaiaID];
+  TableViewIdentityItem* previousSelectedItem = [self.consumer
+      tableViewIdentityItemWithGaiaID:self.selectedIdentity.gaiaID];
   if (previousSelectedItem) {
     previousSelectedItem.selected = NO;
     [self.consumer itemHasChanged:previousSelectedItem];
@@ -54,8 +54,8 @@
   if (!_selectedIdentity) {
     return;
   }
-  IdentityChooserItem* selectedItem = [self.consumer
-      identityChooserItemWithGaiaID:self.selectedIdentity.gaiaID];
+  TableViewIdentityItem* selectedItem = [self.consumer
+      tableViewIdentityItemWithGaiaID:self.selectedIdentity.gaiaID];
   DCHECK(selectedItem);
   selectedItem.selected = YES;
   [self.consumer itemHasChanged:selectedItem];
@@ -74,19 +74,20 @@
   // Create all the identity items.
   NSArray<ChromeIdentity*>* identities =
       self.chromeIdentityService->GetAllIdentitiesSortedForDisplay();
-  NSMutableArray<IdentityChooserItem*>* items = [NSMutableArray array];
+  NSMutableArray<TableViewIdentityItem*>* items = [NSMutableArray array];
   for (ChromeIdentity* identity in identities) {
-    IdentityChooserItem* item = [[IdentityChooserItem alloc] initWithType:0];
-    [self updateIdentityChooserItem:item withChromeIdentity:identity];
+    TableViewIdentityItem* item =
+        [[TableViewIdentityItem alloc] initWithType:0];
+    [self updateTableViewIdentityItem:item withChromeIdentity:identity];
     [items addObject:item];
   }
 
   [self.consumer setIdentityItems:items];
 }
 
-// Updates an IdentityChooserItem based on a ChromeIdentity.
-- (void)updateIdentityChooserItem:(IdentityChooserItem*)item
-               withChromeIdentity:(ChromeIdentity*)identity {
+// Updates an TableViewIdentityItem based on a ChromeIdentity.
+- (void)updateTableViewIdentityItem:(TableViewIdentityItem*)item
+                 withChromeIdentity:(ChromeIdentity*)identity {
   item.gaiaID = identity.gaiaID;
   item.name = identity.userFullName;
   item.email = identity.userEmail;
@@ -122,9 +123,9 @@
 }
 
 - (void)profileUpdate:(ChromeIdentity*)identity {
-  IdentityChooserItem* item =
-      [self.consumer identityChooserItemWithGaiaID:identity.gaiaID];
-  [self updateIdentityChooserItem:item withChromeIdentity:identity];
+  TableViewIdentityItem* item =
+      [self.consumer tableViewIdentityItemWithGaiaID:identity.gaiaID];
+  [self updateTableViewIdentityItem:item withChromeIdentity:identity];
 }
 
 - (void)chromeIdentityServiceWillBeDestroyed {
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_view_controller.mm b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_view_controller.mm
index fbdce81..f05acf8 100644
--- a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_view_controller.mm
+++ b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_view_controller.mm
@@ -7,9 +7,9 @@
 #include "base/check_op.h"
 #include "base/mac/foundation_util.h"
 #include "base/notreached.h"
+#import "ios/chrome/browser/ui/authentication/cells/table_view_identity_item.h"
 #import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_add_account_item.h"
 #import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_header_item.h"
-#import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_item.h"
 #import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_view_controller_presentation_delegate.h"
 #import "ios/chrome/browser/ui/list_model/list_item+Controller.h"
 
@@ -68,12 +68,12 @@
   ListItem* item = [self.tableViewModel itemAtIndexPath:indexPath];
   switch ((ItemType)item.type) {
     case IdentityItemType: {
-      IdentityChooserItem* identityChooserItem =
-          base::mac::ObjCCastStrict<IdentityChooserItem>(item);
-      DCHECK(identityChooserItem);
+      TableViewIdentityItem* tableViewIdentityItem =
+          base::mac::ObjCCastStrict<TableViewIdentityItem>(item);
+      DCHECK(tableViewIdentityItem);
       [self.presentationDelegate
           identityChooserViewController:self
-            didSelectIdentityWithGaiaID:identityChooserItem.gaiaID];
+            didSelectIdentityWithGaiaID:tableViewIdentityItem.gaiaID];
       break;
     }
     case AddAccountItemType:
@@ -122,13 +122,13 @@
   [self reconfigureCellsForItems:@[ changedItem ]];
 }
 
-- (IdentityChooserItem*)identityChooserItemWithGaiaID:(NSString*)gaiaID {
-  for (IdentityChooserItem* item in [self.tableViewModel
+- (TableViewIdentityItem*)tableViewIdentityItemWithGaiaID:(NSString*)gaiaID {
+  for (TableViewIdentityItem* item in [self.tableViewModel
            itemsInSectionWithIdentifier:IdentitiesSectionIdentifier]) {
     if (item.type != IdentityItemType)
       continue;
-    IdentityChooserItem* identityItem =
-        base::mac::ObjCCastStrict<IdentityChooserItem>(item);
+    TableViewIdentityItem* identityItem =
+        base::mac::ObjCCastStrict<TableViewIdentityItem>(item);
     if ([identityItem.gaiaID isEqualToString:gaiaID])
       return identityItem;
   }
diff --git a/ios/chrome/browser/ui/settings/google_services/google_services_settings_egtest.mm b/ios/chrome/browser/ui/settings/google_services/google_services_settings_egtest.mm
index be2df8e..fc45413 100644
--- a/ios/chrome/browser/ui/settings/google_services/google_services_settings_egtest.mm
+++ b/ios/chrome/browser/ui/settings/google_services/google_services_settings_egtest.mm
@@ -139,7 +139,9 @@
   // Needs to wait until the sign-in dialog is fully dismissed to continue.
   [ChromeEarlGreyUI waitForAppToIdle];
   [self openGoogleServicesSettings];
-  [SigninEarlGrey verifySignedOut];
+  // Verify the sync is not confirmed yet.
+  [self assertCellWithTitleID:IDS_IOS_SYNC_SETUP_NOT_CONFIRMED_TITLE
+                 detailTextID:IDS_IOS_SYNC_SETTINGS_NOT_CONFIRMED_DESCRIPTION];
 }
 
 // Opens the SSO add account view, from the Google services settings.
diff --git a/ios/chrome/browser/ui/side_swipe/BUILD.gn b/ios/chrome/browser/ui/side_swipe/BUILD.gn
index c02c7976..1ff742c 100644
--- a/ios/chrome/browser/ui/side_swipe/BUILD.gn
+++ b/ios/chrome/browser/ui/side_swipe/BUILD.gn
@@ -3,10 +3,7 @@
 # found in the LICENSE file.
 
 source_set("side_swipe") {
-  configs += [
-    "//build/config/compiler:enable_arc",
-    "//build/config/ios:disable_implicit_retain_self_warning",
-  ]
+  configs += [ "//build/config/compiler:enable_arc" ]
   sources = [
     "card_side_swipe_view.h",
     "card_side_swipe_view.mm",
diff --git a/ios/chrome/browser/ui/side_swipe/card_side_swipe_view.mm b/ios/chrome/browser/ui/side_swipe/card_side_swipe_view.mm
index 463c9e00..ba68ad8f 100644
--- a/ios/chrome/browser/ui/side_swipe/card_side_swipe_view.mm
+++ b/ios/chrome/browser/ui/side_swipe/card_side_swipe_view.mm
@@ -322,26 +322,37 @@
   // Make sure the dominant card animates on top.
   [dominantCard.superview bringSubviewToFront:dominantCard];
 
+  __weak CardSideSwipeView* weakSelf = self;
   [UIView animateWithDuration:kAnimationDuration
       animations:^{
-        _leftCard.transform = leftTransform;
-        _rightCard.transform = rightTransform;
+        [weakSelf animatePanWithLeftCardTransform:leftTransform
+                               rightCardTransform:rightTransform];
       }
       completion:^(BOOL finished) {
-        [_leftCard setImage:nil];
-        [_rightCard setImage:nil];
-        [_leftCard setTopToolbarImage:nil];
-        [_rightCard setTopToolbarImage:nil];
-        [_leftCard setBottomToolbarImage:nil];
-        [_rightCard setBottomToolbarImage:nil];
-        [_delegate sideSwipeViewDismissAnimationDidEnd:self];
-        // Changing the model even when the webstate is the same at the end of
-        // the animation allows the UI to recover.  This call must come last,
-        // because ActivateWebStateAt triggers behavior that depends on the view
-        // hierarchy being reassembled, which happens in
-        // sideSwipeViewDismissAnimationDidEnd.
-        _webStateList->ActivateWebStateAt(destinationWebStateIndex);
+        [weakSelf onAnimatePanComplete:destinationWebStateIndex];
       }];
 }
 
+- (void)animatePanWithLeftCardTransform:(CGAffineTransform)leftCardTransform
+                     rightCardTransform:(CGAffineTransform)rightCardTransform {
+  _leftCard.transform = leftCardTransform;
+  _rightCard.transform = rightCardTransform;
+}
+
+- (void)onAnimatePanComplete:(int)destinationWebStateIndex {
+  [_leftCard setImage:nil];
+  [_rightCard setImage:nil];
+  [_leftCard setTopToolbarImage:nil];
+  [_rightCard setTopToolbarImage:nil];
+  [_leftCard setBottomToolbarImage:nil];
+  [_rightCard setBottomToolbarImage:nil];
+  [_delegate sideSwipeViewDismissAnimationDidEnd:self];
+  // Changing the model even when the webstate is the same at the end of
+  // the animation allows the UI to recover.  This call must come last,
+  // because ActivateWebStateAt triggers behavior that depends on the view
+  // hierarchy being reassembled, which happens in
+  // sideSwipeViewDismissAnimationDidEnd.
+  _webStateList->ActivateWebStateAt(destinationWebStateIndex);
+}
+
 @end
diff --git a/ios/chrome/browser/ui/side_swipe/side_swipe_controller.mm b/ios/chrome/browser/ui/side_swipe/side_swipe_controller.mm
index 06f7d36..a56d53f 100644
--- a/ios/chrome/browser/ui/side_swipe/side_swipe_controller.mm
+++ b/ios/chrome/browser/ui/side_swipe/side_swipe_controller.mm
@@ -519,36 +519,50 @@
     _animatedFullscreenDisabler = nullptr;
   }
 
+  __weak SideSwipeController* weakSelf = self;
   [_pageSideSwipeView handleHorizontalPan:gesture
       onOverThresholdCompletion:^{
-        web::WebState* webState = self.activeWebState;
-        BOOL wantsBack = IsSwipingBack(gesture.direction);
-        if (webState) {
-          if (wantsBack) {
-            web_navigation_util::GoBack(webState);
-          } else {
-            web_navigation_util::GoForward(webState);
-          }
-        }
-        // Checking -IsLoading() is likely incorrect, but to narrow the scope of
-        // fixes for slim navigation manager, only ignore this state when
-        // slim is disabled.  With slim navigation enabled, this false when
-        // pages can be served from WKWebView's page cache.
-        if (webState) {
-          [self addCurtainWithCompletionHandler:^{
-            _inSwipe = NO;
-          }];
-        } else {
-          _inSwipe = NO;
-        }
-        [_swipeDelegate updateAccessoryViewsForSideSwipeWithVisibility:YES];
+        [weakSelf handleOverThresholdCompletion:gesture];
       }
       onUnderThresholdCompletion:^{
-        [_swipeDelegate updateAccessoryViewsForSideSwipeWithVisibility:YES];
-        _inSwipe = NO;
+        [weakSelf handleUnderThresholdCompletion];
       }];
 }
 
+- (void)handleOverThresholdCompletion:(SideSwipeGestureRecognizer*)gesture {
+  web::WebState* webState = self.activeWebState;
+  BOOL wantsBack = IsSwipingBack(gesture.direction);
+  if (webState) {
+    if (wantsBack) {
+      web_navigation_util::GoBack(webState);
+    } else {
+      web_navigation_util::GoForward(webState);
+    }
+  }
+  __weak SideSwipeController* weakSelf = self;
+  // Checking -IsLoading() is likely incorrect, but to narrow the scope of
+  // fixes for slim navigation manager, only ignore this state when
+  // slim is disabled.  With slim navigation enabled, this false when
+  // pages can be served from WKWebView's page cache.
+  if (webState) {
+    [self addCurtainWithCompletionHandler:^{
+      [weakSelf handleCurtainCompletion];
+    }];
+  } else {
+    _inSwipe = NO;
+  }
+  [_swipeDelegate updateAccessoryViewsForSideSwipeWithVisibility:YES];
+}
+
+- (void)handleCurtainCompletion {
+  _inSwipe = NO;
+}
+
+- (void)handleUnderThresholdCompletion {
+  [_swipeDelegate updateAccessoryViewsForSideSwipeWithVisibility:YES];
+  _inSwipe = NO;
+}
+
 // Show horizontal swipe stack view for iPhone.
 - (void)handleiPhoneTabSwipe:(SideSwipeGestureRecognizer*)gesture {
   if (gesture.state == UIGestureRecognizerStateBegan) {
@@ -631,8 +645,9 @@
 - (void)dismissCurtain {
   if (!_inSwipe)
     return;
+  __weak SideSwipeController* weakSelf = self;
   [self dismissCurtainWithCompletionHandler:^{
-    _inSwipe = NO;
+    [weakSelf handleCurtainCompletion];
   }];
 }
 
diff --git a/ios/chrome/browser/ui/side_swipe/side_swipe_navigation_view.mm b/ios/chrome/browser/ui/side_swipe/side_swipe_navigation_view.mm
index 35c5473..2d869ae 100644
--- a/ios/chrome/browser/ui/side_swipe/side_swipe_navigation_view.mm
+++ b/ios/chrome/browser/ui/side_swipe/side_swipe_navigation_view.mm
@@ -207,48 +207,43 @@
   [_arrowView setTransform:CGAffineTransformScale(rotation, scale, scale)];
 
   // Animate selection bubbles dpending on distance.
+  __weak SideSwipeNavigationView* weakSelf = self;
   [UIView animateWithDuration:kSelectionSnappingAnimationDuration
                    animations:^{
-                     if (distance < (width * kSwipeThreshold)) {
-                       // Scale selection down.
-                       _selectionCircleLayer.transform = CATransform3DMakeScale(
-                           kSelectionDownScale, kSelectionDownScale, 1);
-                       _selectionCircleLayer.opacity = 0;
-                       [_arrowView
-                           setAlpha:MapValueToRange({0, 64}, {0, 1}, distance)];
-                       _thresholdTriggered = NO;
-                     } else {
-                       _selectionCircleLayer.transform =
-                           CATransform3DMakeScale(1, 1, 1);
-                       _selectionCircleLayer.opacity = 1;
-                       [_arrowView setAlpha:1];
-                       // Trigger a small haptic blip when exceeding the
-                       // threshold and mark such that only one blip gets
-                       // triggered.
-                       if (!_thresholdTriggered) {
-                         TriggerHapticFeedbackForSelectionChange();
-                         _thresholdTriggered = YES;
-                       }
-                     }
+                     [weakSelf animateSelectionBubblesByDistance:distance
+                                                           width:width];
                    }
                    completion:nil];
 }
 
+- (void)animateSelectionBubblesByDistance:(CGFloat)distance
+                                    width:(CGFloat)width {
+  if (distance < (width * kSwipeThreshold)) {
+    // Scale selection down.
+    _selectionCircleLayer.transform =
+        CATransform3DMakeScale(kSelectionDownScale, kSelectionDownScale, 1);
+    _selectionCircleLayer.opacity = 0;
+    [_arrowView setAlpha:MapValueToRange({0, 64}, {0, 1}, distance)];
+    _thresholdTriggered = NO;
+  } else {
+    _selectionCircleLayer.transform = CATransform3DMakeScale(1, 1, 1);
+    _selectionCircleLayer.opacity = 1;
+    [_arrowView setAlpha:1];
+    // Trigger a small haptic blip when exceeding the
+    // threshold and mark such that only one blip gets
+    // triggered.
+    if (!_thresholdTriggered) {
+      TriggerHapticFeedbackForSelectionChange();
+      _thresholdTriggered = YES;
+    }
+  }
+}
+
 - (void)explodeSelection:(void (^)(void))block {
+  __weak SideSwipeNavigationView* weakSelf = self;
   [CATransaction begin];
   [CATransaction setCompletionBlock:^{
-    // Note that the animations below may complete at slightly different times
-    // resulting in frame(s) between animation completion and the transaction's
-    // completion handler that show the original state. To avoid this flicker,
-    // the animations use a fillMode forward and are not removed until the
-    // transaction completion handler is executed.
-    [_selectionCircleLayer removeAnimationForKey:@"opacity"];
-    [_selectionCircleLayer removeAnimationForKey:@"transform"];
-    [_selectionCircleLayer setOpacity:0];
-    [_arrowView setAlpha:0];
-    self.backgroundColor = SelectionCircleColor();
-    block();
-
+    [weakSelf handleCATransactionComplete:block];
   }];
 
   CAMediaTimingFunction* timing =
@@ -295,10 +290,28 @@
   [_arrowView setAlpha:1];
   [UIView animateWithDuration:kSelectionAnimationDuration
                    animations:^{
-                     [_arrowView setAlpha:0];
+                     [weakSelf setArrowViewAlpha:0];
                    }];
 }
 
+- (void)handleCATransactionComplete:(void (^)(void))block {
+  // Note that the animations below may complete at slightly different times
+  // resulting in frame(s) between animation completion and the transaction's
+  // completion handler that show the original state. To avoid this flicker,
+  // the animations use a fillMode forward and are not removed until the
+  // transaction completion handler is executed.
+  [_selectionCircleLayer removeAnimationForKey:@"opacity"];
+  [_selectionCircleLayer removeAnimationForKey:@"transform"];
+  [_selectionCircleLayer setOpacity:0];
+  [_arrowView setAlpha:0];
+  self.backgroundColor = SelectionCircleColor();
+  block();
+}
+
+- (void)setArrowViewAlpha:(CGFloat)alpha {
+  [_arrowView setAlpha:alpha];
+}
+
 - (void)handleHorizontalPan:(SideSwipeGestureRecognizer*)gesture
      onOverThresholdCompletion:(void (^)(void))onOverThresholdCompletion
     onUnderThresholdCompletion:(void (^)(void))onUnderThresholdCompletion {
@@ -381,46 +394,60 @@
 - (void)animateTargetViewCompleted:(BOOL)completed
                      withDirection:(UISwipeGestureRecognizerDirection)direction
                       withDuration:(CGFloat)duration {
-  void (^animationBlock)(void) = ^{
-    CGRect targetFrame = self.targetView.frame;
-    CGRect frame = self.frame;
-    CGFloat width = CGRectGetWidth(self.targetView.bounds);
-    // Animate self.targetFrame to the side if completed and to the center if
-    // not. Animate self.view to the center if completed or to the size if not.
-    if (completed) {
-      frame.origin.x = 0;
-      frame.size.width = width;
-      self.frame = frame;
-      targetFrame.origin.x =
-          direction == UISwipeGestureRecognizerDirectionRight ? width : -width;
-      self.targetView.frame = targetFrame;
-    } else {
-      targetFrame.origin.x = 0;
-      self.targetView.frame = targetFrame;
-      frame.origin.x =
-          direction == UISwipeGestureRecognizerDirectionLeft ? width : 0;
-      frame.size.width = 0;
-      self.frame = frame;
-    }
-    CGRect bounds = self.bounds;
-    CGPoint center = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));
-    [_arrowView setCenter:AlignPointToPixel(center)];
-  };
+  __weak SideSwipeNavigationView* weakSelf = self;
   CGFloat cleanUpDelay = completed ? kSelectionAnimationDuration - duration : 0;
   [UIView animateWithDuration:duration
-                   animations:animationBlock
-                   completion:^(BOOL finished) {
-                     // Give the other animations time to complete.
-                     dispatch_after(dispatch_time(DISPATCH_TIME_NOW,
-                                                  cleanUpDelay * NSEC_PER_SEC),
-                                    dispatch_get_main_queue(), ^{
-                                      // Reset target frame.
-                                      CGRect frame = self.targetView.frame;
-                                      frame.origin.x = 0;
-                                      self.targetView.frame = frame;
-                                      [self removeFromSuperview];
-                                    });
-                   }];
+      animations:^{
+        [weakSelf handleTargetViewAnimationWithCompleted:completed
+                                           withDirection:direction
+                                            withDuration:duration];
+      }
+      completion:^(BOOL finished) {
+        // Give the other animations time to complete.
+        dispatch_after(
+            dispatch_time(DISPATCH_TIME_NOW, cleanUpDelay * NSEC_PER_SEC),
+            dispatch_get_main_queue(), ^{
+              [weakSelf handleTargetViewAnimationCompletion];
+            });
+      }];
+}
+
+- (void)handleTargetViewAnimationWithCompleted:(BOOL)completed
+                                 withDirection:
+                                     (UISwipeGestureRecognizerDirection)
+                                         direction
+                                  withDuration:(CGFloat)duration {
+  CGRect targetFrame = self.targetView.frame;
+  CGRect frame = self.frame;
+  CGFloat width = CGRectGetWidth(self.targetView.bounds);
+  // Animate self.targetFrame to the side if completed and to the center if
+  // not. Animate self.view to the center if completed or to the size if not.
+  if (completed) {
+    frame.origin.x = 0;
+    frame.size.width = width;
+    self.frame = frame;
+    targetFrame.origin.x =
+        direction == UISwipeGestureRecognizerDirectionRight ? width : -width;
+    self.targetView.frame = targetFrame;
+  } else {
+    targetFrame.origin.x = 0;
+    self.targetView.frame = targetFrame;
+    frame.origin.x =
+        direction == UISwipeGestureRecognizerDirectionLeft ? width : 0;
+    frame.size.width = 0;
+    self.frame = frame;
+  }
+  CGRect bounds = self.bounds;
+  CGPoint center = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));
+  [_arrowView setCenter:AlignPointToPixel(center)];
+}
+
+- (void)handleTargetViewAnimationCompletion {
+  // Reset target frame.
+  CGRect frame = self.targetView.frame;
+  frame.origin.x = 0;
+  self.targetView.frame = frame;
+  [self removeFromSuperview];
 }
 
 - (CAShapeLayer*)newSelectionCircleLayer {
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/BUILD.gn b/ios/chrome/browser/ui/tab_switcher/tab_grid/BUILD.gn
index 24e2a8ee..b6144256 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/BUILD.gn
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/BUILD.gn
@@ -105,10 +105,7 @@
     "thumb_strip_plus_sign_button.mm",
   ]
 
-  configs += [
-    "//build/config/compiler:enable_arc",
-    "//build/config/ios:disable_implicit_retain_self_warning",
-  ]
+  configs += [ "//build/config/compiler:enable_arc" ]
 
   deps = [
     ":features",
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller.mm
index b6bb7c9..f165530 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller.mm
@@ -273,18 +273,24 @@
        withTransitionCoordinator:
            (id<UIViewControllerTransitionCoordinator>)coordinator {
   [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
+  __weak TabGridViewController* weakSelf = self;
   auto animate = ^(id<UIViewControllerTransitionCoordinatorContext> context) {
-    // Sync the scroll view offset to the  current page value. SInce this is
-    // already inside an animation block, the scrolling doesn't need to be
-    // animated.
-    [self scrollToPage:_currentPage animated:NO];
-    [self configureViewControllerForCurrentSizeClassesAndPage];
-    [self setInsetForRemoteTabs];
-    [self setInsetForGridViews];
+    [weakSelf animateTransition:context];
   };
   [coordinator animateAlongsideTransition:animate completion:nil];
 }
 
+- (void)animateTransition:
+    (id<UIViewControllerTransitionCoordinatorContext>)context {
+  // Sync the scroll view offset to the current page value. Since this is
+  // invoked inside an animation block, the scrolling doesn't need to be
+  // animated.
+  [self scrollToPage:_currentPage animated:NO];
+  [self configureViewControllerForCurrentSizeClassesAndPage];
+  [self setInsetForRemoteTabs];
+  [self setInsetForGridViews];
+}
+
 - (UIStatusBarStyle)preferredStatusBarStyle {
   return UIStatusBarStyleLightContent;
 }
diff --git a/ios/chrome/browser/ui/tabs/BUILD.gn b/ios/chrome/browser/ui/tabs/BUILD.gn
index 9d0ca86d..e684715e 100644
--- a/ios/chrome/browser/ui/tabs/BUILD.gn
+++ b/ios/chrome/browser/ui/tabs/BUILD.gn
@@ -3,10 +3,7 @@
 # found in the LICENSE file.
 
 source_set("tabs") {
-  configs += [
-    "//build/config/compiler:enable_arc",
-    "//build/config/ios:disable_implicit_retain_self_warning",
-  ]
+  configs += [ "//build/config/compiler:enable_arc" ]
   sources = [
     "background_tab_animation_view.h",
     "background_tab_animation_view.mm",
diff --git a/ios/chrome/browser/ui/tabs/tab_strip_controller.mm b/ios/chrome/browser/ui/tabs/tab_strip_controller.mm
index 155ad19b..1de3001 100644
--- a/ios/chrome/browser/ui/tabs/tab_strip_controller.mm
+++ b/ios/chrome/browser/ui/tabs/tab_strip_controller.mm
@@ -670,32 +670,43 @@
   [_tabStripView addSubview:_dimmingView];
 
   CGFloat duration = animate ? kTabStripFadeAnimationDuration : 0;
+  __weak TabStripController* weakSelf = self;
   [UIView animateWithDuration:duration
                    animations:^{
-                     [_dimmingView
-                         setBackgroundColor:[BackgroundColor()
-                                                colorWithAlphaComponent:0.6]];
+                     [weakSelf animateDimmingViewBackgroundColorWithAlpha:0.6];
                    }];
 }
 
+// Animation helper function to set the _dimmingView background color with
+// alpha.
+- (void)animateDimmingViewBackgroundColorWithAlpha:(CGFloat)alphaComponent {
+  [_dimmingView setBackgroundColor:[BackgroundColor()
+                                       colorWithAlphaComponent:alphaComponent]];
+}
+
 - (void)removeDimmingViewWithAnimation:(BOOL)animate {
   if (_dimmingView) {
+    __weak TabStripController* weakSelf = self;
     CGFloat duration = animate ? kTabStripFadeAnimationDuration : 0;
     [UIView animateWithDuration:duration
         animations:^{
-          [_dimmingView
-              setBackgroundColor:[BackgroundColor() colorWithAlphaComponent:0]];
+          [weakSelf animateDimmingViewBackgroundColorWithAlpha:0];
         }
         completion:^(BOOL finished) {
-          // Do not remove the dimming view if the animation was aborted.
-          if (finished) {
-            [_dimmingView removeFromSuperview];
-            _dimmingView = nil;
-          }
+          [weakSelf onDimmingViewAnimationFinished:finished];
         }];
   }
 }
 
+// Completion function/helper for -removeDimmingViewWithAnimation
+- (void)onDimmingViewAnimationFinished:(BOOL)finished {
+  // Do not remove the dimming view if the animation was aborted.
+  if (finished) {
+    [_dimmingView removeFromSuperview];
+    _dimmingView = nil;
+  }
+}
+
 - (void)recordUserMetrics:(id)sender {
   if (sender == _buttonNewTab)
     base::RecordAction(UserMetricsAction("MobileTabStripNewTab"));
@@ -1163,19 +1174,24 @@
   // sight.
   CGRect frame = [view frame];
   frame = CGRectOffset(frame, 0, CGRectGetHeight(frame));
+  __weak TabStripController* weakSelf = self;
   [UIView animateWithDuration:kTabAnimationDuration
       animations:^{
         [view setFrame:frame];
       }
       completion:^(BOOL finished) {
-        [view removeFromSuperview];
-        [_tabArray removeObject:view];
-        [_closingTabs removeObject:view];
+        [weakSelf tabViewAnimationCompletion:view];
       }];
 
   [self setNeedsLayoutWithAnimation];
 }
 
+- (void)tabViewAnimationCompletion:(UIView*)view {
+  [view removeFromSuperview];
+  [_tabArray removeObject:view];
+  [_closingTabs removeObject:view];
+}
+
 // Observer method. |webState| inserted on |webStateList|.
 - (void)webStateList:(WebStateList*)webStateList
     didInsertWebState:(web::WebState*)webState
@@ -1685,21 +1701,30 @@
                         object:nil];
     }
 
+    __weak TabStripController* weakSelf = self;
     [UIView animateWithDuration:kTabAnimationDuration
                           delay:delay
                         options:UIViewAnimationOptionAllowUserInteraction
                      animations:^{
-                       for (TabView* view in tabsNeedingAnimation) {
-                         DCHECK(_targetFrames.HasFrame(view));
-                         [view setFrame:_targetFrames.GetFrame(view)];
-                       }
-                       if (moveNewTab)
-                         [_buttonNewTab setFrame:newTabFrame];
+                       [weakSelf animateTabStripSubviews:tabsNeedingAnimation
+                                             newTabFrame:newTabFrame
+                                              moveNewTab:moveNewTab];
                      }
                      completion:nil];
   }
 }
 
+- (void)animateTabStripSubviews:(NSMutableArray*)tabsNeedingAnimation
+                    newTabFrame:(CGRect)newTabFrame
+                     moveNewTab:(BOOL)moveNewTab {
+  for (TabView* view in tabsNeedingAnimation) {
+    DCHECK(_targetFrames.HasFrame(view));
+    [view setFrame:_targetFrames.GetFrame(view)];
+  }
+  if (moveNewTab)
+    [_buttonNewTab setFrame:newTabFrame];
+}
+
 - (void)setNeedsLayoutWithAnimation {
   _animateLayout = YES;
   [_tabStripView setNeedsLayout];
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_af.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_af.xtb
index 2f1f638..c7eca7ac 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_af.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_af.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="af">
 <translation id="1613742542373525524">APPLICATION_NAME kan nie hierdie skakel hanteer nie.</translation>
 <translation id="4655616150233109325">Maak in Chrome oop</translation>
-<translation id="4743991241988563337">Lees later</translation>
+<translation id="601731541915429022">Voeg by Leeslys</translation>
 <translation id="6930009216791986919">Voeg by Boekmerke</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Bygevoeg</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_am.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_am.xtb
index 4997dfb..334873c 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_am.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_am.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="am">
 <translation id="1613742542373525524">APPLICATION_NAME ይህን አገናኝ መያዝ አይችልም።</translation>
 <translation id="4655616150233109325">በChrome ውስጥ ክፈት</translation>
-<translation id="4743991241988563337">በኋላ ላይ ያንብቡ</translation>
+<translation id="601731541915429022">ወደ የንባብ ዝርዝር አክል</translation>
 <translation id="6930009216791986919">ወደ ዕልባቶች አክል</translation>
 <translation id="6965382102122355670">እሺ</translation>
 <translation id="8258999165172757081">ታክሏል</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ar.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ar.xtb
index e14ec8c3..3c8144c1 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ar.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ar.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="ar">
 <translation id="1613742542373525524">‏يتعذّر على APPLICATION_NAME التعامل مع هذا الرابط.</translation>
 <translation id="4655616150233109325">‏فتح في Chrome</translation>
-<translation id="4743991241988563337">القراءة لاحقًا</translation>
+<translation id="601731541915429022">إضافة إلى قائمة القراءة</translation>
 <translation id="6930009216791986919">إضافة إلى الإشارات المرجعية</translation>
 <translation id="6965382102122355670">حسنًا</translation>
 <translation id="8258999165172757081">تمت الإضافة</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_as.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_as.xtb
index f0a9435e..c48e574 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_as.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_as.xtb
@@ -3,7 +3,6 @@
 <translationbundle lang="as">
 <translation id="1613742542373525524">APPLICATION_NAMEএ এই লিংকটো নিয়ন্ত্ৰণ কৰিব নোৱাৰে৷</translation>
 <translation id="4655616150233109325">Chromeত খোলক</translation>
-<translation id="4743991241988563337">পিছত পঢ়ক</translation>
 <translation id="6930009216791986919">বুকমার্কত যোগ কৰক</translation>
 <translation id="6965382102122355670">ঠিক আছে</translation>
 <translation id="8258999165172757081">যোগ কৰা হ’ল</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_az.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_az.xtb
index a63183d..db7cf44 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_az.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_az.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="az">
 <translation id="1613742542373525524">APPLICATION_NAME bu linki idarə edə bilməz.</translation>
 <translation id="4655616150233109325">Chrome'da açın</translation>
-<translation id="4743991241988563337">Daha Sonra Oxuyun</translation>
+<translation id="601731541915429022">Oxu Siyahısına əlavə edin</translation>
 <translation id="6930009216791986919">Əlfəcinlərə əlavə edin</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Əlavə edilib</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_be.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_be.xtb
index 13c4fc4..daec5bf 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_be.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_be.xtb
@@ -3,7 +3,6 @@
 <translationbundle lang="be">
 <translation id="1613742542373525524">Праграме APPLICATION_NAME не ўдаецца апрацаваць гэту спасылку.</translation>
 <translation id="4655616150233109325">Адкрыць у Chrome</translation>
-<translation id="4743991241988563337">Чытаць пазней</translation>
 <translation id="6930009216791986919">Дадаць у закладкі</translation>
 <translation id="6965382102122355670">ОК</translation>
 <translation id="8258999165172757081">Дададзена</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_bg.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_bg.xtb
index cd9583d..f886500d 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_bg.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_bg.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="bg">
 <translation id="1613742542373525524">APPLICATION_NAME не може да обработи тази връзка.</translation>
 <translation id="4655616150233109325">Отваряне в Chrome</translation>
-<translation id="4743991241988563337">Четене по-късно</translation>
+<translation id="601731541915429022">Добавяне към списъка за четене</translation>
 <translation id="6930009216791986919">Добавяне към отметките</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Добавено</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_bn.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_bn.xtb
index 10b97d8..f5dc026a 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_bn.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_bn.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="bn">
 <translation id="1613742542373525524">APPLICATION_NAME এই লিঙ্কটি পরিচালনা করতে পারছে না।</translation>
 <translation id="4655616150233109325">Chrome-এ খুলুন</translation>
-<translation id="4743991241988563337">পরে পড়ুন</translation>
+<translation id="601731541915429022">পড়ার তালিকায় যোগ করুন</translation>
 <translation id="6930009216791986919">বুকমার্কে যোগ করুন</translation>
 <translation id="6965382102122355670">ঠিক আছে</translation>
 <translation id="8258999165172757081">যোগ করা্ হয়েছে</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_bs.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_bs.xtb
index 5e68e3c3..02f5a35 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_bs.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_bs.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="bs">
 <translation id="1613742542373525524">APPLICATION_NAME ne može obraditi ovaj link.</translation>
 <translation id="4655616150233109325">Otvori u Chromeu</translation>
-<translation id="4743991241988563337">Pročitaj kasnije</translation>
+<translation id="601731541915429022">Dodaj na popis za čitanje</translation>
 <translation id="6930009216791986919">Dodaj u oznake</translation>
 <translation id="6965382102122355670">Uredu</translation>
 <translation id="8258999165172757081">Dodano</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ca.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ca.xtb
index 486d7d3..fe37a066 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ca.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ca.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="ca">
 <translation id="1613742542373525524">APPLICATION_NAME no pot gestionar aquest enllaç.</translation>
 <translation id="4655616150233109325">Obre a Chrome</translation>
-<translation id="4743991241988563337">Llegeix més tard</translation>
+<translation id="601731541915429022">Afegeix a la llista de lectura</translation>
 <translation id="6930009216791986919">Afegeix a les adreces d'interès</translation>
 <translation id="6965382102122355670">D'acord</translation>
 <translation id="8258999165172757081">S'ha afegit</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_cs.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_cs.xtb
index ef3c2bad..ee85cc6 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_cs.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_cs.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="cs">
 <translation id="1613742542373525524">Aplikace APPLICATION_NAME tento odkaz nedokáže zpracovat.</translation>
 <translation id="4655616150233109325">Otevřít v Chromu</translation>
-<translation id="4743991241988563337">Přečíst později</translation>
+<translation id="601731541915429022">Přidat do seznamu četby</translation>
 <translation id="6930009216791986919">Přidat do záložek</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Přidáno</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_da.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_da.xtb
index 91998ab..057aaa5 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_da.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_da.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="da">
 <translation id="1613742542373525524">APPLICATION_NAME kan ikke håndtere dette link.</translation>
 <translation id="4655616150233109325">Åbn i Chrome</translation>
-<translation id="4743991241988563337">Læs senere</translation>
+<translation id="601731541915429022">Føj til læseliste</translation>
 <translation id="6930009216791986919">Føj til bogmærker</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Tilføjet</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_de.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_de.xtb
index 5ce6c5b..12148b9 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_de.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_de.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="de">
 <translation id="1613742542373525524">APPLICATION_NAME kann diesen Link nicht verarbeiten.</translation>
 <translation id="4655616150233109325">In Chrome öffnen</translation>
-<translation id="4743991241988563337">Später lesen</translation>
+<translation id="601731541915429022">Zur Leseliste hinzufügen</translation>
 <translation id="6930009216791986919">Zu Lesezeichen hinzufügen</translation>
 <translation id="6965382102122355670">Ok</translation>
 <translation id="8258999165172757081">Hinzugefügt</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_el.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_el.xtb
index 90f4292..ed009d61 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_el.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_el.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="el">
 <translation id="1613742542373525524">Η εφαρμογή APPLICATION_NAME δεν μπορεί να διαχειριστεί αυτόν τον σύνδεσμο.</translation>
 <translation id="4655616150233109325">Άνοιγμα στο Chrome</translation>
-<translation id="4743991241988563337">Ανάγνωση αργότερα</translation>
+<translation id="601731541915429022">Προσθήκη στη λίστα ανάγνωσης</translation>
 <translation id="6930009216791986919">Προσθήκη στους σελιδοδείκτες</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Προστέθηκε</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_en-GB.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_en-GB.xtb
index 8a46a521..fcd33de 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_en-GB.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_en-GB.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="en-GB">
 <translation id="1613742542373525524">APPLICATION_NAME cannot handle this link.</translation>
 <translation id="4655616150233109325">Open in Chrome</translation>
-<translation id="4743991241988563337">Read later</translation>
+<translation id="601731541915429022">Add to Reading List</translation>
 <translation id="6930009216791986919">Add to Bookmarks</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Added</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_es-419.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_es-419.xtb
index c4449465..ef11b87 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_es-419.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_es-419.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="es-419">
 <translation id="1613742542373525524">APPLICATION_NAME no puede manejar este vínculo.</translation>
 <translation id="4655616150233109325">Abrir en Chrome</translation>
-<translation id="4743991241988563337">Leer más tarde</translation>
+<translation id="601731541915429022">Agregar a la lista de lectura</translation>
 <translation id="6930009216791986919">Agregar a Marcadores</translation>
 <translation id="6965382102122355670">Aceptar</translation>
 <translation id="8258999165172757081">Agregado</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_es.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_es.xtb
index e1e16ad..8c35a2a 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_es.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_es.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="es">
 <translation id="1613742542373525524">APPLICATION_NAME no puede procesar este enlace.</translation>
 <translation id="4655616150233109325">Abrir en Chrome</translation>
-<translation id="4743991241988563337">Leer más adelante</translation>
+<translation id="601731541915429022">Añadir a Lista de lectura</translation>
 <translation id="6930009216791986919">Añadir a marcadores</translation>
 <translation id="6965382102122355670">Aceptar</translation>
 <translation id="8258999165172757081">Añadido</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_et.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_et.xtb
index e98330e..605ebfa 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_et.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_et.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="et">
 <translation id="1613742542373525524">Rakendus APPLICATION_NAME ei saa seda linki töödelda.</translation>
 <translation id="4655616150233109325">Ava Chrome’is</translation>
-<translation id="4743991241988563337">Hiljem lugemiseks</translation>
+<translation id="601731541915429022">Lisa lugemisloendisse</translation>
 <translation id="6930009216791986919">Lisa järjehoidjatesse</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Lisatud</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_eu.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_eu.xtb
index ae51a2a..16080ad 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_eu.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_eu.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="eu">
 <translation id="1613742542373525524">APPLICATION_NAME aplikazioak ezin du ireki esteka hau.</translation>
 <translation id="4655616150233109325">Ireki Chrome-n</translation>
-<translation id="4743991241988563337">Irakurri geroago</translation>
+<translation id="601731541915429022">Gehitu Irakurketa-zerrendan</translation>
 <translation id="6930009216791986919">Gehitu laster-marketan</translation>
 <translation id="6965382102122355670">Ados</translation>
 <translation id="8258999165172757081">Gehitu da</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fa.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fa.xtb
index 2773bbd..5669294 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fa.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fa.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="fa">
 <translation id="1613742542373525524">‏APPLICATION_NAME نمی‌تواند با این پیوند کار کند.</translation>
 <translation id="4655616150233109325">‏باز کردن در Chrome</translation>
-<translation id="4743991241988563337">خواندن در فرصتی دیگر</translation>
+<translation id="601731541915429022">افزودن به فهرست خواندن</translation>
 <translation id="6930009216791986919">افزودن به نشانک‌ها</translation>
 <translation id="6965382102122355670">قبول</translation>
 <translation id="8258999165172757081">اضافه شد</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fi.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fi.xtb
index ce14c81..dadcad77 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fi.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fi.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="fi">
 <translation id="1613742542373525524">APPLICATION_NAME ei voi käsitellä tätä linkkiä.</translation>
 <translation id="4655616150233109325">Avaa Chromessa</translation>
-<translation id="4743991241988563337">Lue myöhemmin</translation>
+<translation id="601731541915429022">Lisää lukulistalle</translation>
 <translation id="6930009216791986919">Lisää kirjanmerkkeihin</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Lisätty</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fil.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fil.xtb
index 525b2d2..f944da5 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fil.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fil.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="fil">
 <translation id="1613742542373525524">Hindi maaaring pamahalaan ng APPLICATION_NAME ang link na ito.</translation>
 <translation id="4655616150233109325">Buksan sa Chrome</translation>
-<translation id="4743991241988563337">Basahin Sa Ibang Pagkakataon</translation>
+<translation id="601731541915429022">Idagdag sa Listahan ng Babasahin</translation>
 <translation id="6930009216791986919">Idagdag sa Mga Bookmark</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Naidagdag</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fr-CA.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fr-CA.xtb
index 3354c20..88fae8d8 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fr-CA.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fr-CA.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="fr-CA">
 <translation id="1613742542373525524">APPLICATION_NAME ne peut pas traiter ce lien.</translation>
 <translation id="4655616150233109325">Ouvrir dans Chrome</translation>
-<translation id="4743991241988563337">Lire plus tard</translation>
+<translation id="601731541915429022">Ajouter à la liste de lecture</translation>
 <translation id="6930009216791986919">Ajouter aux favoris</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Ajouté</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fr.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fr.xtb
index abe3bf2..c95e4e8 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fr.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_fr.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="fr">
 <translation id="1613742542373525524">APPLICATION_NAME ne reconnaît pas ce lien.</translation>
 <translation id="4655616150233109325">Ouvrir dans Chrome</translation>
-<translation id="4743991241988563337">Lire plus tard</translation>
+<translation id="601731541915429022">Ajouter à la liste de lecture</translation>
 <translation id="6930009216791986919">Ajouter aux favoris</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Ajouté</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_gl.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_gl.xtb
index e7421ff73f..a0daa8bb 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_gl.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_gl.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="gl">
 <translation id="1613742542373525524">APPLICATION_NAME non pode procesar esta ligazón.</translation>
 <translation id="4655616150233109325">Abrir en Chrome</translation>
-<translation id="4743991241988563337">Ler máis tarde</translation>
+<translation id="601731541915429022">Engadir á lista de lectura</translation>
 <translation id="6930009216791986919">Engadir aos marcadores</translation>
 <translation id="6965382102122355670">Aceptar</translation>
 <translation id="8258999165172757081">Engadiuse</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_gu.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_gu.xtb
index fc6034ba..baedd6af 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_gu.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_gu.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="gu">
 <translation id="1613742542373525524">APPLICATION_NAME ઍપ્લિકેશન આ લિંકને હેન્ડલ કરી શકતી નથી.</translation>
 <translation id="4655616150233109325">Chromeમાં ખોલો</translation>
-<translation id="4743991241988563337">પછીથી વાંચો</translation>
+<translation id="601731541915429022">વાંચન સૂચિમાં ઉમેરો</translation>
 <translation id="6930009216791986919">બુકમાર્ક્સમાં ઉમેરો</translation>
 <translation id="6965382102122355670">બરાબર, સમજાઇ ગયું</translation>
 <translation id="8258999165172757081">ઉમેરી</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hi.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hi.xtb
index aa51587..afcb2bc 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hi.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hi.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="hi">
 <translation id="1613742542373525524">APPLICATION_NAME यह लिंक संसाधित नहीं कर सकता.</translation>
 <translation id="4655616150233109325">Chrome में खोलें</translation>
-<translation id="4743991241988563337">बाद में पढ़ें</translation>
+<translation id="601731541915429022">पठन सूची में जोड़ें</translation>
 <translation id="6930009216791986919">बुकमार्क में जोड़ें</translation>
 <translation id="6965382102122355670">ठीक है</translation>
 <translation id="8258999165172757081">जोड़ा गया</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hr.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hr.xtb
index db2132a..d28b8011 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hr.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hr.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="hr">
 <translation id="1613742542373525524">APPLICATION_NAME ne može obraditi ovu vezu.</translation>
 <translation id="4655616150233109325">Otvori u Chromeu</translation>
-<translation id="4743991241988563337">Pročitajte kasnije</translation>
+<translation id="601731541915429022">Dodaj na popis za čitanje</translation>
 <translation id="6930009216791986919">Dodaj u oznake</translation>
 <translation id="6965382102122355670">U redu</translation>
 <translation id="8258999165172757081">Dodano</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hu.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hu.xtb
index ffe488d7..58ee8ac0 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hu.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hu.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="hu">
 <translation id="1613742542373525524">A(z) APPLICATION_NAME alkalmazás nem tudja kezelni ezt a linket.</translation>
 <translation id="4655616150233109325">Megnyitás Chrome-ban</translation>
-<translation id="4743991241988563337">Olvasás később</translation>
+<translation id="601731541915429022">Hozzáadás olvasási listához</translation>
 <translation id="6930009216791986919">Hozzáadás a könyvjelzőkhöz</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Hozzáadva</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hy.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hy.xtb
index 985055812..69c28a50 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hy.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_hy.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="hy">
 <translation id="1613742542373525524">APPLICATION_NAME հավելվածը չի կարող բացել այս հղումը:</translation>
 <translation id="4655616150233109325">Բացել Chrome-ով</translation>
-<translation id="4743991241988563337">Կարդալ ավելի ուշ</translation>
+<translation id="601731541915429022">Ավելացնել ընթերցանության ցանկում</translation>
 <translation id="6930009216791986919">Ավելացնել էջանիշների ցանկում</translation>
 <translation id="6965382102122355670">Եղավ</translation>
 <translation id="8258999165172757081">Ավելացվեց</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_id.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_id.xtb
index f6c4b15..953af989 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_id.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_id.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="id">
 <translation id="1613742542373525524">APPLICATION_NAME tidak dapat menangani link ini.</translation>
 <translation id="4655616150233109325">Buka di Chrome</translation>
-<translation id="4743991241988563337">Baca Nanti</translation>
+<translation id="601731541915429022">Tambahkan ke Daftar Bacaan</translation>
 <translation id="6930009216791986919">Tambahkan ke Bookmark</translation>
 <translation id="6965382102122355670">Oke</translation>
 <translation id="8258999165172757081">Ditambahkan</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_is.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_is.xtb
index 25ba83b..4760b7c 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_is.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_is.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="is">
 <translation id="1613742542373525524">APPLICATION_NAME getur ekki notað þennan tengil.</translation>
 <translation id="4655616150233109325">Opna í Chrome</translation>
-<translation id="4743991241988563337">Lesa síðar</translation>
+<translation id="601731541915429022">Bæta við leslista</translation>
 <translation id="6930009216791986919">Bæta við bókamerki</translation>
 <translation id="6965382102122355670">Í lagi</translation>
 <translation id="8258999165172757081">Bætt við</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_it.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_it.xtb
index 91fcd200..dd5dbdc 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_it.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_it.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="it">
 <translation id="1613742542373525524">APPLICATION_NAME non supporta questo link.</translation>
 <translation id="4655616150233109325">Apri in Chrome</translation>
-<translation id="4743991241988563337">Leggi dopo</translation>
+<translation id="601731541915429022">Aggiungi all'elenco di lettura</translation>
 <translation id="6930009216791986919">Aggiungi ai preferiti</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Aggiunto</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_iw.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_iw.xtb
index 88f0086..286f42a1 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_iw.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_iw.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="iw">
 <translation id="1613742542373525524">‏האפליקציה APPLICATION_NAME לא יכולה לטפל בקישור הזה.</translation>
 <translation id="4655616150233109325">‏פתיחה ב-Chrome</translation>
-<translation id="4743991241988563337">הוספה לרשימת קריאה</translation>
+<translation id="601731541915429022">הוסף לרשימת הקריאה</translation>
 <translation id="6930009216791986919">הוספה לסימניות</translation>
 <translation id="6965382102122355670">אישור</translation>
 <translation id="8258999165172757081">נוסף</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ja.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ja.xtb
index 26edc4e..d8929bc 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ja.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ja.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="ja">
 <translation id="1613742542373525524">APPLICATION_NAME はこのリンクを処理できません。</translation>
 <translation id="4655616150233109325">Chrome で開く</translation>
-<translation id="4743991241988563337">後で読む</translation>
+<translation id="601731541915429022">リーディング リストに追加</translation>
 <translation id="6930009216791986919">ブックマークに追加</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">追加済み</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ka.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ka.xtb
index 2b22bccd..0c1f3be 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ka.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ka.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="ka">
 <translation id="1613742542373525524">APPLICATION_NAME ამ ბმულის დამუშავებას ვერ ახერხებს.</translation>
 <translation id="4655616150233109325">Chrome-ში გახსნა</translation>
-<translation id="4743991241988563337">მოგვიანებით წაკითხვა</translation>
+<translation id="601731541915429022">საკითხავ სიაში დამატება</translation>
 <translation id="6930009216791986919">სანიშნეებში დამატება</translation>
 <translation id="6965382102122355670">კარგი</translation>
 <translation id="8258999165172757081">დამატებულია</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_kk.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_kk.xtb
index 28dcf36e..8fa281f 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_kk.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_kk.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="kk">
 <translation id="1613742542373525524">APPLICATION_NAME қолданбасы бұл сілтемені өңдей алмайды.</translation>
 <translation id="4655616150233109325">Chrome браузерінде ашу</translation>
-<translation id="4743991241988563337">Кейінірек оқу</translation>
+<translation id="601731541915429022">Оқу тізіміне қосу</translation>
 <translation id="6930009216791986919">Бетбелгілерге енгізу</translation>
 <translation id="6965382102122355670">Жарайды</translation>
 <translation id="8258999165172757081">Енгізілді</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_km.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_km.xtb
index 98f8363..790c8b5 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_km.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_km.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="km">
 <translation id="1613742542373525524">APPLICATION_NAME មិន​អាច​បើក​តំណ​នេះ​បាន​ទេ។</translation>
 <translation id="4655616150233109325">បើកនៅក្នុង Chrome</translation>
-<translation id="4743991241988563337">អាននៅពេលក្រោយ</translation>
+<translation id="601731541915429022">បញ្ចូល​ទៅ​ក្នុង​បញ្ជី​អាន</translation>
 <translation id="6930009216791986919">បញ្ចូល​ទៅ​ក្នុង​ចំណាំ</translation>
 <translation id="6965382102122355670">យល់ព្រម</translation>
 <translation id="8258999165172757081">បានបន្ថែម</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_kn.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_kn.xtb
index a69f50b..4efed173b 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_kn.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_kn.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="kn">
 <translation id="1613742542373525524">ಈ ಲಿಂಕ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು APPLICATION_NAME ಗೆ ಸಾಧ್ಯವಿಲ್ಲ.</translation>
 <translation id="4655616150233109325">Chrome ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
-<translation id="4743991241988563337">ನಂತರ ಓದಿ</translation>
+<translation id="601731541915429022">ಓದುವ ಪಟ್ಟಿಗೆ ಸೇರಿಸಿ</translation>
 <translation id="6930009216791986919">ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳಿಗೆ ಸೇರಿಸಿ</translation>
 <translation id="6965382102122355670">ಸರಿ</translation>
 <translation id="8258999165172757081">ಸೇರಿಸಲಾಗಿದೆ</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ko.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ko.xtb
index f66e3d95..a657be8 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ko.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ko.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="ko">
 <translation id="1613742542373525524">APPLICATION_NAME에서 이 링크를 처리할 수 없습니다.</translation>
 <translation id="4655616150233109325">Chrome에서 열기</translation>
-<translation id="4743991241988563337">나중에 읽기</translation>
+<translation id="601731541915429022">읽기 목록에 추가</translation>
 <translation id="6930009216791986919">북마크에 추가</translation>
 <translation id="6965382102122355670">확인</translation>
 <translation id="8258999165172757081">추가됨</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ky.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ky.xtb
index 908c88f..1d6c7b7a 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ky.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ky.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="ky">
 <translation id="1613742542373525524">APPLICATION_NAME колдонмосунда бул шилтеме ачылбай жатат.</translation>
 <translation id="4655616150233109325">Chrome'до ачуу</translation>
-<translation id="4743991241988563337">Кийинчерээк окуу</translation>
+<translation id="601731541915429022">Окуу тизмесине кошуу</translation>
 <translation id="6930009216791986919">Кыстармаларга кошуу</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Кошулду</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_lo.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_lo.xtb
index dacd527c1..af1f963 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_lo.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_lo.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="lo">
 <translation id="1613742542373525524">APPLICATION_NAME ບໍ່ສາມາດຈັດການລິ້ງນີ້ໄດ້.</translation>
 <translation id="4655616150233109325">ເປີດໃນ Chrome</translation>
-<translation id="4743991241988563337">ອ່ານໃນພາຍຫຼັງ</translation>
+<translation id="601731541915429022">ເພີ່ມໃສ່ລາຍການທີ່ຈະອ່ານ</translation>
 <translation id="6930009216791986919">ເພີ່ມໃສ່ບຸກມາກ</translation>
 <translation id="6965382102122355670">ຕົກລົງ</translation>
 <translation id="8258999165172757081">ເພີ່ມແລ້ວ</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_lt.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_lt.xtb
index 4af5a23..4a34a3c 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_lt.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_lt.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="lt">
 <translation id="1613742542373525524">„APPLICATION_NAME“ negali apdoroti šios nuorodos.</translation>
 <translation id="4655616150233109325">Atidaryti naudojant „Chrome“</translation>
-<translation id="4743991241988563337">Skaityti vėliau</translation>
+<translation id="601731541915429022">Pridėti prie skaitomų sąrašo</translation>
 <translation id="6930009216791986919">Pridėti prie žymių</translation>
 <translation id="6965382102122355670">Gerai</translation>
 <translation id="8258999165172757081">Pridėta</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_lv.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_lv.xtb
index 4af0f0a8..464ce32d 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_lv.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_lv.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="lv">
 <translation id="1613742542373525524">APPLICATION_NAME nevar apstrādāt šo saiti.</translation>
 <translation id="4655616150233109325">Atvērt pārlūkā Chrome</translation>
-<translation id="4743991241988563337">Lasīt vēlāk</translation>
+<translation id="601731541915429022">Pievienot lasīšanas sarakstam</translation>
 <translation id="6930009216791986919">Pievienot grāmatzīmēm</translation>
 <translation id="6965382102122355670">Labi</translation>
 <translation id="8258999165172757081">Pievienota</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_mk.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_mk.xtb
index 25a2dbe..7f2ea3d 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_mk.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_mk.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="mk">
 <translation id="1613742542373525524">APPLICATION_NAME не може да го отвори овој линк.</translation>
 <translation id="4655616150233109325">Отвори во Chrome</translation>
-<translation id="4743991241988563337">Прочитајте подоцна</translation>
+<translation id="601731541915429022">Додај во „Список за читање“</translation>
 <translation id="6930009216791986919">Додај во „Обележувачи“</translation>
 <translation id="6965382102122355670">Во ред</translation>
 <translation id="8258999165172757081">Додадено</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ml.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ml.xtb
index be8fab4..30aea666 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ml.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ml.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="ml">
 <translation id="1613742542373525524">APPLICATION_NAME എന്നതിന് ഈ ലിങ്ക് കൈകാര്യം ചെയ്യാനാവില്ല.</translation>
 <translation id="4655616150233109325">Chrome-ൽ തുറക്കുക</translation>
-<translation id="4743991241988563337">പിന്നീട് വായിക്കുക</translation>
+<translation id="601731541915429022">വായന ലിസ്റ്റിൽ ചേർക്കുക</translation>
 <translation id="6930009216791986919">ബുക്ക്‌മാർക്കുകളിൽ ചേർക്കുക</translation>
 <translation id="6965382102122355670">ശരി</translation>
 <translation id="8258999165172757081">ചേർത്തു</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_mn.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_mn.xtb
index a2085e3..a679606f 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_mn.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_mn.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="mn">
 <translation id="1613742542373525524">APPLICATION_NAME энэ холбоосыг боловсруулах боломжгүй.</translation>
 <translation id="4655616150233109325">Chrome-д нээх</translation>
-<translation id="4743991241988563337">Дараа унших</translation>
+<translation id="601731541915429022">Унших жагсаалтад нэмэх</translation>
 <translation id="6930009216791986919">Хавчуургaд нэмэх</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Нэмсэн</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_mr.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_mr.xtb
index 6e7e0028..874902f 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_mr.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_mr.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="mr">
 <translation id="1613742542373525524">APPLICATION_NAME ही लिंक हाताळू शकत नाही.</translation>
 <translation id="4655616150233109325">Chrome मध्ये उघडा</translation>
-<translation id="4743991241988563337">नंतर वाचा</translation>
+<translation id="601731541915429022">वाचन सूचीमध्ये जोडा</translation>
 <translation id="6930009216791986919">बुकमार्कमध्ये जोडा</translation>
 <translation id="6965382102122355670">ठीक आहे</translation>
 <translation id="8258999165172757081">जोडले</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ms.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ms.xtb
index 71322d4..9ed01eb 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ms.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ms.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="ms">
 <translation id="1613742542373525524">APPLICATION_NAME tidak dapat mengendalikan pautan ini.</translation>
 <translation id="4655616150233109325">Buka dalam Chrome</translation>
-<translation id="4743991241988563337">Baca Kemudian</translation>
+<translation id="601731541915429022">Tambahkan pada Senarai Bacaan</translation>
 <translation id="6930009216791986919">Tambahkan pada Penanda Halaman</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Ditambah</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_my.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_my.xtb
index 2a4b250..281821c 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_my.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_my.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="my">
 <translation id="1613742542373525524">APPLICATION_NAME သည် ဤလင့်ခ်ကို ဖွင့်၍မရပါ။</translation>
 <translation id="4655616150233109325">Chrome တွင် ဖွင့်ရန်</translation>
-<translation id="4743991241988563337">နောက်မှဖတ်ရန်</translation>
+<translation id="601731541915429022">ဖတ်ရန်စာရင်းသို့ ထည့်ရန်</translation>
 <translation id="6930009216791986919">ဝဘ်လိပ်စာများသို့ ထည့်ရန်</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">ထည့်ပြီးပါပြီ</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ne.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ne.xtb
index 509e166..f40df83fa 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ne.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ne.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="ne">
 <translation id="1613742542373525524">APPLICATION_NAME ले यो लिंक माथिको कारबाही गर्न सक्दैन।</translation>
 <translation id="4655616150233109325">Chrome मा खोल्नुहोस्</translation>
-<translation id="4743991241988563337">पछि पढ्नुहोस्</translation>
+<translation id="601731541915429022">पाठ्य सूचीमा थप्नुहोस्</translation>
 <translation id="6930009216791986919">पुस्तक चिन्हहरूमा थप्नुहोस्</translation>
 <translation id="6965382102122355670">ठिक छ</translation>
 <translation id="8258999165172757081">थपियो</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_nl.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_nl.xtb
index d159e6c..5e6d66a 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_nl.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_nl.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="nl">
 <translation id="1613742542373525524">APPLICATION_NAME kan deze link niet verwerken.</translation>
 <translation id="4655616150233109325">Openen in Chrome</translation>
-<translation id="4743991241988563337">Later lezen</translation>
+<translation id="601731541915429022">Toevoegen aan leeslijst</translation>
 <translation id="6930009216791986919">Toevoegen aan bookmarks</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Toegevoegd</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_no.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_no.xtb
index 7524709..6f3494a9 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_no.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_no.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="no">
 <translation id="1613742542373525524">APPLICATION_NAME kan ikke behandle denne linken.</translation>
 <translation id="4655616150233109325">Åpne i Chrome</translation>
-<translation id="4743991241988563337">Les senere</translation>
+<translation id="601731541915429022">Legg til i leselisten</translation>
 <translation id="6930009216791986919">Legg til i bokmerker</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Lagt til</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_or.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_or.xtb
index 47beb5f..525ec97 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_or.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_or.xtb
@@ -3,7 +3,6 @@
 <translationbundle lang="or">
 <translation id="1613742542373525524">APPLICATION_NAME ଏହି ଲିଙ୍କ୍‌କୁ ପରିଚାଳନା କରିପାରିବ ନାହିଁ।</translation>
 <translation id="4655616150233109325">Chromeରେ ଖୋଲନ୍ତୁ</translation>
-<translation id="4743991241988563337">ପରେ ପଢ଼ନ୍ତୁ</translation>
 <translation id="6930009216791986919">ବୁକମାର୍କଗୁଡ଼ିକରେ ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="6965382102122355670">ଓକେ ବଟନ୍</translation>
 <translation id="8258999165172757081">ଯୋଗ କରାଯାଇଛି</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pa.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pa.xtb
index c7b89325..0a7b023 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pa.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pa.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="pa">
 <translation id="1613742542373525524">APPLICATION_NAME ਐਪਲੀਕੇਸ਼ਨ ਇਸ ਲਿੰਕ ਨੂੰ ਹੈਂਡਲ ਨਹੀਂ ਕਰ ਸਕਦੀ।</translation>
 <translation id="4655616150233109325">Chrome ਵਿੱਚ ਖੋਲ੍ਹੋ</translation>
-<translation id="4743991241988563337">ਬਾਅਦ ਵਿੱਚ ਪੜ੍ਹੋ</translation>
+<translation id="601731541915429022">ਪੜ੍ਹਨ ਸੂਚੀ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ</translation>
 <translation id="6930009216791986919">ਬੁੱਕਮਾਰਕਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ</translation>
 <translation id="6965382102122355670">ਠੀਕ</translation>
 <translation id="8258999165172757081">ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pl.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pl.xtb
index 8400420..5cebde3 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pl.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pl.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="pl">
 <translation id="1613742542373525524">APPLICATION_NAME nie obsługuje tego linku.</translation>
 <translation id="4655616150233109325">Otwórz w Chrome</translation>
-<translation id="4743991241988563337">Przeczytaj później</translation>
+<translation id="601731541915429022">Dodaj do listy „Do przeczytania”</translation>
 <translation id="6930009216791986919">Dodaj do zakładek</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Dodano</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pt-BR.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pt-BR.xtb
index 841f2cd..347688cd 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pt-BR.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pt-BR.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="pt-BR">
 <translation id="1613742542373525524">O app APPLICATION_NAME não consegue processar esse link.</translation>
 <translation id="4655616150233109325">Abrir no Chrome</translation>
-<translation id="4743991241988563337">Ler mais tarde</translation>
+<translation id="601731541915429022">Adicionar à lista de leitura</translation>
 <translation id="6930009216791986919">Adicionar aos favoritos</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Adicionado</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pt-PT.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pt-PT.xtb
index 71d856b..ef6d612 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pt-PT.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_pt-PT.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="pt-PT">
 <translation id="1613742542373525524">A aplicação APPLICATION_NAME não pode processar este link.</translation>
 <translation id="4655616150233109325">Abrir no Chrome</translation>
-<translation id="4743991241988563337">Ler mais tarde</translation>
+<translation id="601731541915429022">Adicionar à lista de leitura</translation>
 <translation id="6930009216791986919">Adicionar aos marcadores</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Adicionado</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ro.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ro.xtb
index 37237013..9f883ff 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ro.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ro.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="ro">
 <translation id="1613742542373525524">APPLICATION_NAME nu poate gestiona acest link.</translation>
 <translation id="4655616150233109325">Deschide în Chrome</translation>
-<translation id="4743991241988563337">Citește mai târziu</translation>
+<translation id="601731541915429022">Adaugă în lista de lectură</translation>
 <translation id="6930009216791986919">Adaugă în marcaje</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Adăugat</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ru.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ru.xtb
index e666ec3b..eb59bf3 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ru.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ru.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="ru">
 <translation id="1613742542373525524">Приложение "APPLICATION_NAME" не может открыть эту ссылку.</translation>
 <translation id="4655616150233109325">Открыть в Chrome</translation>
-<translation id="4743991241988563337">Читать позже</translation>
+<translation id="601731541915429022">Добавить в список для чтения</translation>
 <translation id="6930009216791986919">Добавить в закладки</translation>
 <translation id="6965382102122355670">ОК</translation>
 <translation id="8258999165172757081">Добавлено</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_si.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_si.xtb
index b7f094d..ff26fad 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_si.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_si.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="si">
 <translation id="1613742542373525524">APPLICATION_NAME හට මෙම සබැඳිය හැසිරවිය නොහැක.</translation>
 <translation id="4655616150233109325">Chrome තුළ විවෘත කරන්න</translation>
-<translation id="4743991241988563337">පසුව කියවන්න</translation>
+<translation id="601731541915429022">කියවීම් ලැයිස්තුවට එක් කරන්න</translation>
 <translation id="6930009216791986919">පිටුසන් වෙත එක් කරන්න</translation>
 <translation id="6965382102122355670">හරි</translation>
 <translation id="8258999165172757081">එක් කළේය</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sk.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sk.xtb
index 1f52fe1..0bd2ef8 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sk.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sk.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="sk">
 <translation id="1613742542373525524">Aplikácia APPLICATION_NAME nedokáže spracovať tento odkaz.</translation>
 <translation id="4655616150233109325">Otvoriť v Chrome</translation>
-<translation id="4743991241988563337">Prečítať neskôr</translation>
+<translation id="601731541915429022">Pridať do zoznamu na čítanie</translation>
 <translation id="6930009216791986919">Pridať medzi záložky</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Pridané</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sl.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sl.xtb
index 741ebd89..810464a0 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sl.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sl.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="sl">
 <translation id="1613742542373525524">Aplikacija APPLICATION_NAME ne more obravnavati te povezave.</translation>
 <translation id="4655616150233109325">Odpri v Chromu</translation>
-<translation id="4743991241988563337">Poznejše branje</translation>
+<translation id="601731541915429022">Dodaj na bralni seznam</translation>
 <translation id="6930009216791986919">Dodaj med zaznamke</translation>
 <translation id="6965382102122355670">V redu</translation>
 <translation id="8258999165172757081">Dodano</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sq.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sq.xtb
index 54087d3..6245934 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sq.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sq.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="sq">
 <translation id="1613742542373525524">APPLICATION_NAME nuk mund ta përpunojë këtë lidhje.</translation>
 <translation id="4655616150233109325">Hape në Chrome</translation>
-<translation id="4743991241988563337">Lexo më vonë</translation>
+<translation id="601731541915429022">Shto te lista e leximit</translation>
 <translation id="6930009216791986919">Shto te faqeshënuesit</translation>
 <translation id="6965382102122355670">Në rregull</translation>
 <translation id="8258999165172757081">U shtua</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sr-Latn.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sr-Latn.xtb
index 065fccee..e230aed7 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sr-Latn.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sr-Latn.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="sr-Latn">
 <translation id="1613742542373525524">APPLICATION_NAME ne može da obradi ovaj link.</translation>
 <translation id="4655616150233109325">Otvori u Chrome-u</translation>
-<translation id="4743991241988563337">Pročitajte kasnije</translation>
+<translation id="601731541915429022">Dodaj na Listu za čitanje</translation>
 <translation id="6930009216791986919">Dodaj u obeleživače</translation>
 <translation id="6965382102122355670">Potvrdi</translation>
 <translation id="8258999165172757081">Dodato</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sr.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sr.xtb
index 134ad99..ad2424b 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sr.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sr.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="sr">
 <translation id="1613742542373525524">APPLICATION_NAME не може да обради овај линк.</translation>
 <translation id="4655616150233109325">Отвори у Chrome-у</translation>
-<translation id="4743991241988563337">Прочитајте касније</translation>
+<translation id="601731541915429022">Додај на Листу за читање</translation>
 <translation id="6930009216791986919">Додај у обележиваче</translation>
 <translation id="6965382102122355670">Потврди</translation>
 <translation id="8258999165172757081">Додато</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sv.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sv.xtb
index b850168..1e61142f 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sv.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sv.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="sv">
 <translation id="1613742542373525524">APPLICATION_NAME kan inte hantera den här länken.</translation>
 <translation id="4655616150233109325">Öppna i Chrome</translation>
-<translation id="4743991241988563337">Läs senare</translation>
+<translation id="601731541915429022">Lägg till i läslistan</translation>
 <translation id="6930009216791986919">Lägg till i bokmärken</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Tillagt</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sw.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sw.xtb
index a11dfa3..d4c2485 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sw.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_sw.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="sw">
 <translation id="1613742542373525524">APPLICATION_NAME imeshindwa kutumia kiungo hiki.</translation>
 <translation id="4655616150233109325">Fungua katika Chrome</translation>
-<translation id="4743991241988563337">Soma Baadaye</translation>
+<translation id="601731541915429022">Ongeza kwenye Orodha ya Kusoma</translation>
 <translation id="6930009216791986919">Ongeza kwenye Alamisho</translation>
 <translation id="6965382102122355670">Sawa</translation>
 <translation id="8258999165172757081">Imewekwa</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ta.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ta.xtb
index 6eb0cc0..ec07fe2 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ta.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ta.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="ta">
 <translation id="1613742542373525524">APPLICATION_NAME ஆப்ஸினால் இந்த இணைப்பைச் செயல்படுத்த முடியாது.</translation>
 <translation id="4655616150233109325">Chromeமில் திற</translation>
-<translation id="4743991241988563337">பின்னர் படிக்க</translation>
+<translation id="601731541915429022">வாசிப்புப் பட்டியலில் சேர்</translation>
 <translation id="6930009216791986919">புத்தகக்குறிகளில் சேர்</translation>
 <translation id="6965382102122355670">சரி</translation>
 <translation id="8258999165172757081">சேர்க்கப்பட்டது</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_te.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_te.xtb
index df69fa7..45ced9f 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_te.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_te.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="te">
 <translation id="1613742542373525524">APPLICATION_NAME ఈ లింక్‌ను హ్యాండిల్ చేయలేదు.</translation>
 <translation id="4655616150233109325">Chromeలో తెరువు</translation>
-<translation id="4743991241988563337">తర్వాత చదవండి</translation>
+<translation id="601731541915429022">పఠన జాబితాకు జోడించు</translation>
 <translation id="6930009216791986919">బుక్‌మార్క్‌లకు జోడించు</translation>
 <translation id="6965382102122355670">సరే</translation>
 <translation id="8258999165172757081">జోడించబడింది</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_th.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_th.xtb
index 66f7bcd3..f9c4612 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_th.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_th.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="th">
 <translation id="1613742542373525524">APPLICATION_NAME ไม่สามารถจัดการลิงก์นี้</translation>
 <translation id="4655616150233109325">เปิดใน Chrome</translation>
-<translation id="4743991241988563337">อ่านในภายหลัง</translation>
+<translation id="601731541915429022">เพิ่มไปยังเรื่องรออ่าน</translation>
 <translation id="6930009216791986919">เพิ่มลงในบุ๊กมาร์ก</translation>
 <translation id="6965382102122355670">ตกลง</translation>
 <translation id="8258999165172757081">มีแล้ว</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_tr.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_tr.xtb
index d070483..d21002f0 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_tr.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_tr.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="tr">
 <translation id="1613742542373525524">APPLICATION_NAME bu bağlantıyı işleyemiyor.</translation>
 <translation id="4655616150233109325">Chrome'da Aç</translation>
-<translation id="4743991241988563337">Daha Sonra Oku</translation>
+<translation id="601731541915429022">Okuma Listesine Ekle</translation>
 <translation id="6930009216791986919">Yer İşaretlerine Ekle</translation>
 <translation id="6965382102122355670">Tamam</translation>
 <translation id="8258999165172757081">Eklendi</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_uk.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_uk.xtb
index a2cd1c2e..02ff22d 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_uk.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_uk.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="uk">
 <translation id="1613742542373525524">Додатку APPLICATION_NAME не вдається обробити це посилання.</translation>
 <translation id="4655616150233109325">Відкрити в Chrome</translation>
-<translation id="4743991241988563337">Читати пізніше</translation>
+<translation id="601731541915429022">Додати в список читання</translation>
 <translation id="6930009216791986919">Додати в закладки</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Додано</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ur.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ur.xtb
index 1fb7407..aeef03b 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ur.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_ur.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="ur">
 <translation id="1613742542373525524">‏APPLICATION_NAME اس لنک کو ہینڈل نہیں کر سکتی ہے۔</translation>
 <translation id="4655616150233109325">‏Chrome میں کھولیں</translation>
-<translation id="4743991241988563337">بعد میں پڑھیں</translation>
+<translation id="601731541915429022">پڑھنے کی فہرست میں شامل کریں</translation>
 <translation id="6930009216791986919">بُک مارکس میں شامل کریں</translation>
 <translation id="6965382102122355670">ٹھیک ہے</translation>
 <translation id="8258999165172757081">شامل کر دیا گیا</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_uz.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_uz.xtb
index 4841c32..e0b5d73 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_uz.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_uz.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="uz">
 <translation id="1613742542373525524">APPLICATION_NAME bunday havolani ocha olmaydi.</translation>
 <translation id="4655616150233109325">Chrome orqali ochish</translation>
-<translation id="4743991241988563337">Keyinroq o‘qish</translation>
+<translation id="601731541915429022">Mutolaa ro‘yxatiga qo‘shish</translation>
 <translation id="6930009216791986919">Xatcho‘plarga qo‘shish</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Qo‘shildi</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_vi.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_vi.xtb
index ee08f6c..3e574d5 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_vi.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_vi.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="vi">
 <translation id="1613742542373525524">APPLICATION_NAME không thể xử lý liên kết này.</translation>
 <translation id="4655616150233109325">Mở bằng Chrome</translation>
-<translation id="4743991241988563337">Đọc sau</translation>
+<translation id="601731541915429022">Thêm vào Danh sách đọc</translation>
 <translation id="6930009216791986919">Thêm vào Dấu trang</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Đã thêm</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zh-CN.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zh-CN.xtb
index 76e2a28..210b902 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zh-CN.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zh-CN.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="zh-CN">
 <translation id="1613742542373525524">APPLICATION_NAME无法处理此链接。</translation>
 <translation id="4655616150233109325">在 Chrome 中打开</translation>
-<translation id="4743991241988563337">稍后阅读</translation>
+<translation id="601731541915429022">添加到阅读清单</translation>
 <translation id="6930009216791986919">添加到书签</translation>
 <translation id="6965382102122355670">确定</translation>
 <translation id="8258999165172757081">已添加</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zh-HK.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zh-HK.xtb
index eaee6d3..ae2c8c8 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zh-HK.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zh-HK.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="zh-HK">
 <translation id="1613742542373525524">「APPLICATION_NAME」無法處理此連結。</translation>
 <translation id="4655616150233109325">在 Chrome 中開啟</translation>
-<translation id="4743991241988563337">稍後閱讀</translation>
+<translation id="601731541915429022">加入閱讀清單</translation>
 <translation id="6930009216791986919">加入書籤</translation>
 <translation id="6965382102122355670">確定</translation>
 <translation id="8258999165172757081">已新增</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zh-TW.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zh-TW.xtb
index 6b9794ba..9e2f937c 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zh-TW.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zh-TW.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="zh-TW">
 <translation id="1613742542373525524">「APPLICATION_NAME」無法處理這個連結。</translation>
 <translation id="4655616150233109325">在 Chrome 中開啟</translation>
-<translation id="4743991241988563337">稍後閱讀</translation>
+<translation id="601731541915429022">加入閱讀清單</translation>
 <translation id="6930009216791986919">加入書籤</translation>
 <translation id="6965382102122355670">確定</translation>
 <translation id="8258999165172757081">已新增</translation>
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zu.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zu.xtb
index fe86b8d..4c991dcf 100644
--- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zu.xtb
+++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_zu.xtb
@@ -3,7 +3,7 @@
 <translationbundle lang="zu">
 <translation id="1613742542373525524">APPLICATION_NAME ayikwazi ukuphatha lesi sixhumanisi.</translation>
 <translation id="4655616150233109325">Vula ku-Chrome</translation>
-<translation id="4743991241988563337">Funda ngemuva kwesikhathi</translation>
+<translation id="601731541915429022">Engeza kuhlu lokufunda</translation>
 <translation id="6930009216791986919">Engeza kumabhukhimakhi</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="8258999165172757081">Kungeziwe</translation>
diff --git a/ios/chrome/test/data/policy/policy_test_cases.json b/ios/chrome/test/data/policy/policy_test_cases.json
index 3e0e6baa..57c9f004 100644
--- a/ios/chrome/test/data/policy/policy_test_cases.json
+++ b/ios/chrome/test/data/policy/policy_test_cases.json
@@ -480,7 +480,15 @@
     "policy_pref_mapping_tests": [
       {
         "policies": { "SyncDisabled": true },
-        "prefs": { "sync.managed": {} }
+        "prefs": { "sync.managed": { "value": true } }
+      },
+      {
+        "policies": { "SyncDisabled": false },
+        "prefs": { "sync.managed": { "value": false, "expect_default": true } }
+      },
+      {
+        "policies": { },
+        "prefs": { "sync.managed": { "value": false, "expect_default": true } }
       }
     ]
   },
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
index 6f30add..efadcdb 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-b973f6a91b606afffe0092c0772c3111ff37fbb7
\ No newline at end of file
+61eb028dfe10faa1b5d0a7c9a829842dc8a0b50e
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
index 3865f46..dc44af45 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-3dc9e451f7d55770126aafea7f89540caf860733
\ No newline at end of file
+9243bee58d330ae6e8d372a1426a9889b4e2f1bf
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
index 3c642666..3e03515e 100644
--- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-ab607a21b6eec4d8668832fb7336b00a3d7fea4f
\ No newline at end of file
+763140ede6f0d45ffd77a45b8847a9cc14f6f2c6
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
index 9bbb6ff..93a3a520f 100644
--- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-16032063f84f36830f7851a60313f53871c06627
\ No newline at end of file
+4433081f6fe0e1c9ddb45eefaa95b416f4904bc9
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
index 5d2b2fdf..1ee7dd8 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-501bcc574f8614d7f2ee1e5b177bc58ccd28c947
\ No newline at end of file
+a5b14a67398fa42aac5f3b22fc1ec5706a6015df
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
index 73ef5f2..ec0ec36 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-0412047e748ba6a9e257854a0eb77571f271b50d
\ No newline at end of file
+c60575b1fecfaf8b12a9b984376c487561182987
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
index 5cdcb70..7cd9195 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-0464a799f3349fe3339629b4e253ab6f99039759
\ No newline at end of file
+8deef21eeb5b7bb118e36e403f0229d9bdae92e5
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
index dc72ef6..d796d03 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-63fd50cd4f2ba2269fc5ff294a731a0791259863
\ No newline at end of file
+1aabd4aaa30eadd583b62ac2f58ca03981961e34
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
index c033c21..c02299e 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-83a62d32688240f409acbf51c000027dcb44296d
\ No newline at end of file
+7ac411f7d2856fc05f88b9c06d207769df22c675
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
index edf18c47..8c79fae 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-c0b4b254a6ed61d2aaec6be13950b93c09232b56
\ No newline at end of file
+9baf08de3e6946b05d18e85052c682a9cae748f0
\ No newline at end of file
diff --git a/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java b/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
index 1f5103b8..00cb096 100644
--- a/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
+++ b/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
@@ -32,6 +32,7 @@
  * A MediaCodec wrapper for adapting the API and catching exceptions.
  */
 @JNINamespace("media")
+@MainDex
 class MediaCodecBridge {
     private static final String TAG = "MediaCodecBridge";
 
@@ -80,7 +81,6 @@
     private static HandlerThread sCallbackHandlerThread;
     private static Handler sCallbackHandler;
 
-    @MainDex
     private static class DequeueInputResult {
         private final int mStatus;
         private final int mIndex;
@@ -101,7 +101,6 @@
         }
     }
 
-    @MainDex
     private static class DequeueOutputResult {
         private final int mStatus;
         private final int mIndex;
@@ -152,7 +151,6 @@
     }
 
     /** A wrapper around a MediaFormat. */
-    @MainDex
     private static class GetOutputFormatResult {
         private final int mStatus;
         // May be null if mStatus is not MediaCodecStatus.OK.
@@ -201,7 +199,6 @@
     // Warning: This class may execute on an arbitrary thread for the lifetime
     // of the MediaCodec. The MediaCodecBridge methods it calls are synchronized
     // to avoid race conditions.
-    @MainDex
     @TargetApi(Build.VERSION_CODES.M)
     class MediaCodecCallback extends MediaCodec.Callback {
         private MediaCodecBridge mMediaCodecBridge;
diff --git a/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java b/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java
index 044716b..3b881d0 100644
--- a/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java
+++ b/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java
@@ -209,7 +209,6 @@
     /**
      *  An equivalent of MediaDrm.KeyStatus, which is only available on M+.
      */
-    @MainDex
     private static class KeyStatus {
         private final byte[] mKeyId;
         private final int mStatusCode;
@@ -1394,7 +1393,6 @@
         }
     }
 
-    @MainDex
     private class EventListener implements MediaDrm.OnEventListener {
         @Override
         public void onEvent(
@@ -1456,7 +1454,6 @@
     }
 
     @TargetApi(Build.VERSION_CODES.M)
-    @MainDex
     private class KeyStatusChangeListener implements MediaDrm.OnKeyStatusChangeListener {
         private List<KeyStatus> getKeysInfo(List<MediaDrm.KeyStatus> keyInformation) {
             List<KeyStatus> keysInfo = new ArrayList<KeyStatus>();
@@ -1491,7 +1488,6 @@
     }
 
     @TargetApi(Build.VERSION_CODES.M)
-    @MainDex
     private class ExpirationUpdateListener implements MediaDrm.OnExpirationUpdateListener {
         @Override
         public void onExpirationUpdate(
@@ -1511,7 +1507,6 @@
         }
     }
 
-    @MainDex
     private class KeyUpdatedCallback implements Callback<Boolean> {
         private final SessionId mSessionId;
         private final long mPromiseId;
diff --git a/media/base/android/java/src/org/chromium/media/MediaDrmStorageBridge.java b/media/base/android/java/src/org/chromium/media/MediaDrmStorageBridge.java
index 13ced310..e9349bd 100644
--- a/media/base/android/java/src/org/chromium/media/MediaDrmStorageBridge.java
+++ b/media/base/android/java/src/org/chromium/media/MediaDrmStorageBridge.java
@@ -28,7 +28,6 @@
     /**
      * Information that need to be persistent on the device. Exposed to JNI.
      */
-    @MainDex
     static class PersistentInfo {
         // EME session ID, which is generated randomly.
         private final byte[] mEmeId;
diff --git a/media/renderers/video_resource_updater.cc b/media/renderers/video_resource_updater.cc
index 6169cc98e1..65c6da0 100644
--- a/media/renderers/video_resource_updater.cc
+++ b/media/renderers/video_resource_updater.cc
@@ -522,8 +522,7 @@
   for (size_t i = 0; i < external_resources.resources.size(); ++i) {
     viz::ResourceId resource_id = resource_provider_->ImportResource(
         external_resources.resources[i],
-        viz::SingleReleaseCallback::Create(
-            std::move(external_resources.release_callbacks[i])));
+        std::move(external_resources.release_callbacks[i]));
     frame_resources_.emplace_back(resource_id,
                                   external_resources.resources[i].size);
   }
diff --git a/remoting/host/input_injector_chromeos.cc b/remoting/host/input_injector_chromeos.cc
index b11289c..1bae751 100644
--- a/remoting/host/input_injector_chromeos.cc
+++ b/remoting/host/input_injector_chromeos.cc
@@ -16,6 +16,7 @@
 #include "base/location.h"
 #include "base/macros.h"
 #include "base/strings/utf_string_conversions.h"
+#include "base/system/sys_info.h"
 #include "remoting/host/chromeos/point_transformer.h"
 #include "remoting/host/clipboard.h"
 #include "remoting/proto/internal.pb.h"
@@ -83,6 +84,25 @@
   ime->GetImeKeyboard()->SetCapsLockEnabled(caps_lock);
 }
 
+class SystemInputInjectorStub : public ui::SystemInputInjector {
+ public:
+  SystemInputInjectorStub() {
+    LOG(WARNING)
+        << "Using stubbed input injector; All CRD user input will be ignored.";
+  }
+  SystemInputInjectorStub(const SystemInputInjectorStub&) = delete;
+  SystemInputInjectorStub& operator=(const SystemInputInjectorStub&) = delete;
+  ~SystemInputInjectorStub() override = default;
+
+  // SystemInputInjector implementation:
+  void MoveCursorTo(const gfx::PointF& location) override {}
+  void InjectMouseButton(ui::EventFlags button, bool down) override {}
+  void InjectMouseWheel(int delta_x, int delta_y) override {}
+  void InjectKeyEvent(ui::DomCode physical_key,
+                      bool down,
+                      bool suppress_auto_repeat) override {}
+};
+
 }  // namespace
 
 // This class is run exclusively on the UI thread of the browser process.
@@ -202,6 +222,14 @@
 void InputInjectorChromeos::Core::Start(
     std::unique_ptr<protocol::ClipboardStub> client_clipboard) {
   delegate_ = ui::OzonePlatform::GetInstance()->CreateSystemInputInjector();
+  if (!delegate_ && !base::SysInfo::IsRunningOnChromeOS()) {
+    // This happens when directly running the Chrome binary on linux.
+    // We'll simply ignore all input there (instead of crashing).
+    // Note: it would be nicer to swap this out with input_injector_x11.cc
+    // on linux instead (and properly handle the input), but that runs into
+    // dependency issues.
+    delegate_ = std::make_unique<SystemInputInjectorStub>();
+  }
   DCHECK(delegate_);
 
   // Implemented by remoting::ClipboardAura.
diff --git a/services/network/public/BUILD.gn b/services/network/public/BUILD.gn
new file mode 100644
index 0000000..2e7f5ba6
--- /dev/null
+++ b/services/network/public/BUILD.gn
@@ -0,0 +1,18 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+if (is_android) {
+  import("//build/config/android/rules.gni")
+
+  java_cpp_features("java_features_srcjar") {
+    # External code should depend on ":features_java" instead.
+    visibility = [ ":*" ]
+    sources = [ "cpp/features.cc" ]
+    template = "java/src/org/chromium/services/network/public/NetworkServiceFeatures.java.tmpl"
+  }
+
+  android_library("features_java") {
+    srcjar_deps = [ ":java_features_srcjar" ]
+  }
+}
diff --git a/services/network/public/java/src/org/chromium/services/network/public/NetworkServiceFeatures.java.tmpl b/services/network/public/java/src/org/chromium/services/network/public/NetworkServiceFeatures.java.tmpl
new file mode 100644
index 0000000..b06f83b
--- /dev/null
+++ b/services/network/public/java/src/org/chromium/services/network/public/NetworkServiceFeatures.java.tmpl
@@ -0,0 +1,16 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.services.network;
+
+/**
+ * Contains features that are specific to Network Service.
+ */
+public final class NetworkServiceFeatures {{
+
+{NATIVE_FEATURES}
+
+    // Do not instantiate this class.
+    private NetworkServiceFeatures() {{}}
+}}
diff --git a/services/viz/public/cpp/compositing/copy_output_result_mojom_traits.cc b/services/viz/public/cpp/compositing/copy_output_result_mojom_traits.cc
index 4d49d2b..098dfa2 100644
--- a/services/viz/public/cpp/compositing/copy_output_result_mojom_traits.cc
+++ b/services/viz/public/cpp/compositing/copy_output_result_mojom_traits.cc
@@ -13,25 +13,24 @@
 
 namespace {
 
-// This class retains the SingleReleaseCallback of the CopyOutputResult that is
-// being sent over mojo. A PendingRemote<TextureReleaser> that talks to this
-// impl object will be sent over mojo instead of the release_callback_ (which is
-// not serializable). Once the client calls Release, the release_callback_ will
-// be called. An object of this class will remain alive until the MessagePipe
+// This class retains the ReleaseCallback of the CopyOutputResult that is being
+// sent over mojo. A PendingRemote<TextureReleaser> that talks to this impl
+// object will be sent over mojo instead of the release_callback_ (which is not
+// serializable). Once the client calls Release, the release_callback_ will be
+// called. An object of this class will remain alive until the MessagePipe
 // attached to it goes away (i.e. SelfOwnedReceiver is used).
 class TextureReleaserImpl : public viz::mojom::TextureReleaser {
  public:
-  explicit TextureReleaserImpl(
-      std::unique_ptr<viz::SingleReleaseCallback> release_callback)
+  explicit TextureReleaserImpl(viz::ReleaseCallback release_callback)
       : release_callback_(std::move(release_callback)) {}
 
   // mojom::TextureReleaser implementation:
   void Release(const gpu::SyncToken& sync_token, bool is_lost) override {
-    release_callback_->Run(sync_token, is_lost);
+    std::move(release_callback_).Run(sync_token, is_lost);
   }
 
  private:
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback_;
+  viz::ReleaseCallback release_callback_;
 };
 
 void Release(mojo::PendingRemote<viz::mojom::TextureReleaser> pending_remote,
@@ -214,13 +213,13 @@
       if (!releaser)
         return false;  // Illegal to provide texture without Releaser.
 
-      // Returns a result with a SingleReleaseCallback that will return
-      // here and proxy the callback over mojo to the CopyOutputResult's
-      // origin via a mojo::Remote<viz::mojom::TextureReleaser> remote.
+      // Returns a result with a ReleaseCallback that will return here and proxy
+      // the callback over mojo to the CopyOutputResult's origin via a
+      // mojo::Remote<viz::mojom::TextureReleaser> remote.
       *out_p = std::make_unique<viz::CopyOutputTextureResult>(
           rect, *mailbox, *sync_token, *color_space,
-          viz::SingleReleaseCallback::Create(
-              base::BindOnce(&Release, std::move(releaser))));
+
+          base::BindOnce(&Release, std::move(releaser)));
       return true;
     }
 
diff --git a/services/viz/public/cpp/compositing/mojom_traits_unittest.cc b/services/viz/public/cpp/compositing/mojom_traits_unittest.cc
index d46c5b837..6412028 100644
--- a/services/viz/public/cpp/compositing/mojom_traits_unittest.cc
+++ b/services/viz/public/cpp/compositing/mojom_traits_unittest.cc
@@ -336,7 +336,7 @@
   base::RunLoop run_loop_for_release;
   output->SendResult(std::make_unique<CopyOutputTextureResult>(
       result_rect, mailbox, sync_token, gfx::ColorSpace::CreateSRGB(),
-      SingleReleaseCallback::Create(base::BindOnce(
+      base::BindOnce(
           [](base::OnceClosure quit_closure,
              const gpu::SyncToken& expected_sync_token,
              const gpu::SyncToken& sync_token, bool is_lost) {
@@ -344,7 +344,7 @@
             EXPECT_FALSE(is_lost);
             std::move(quit_closure).Run();
           },
-          run_loop_for_release.QuitClosure(), sync_token))));
+          run_loop_for_release.QuitClosure(), sync_token)));
 
   // Wait for the result to be delivered to the other side: The
   // CopyOutputRequest callback will be called, at which point
@@ -1254,7 +1254,7 @@
                             71234838);
   sync_token.SetVerifyFlush();
   base::RunLoop run_loop;
-  auto callback = SingleReleaseCallback::Create(base::BindOnce(
+  auto callback = base::BindOnce(
       [](base::OnceClosure quit_closure,
          const gpu::SyncToken& expected_sync_token,
          const gpu::SyncToken& sync_token, bool is_lost) {
@@ -1262,7 +1262,7 @@
         EXPECT_TRUE(is_lost);
         std::move(quit_closure).Run();
       },
-      run_loop.QuitClosure(), sync_token));
+      run_loop.QuitClosure(), sync_token);
   gpu::Mailbox mailbox;
   mailbox.SetName(mailbox_name);
   std::unique_ptr<CopyOutputResult> input =
@@ -1281,9 +1281,8 @@
   EXPECT_EQ(output->GetTextureResult()->sync_token, sync_token);
   EXPECT_EQ(output->GetTextureResult()->color_space, result_color_space);
 
-  std::unique_ptr<SingleReleaseCallback> out_callback =
-      output->TakeTextureOwnership();
-  out_callback->Run(sync_token, true /* is_lost */);
+  ReleaseCallback out_callback = output->TakeTextureOwnership();
+  std::move(out_callback).Run(sync_token, true /* is_lost */);
   // If the CopyOutputResult callback is called (which is the intended
   // behaviour), this will exit. Otherwise, this test will time out and fail.
   run_loop.Run();
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 279f9915..3248fa3 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -3394,32 +3394,6 @@
             ]
         }
     ],
-    "HappinessTrackingSurveysForDesktopSettingsPrivacy": [
-        {
-            "platforms": [
-                "linux",
-                "mac",
-                "windows"
-            ],
-            "experiments": [
-                {
-                    "name": "Settings_Privacy",
-                    "params": {
-                        "en_site_id": "FJ8K567X60ugnJ3q1cK0WZ5aJGMC",
-                        "probability": "1.0",
-                        "survey": "settings-privacy"
-                    },
-                    "enable_features": [
-                        "HappinessTrackingSurveysForDesktopMigration",
-                        "HappinessTrackingSurveysForDesktopSettingsPrivacy"
-                    ],
-                    "disable_features": [
-                        "HappinessTrackingSurveysForDesktopSettings"
-                    ]
-                }
-            ]
-        }
-    ],
     "HashedLoggingForHindsight": [
         {
             "platforms": [
@@ -5437,6 +5411,29 @@
             ]
         }
     ],
+    "PrivacySettingsHats": [
+        {
+            "platforms": [
+                "linux",
+                "mac",
+                "windows"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "params": {
+                        "en_site_id": "FJ8K567X60ugnJ3q1cK0WZ5aJGMC",
+                        "probability": "1.0",
+                        "survey": "settings-privacy"
+                    },
+                    "enable_features": [
+                        "HappinessTrackingSurveysForDesktopMigration",
+                        "HappinessTrackingSurveysForDesktopSettingsPrivacy"
+                    ]
+                }
+            ]
+        }
+    ],
     "ProbabilisticCryptidRenderer": [
         {
             "platforms": [
diff --git a/third_party/blink/public/mojom/BUILD.gn b/third_party/blink/public/mojom/BUILD.gn
index baea33ba..7026472 100644
--- a/third_party/blink/public/mojom/BUILD.gn
+++ b/third_party/blink/public/mojom/BUILD.gn
@@ -172,6 +172,8 @@
     "service_worker/service_worker_installed_scripts_manager.mojom",
     "service_worker/service_worker_state.mojom",
     "service_worker/service_worker_stream_handle.mojom",
+    "service_worker/service_worker_worker_client.mojom",
+    "service_worker/service_worker_worker_client_registry.mojom",
     "site_engagement/site_engagement.mojom",
     "sms/webotp_service.mojom",
     "speculation_rules/speculation_rules.mojom",
diff --git a/third_party/blink/public/mojom/service_worker/service_worker_provider.mojom b/third_party/blink/public/mojom/service_worker/service_worker_provider.mojom
index 1f9f4ff9..1efd245 100644
--- a/third_party/blink/public/mojom/service_worker/service_worker_provider.mojom
+++ b/third_party/blink/public/mojom/service_worker/service_worker_provider.mojom
@@ -7,10 +7,10 @@
 import "services/network/public/mojom/url_loader_factory.mojom";
 import "third_party/blink/public/mojom/browser_interface_broker.mojom";
 import "third_party/blink/public/mojom/cache_storage/cache_storage.mojom";
-import "third_party/blink/public/mojom/service_worker/controller_service_worker_mode.mojom";
 import "third_party/blink/public/mojom/service_worker/service_worker_container.mojom";
 import "third_party/blink/public/mojom/service_worker/service_worker_container_type.mojom";
 import "third_party/blink/public/mojom/service_worker/service_worker_object.mojom";
+import "third_party/blink/public/mojom/service_worker/service_worker_worker_client.mojom";
 
 // The name of the InterfaceProviderSpec in service manifests used by the
 // frame tree to expose service-worker-specific interfaces between renderer
@@ -42,30 +42,3 @@
   // Used for accessing services from the worker.
   pending_remote<blink.mojom.BrowserInterfaceBroker> browser_interface_broker;
 };
-
-// ServiceWorkerWorkerClient represents a service worker client that is a worker
-// (i.e., a shared worker or dedicated worker). The main thread of
-// the renderer process uses this interface to tell the worker thread
-// when the controller service worker changes.
-interface ServiceWorkerWorkerClient {
-  // Called when the worker is controlled by a new service worker. This is only
-  // used to let the worker know that we now have a service worker (while there
-  // may or may not have been one previously), but not the other way around.
-  OnControllerChanged(ControllerServiceWorkerMode mode);
-};
-
-// ServiceWorkerWorkerClientRegistry is a mojo interface for hosting and
-// registering ServiceWorkerWorkerClients. An instance of this interface is
-// implemented by ServiceWorkerProviderContext and lives in the same renderer
-// process as the worker clients.
-// This interface is useful when one needs to register a new worker client
-// for an existing ServiceWorkerProviderContext on non-main thread, i.e. for
-// nested workers.
-interface ServiceWorkerWorkerClientRegistry {
-  // Adds a new ServiceWorkerWorkerClient.
-  RegisterWorkerClient(pending_remote<ServiceWorkerWorkerClient> client);
-
-  // Clones this host.
-  CloneWorkerClientRegistry(
-      pending_receiver<ServiceWorkerWorkerClientRegistry> host);
-};
diff --git a/third_party/blink/public/mojom/service_worker/service_worker_worker_client.mojom b/third_party/blink/public/mojom/service_worker/service_worker_worker_client.mojom
new file mode 100644
index 0000000..f2517ba
--- /dev/null
+++ b/third_party/blink/public/mojom/service_worker/service_worker_worker_client.mojom
@@ -0,0 +1,18 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+module blink.mojom;
+
+import "third_party/blink/public/mojom/service_worker/controller_service_worker_mode.mojom";
+
+// ServiceWorkerWorkerClient represents a service worker client that is a worker
+// (i.e., a shared worker or dedicated worker). The main thread of
+// the renderer process uses this interface to tell the worker thread
+// when the controller service worker changes.
+interface ServiceWorkerWorkerClient {
+  // Called when the worker is controlled by a new service worker. This is only
+  // used to let the worker know that we now have a service worker (while there
+  // may or may not have been one previously), but not the other way around.
+  OnControllerChanged(ControllerServiceWorkerMode mode);
+};
diff --git a/third_party/blink/public/mojom/service_worker/service_worker_worker_client_registry.mojom b/third_party/blink/public/mojom/service_worker/service_worker_worker_client_registry.mojom
new file mode 100644
index 0000000..ff6867b3
--- /dev/null
+++ b/third_party/blink/public/mojom/service_worker/service_worker_worker_client_registry.mojom
@@ -0,0 +1,23 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+module blink.mojom;
+
+import "third_party/blink/public/mojom/service_worker/service_worker_worker_client.mojom";
+
+// ServiceWorkerWorkerClientRegistry is a mojo interface for hosting and
+// registering ServiceWorkerWorkerClients. An instance of this interface is
+// implemented by ServiceWorkerProviderContext and lives in the same renderer
+// process as the worker clients.
+// This interface is useful when one needs to register a new worker client
+// for an existing ServiceWorkerProviderContext on non-main thread, i.e. for
+// nested workers.
+interface ServiceWorkerWorkerClientRegistry {
+  // Adds a new ServiceWorkerWorkerClient.
+  RegisterWorkerClient(pending_remote<ServiceWorkerWorkerClient> client);
+
+  // Clones this host.
+  CloneWorkerClientRegistry(
+      pending_receiver<ServiceWorkerWorkerClientRegistry> host);
+};
diff --git a/third_party/blink/public/web/web_local_frame_client.h b/third_party/blink/public/web/web_local_frame_client.h
index 002f38f6..06dec835 100644
--- a/third_party/blink/public/web/web_local_frame_client.h
+++ b/third_party/blink/public/web/web_local_frame_client.h
@@ -409,10 +409,13 @@
   virtual void DidFinishLoad() {}
 
   // The navigation resulted in no change to the documents within the page.
-  // For example, the navigation may have just resulted in scrolling to a
-  // named anchor or a PopState event may have been dispatched.
+  // For example, the navigation may have just resulted in scrolling to a named
+  // anchor or a PopState event may have been dispatched.
+  // |is_synchronously_committed| is true if the navigation is synchronously
+  // committed from within Blink, as opposed to being driven by the browser's
+  // navigation stack.
   virtual void DidFinishSameDocumentNavigation(WebHistoryCommitType,
-                                               bool content_initiated,
+                                               bool is_synchronously_committed,
                                                bool is_history_api_navigation,
                                                bool is_client_redirect) {}
 
diff --git a/third_party/blink/renderer/bindings/core/v8/script_promise_property_test.cc b/third_party/blink/renderer/bindings/core/v8/script_promise_property_test.cc
index 4d3ba4bb..7d06c07 100644
--- a/third_party/blink/renderer/bindings/core/v8/script_promise_property_test.cc
+++ b/third_party/blink/renderer/bindings/core/v8/script_promise_property_test.cc
@@ -554,6 +554,8 @@
   v8::Local<v8::Object> other_v8_resolution;
   {
     ScriptState::Scope scope(MainScriptState());
+    v8::MicrotasksScope microtasks_scope(
+        GetIsolate(), v8::MicrotasksScope::kDoNotRunMicrotasks);
     main_v8_resolution = ToV8(resolution, MainScriptState()).As<v8::Object>();
     v8::PropertyDescriptor descriptor(
         ScriptPromisePropertyResetter::CreateFunction(MainScriptState(),
@@ -567,6 +569,8 @@
   }
   {
     ScriptState::Scope scope(OtherScriptState());
+    v8::MicrotasksScope microtasks_scope(
+        GetIsolate(), v8::MicrotasksScope::kDoNotRunMicrotasks);
     other_v8_resolution = ToV8(resolution, OtherScriptState()).As<v8::Object>();
     v8::PropertyDescriptor descriptor(
         ScriptPromisePropertyResetter::CreateFunction(OtherScriptState(),
diff --git a/third_party/blink/renderer/controller/dev_tools_frontend_impl.cc b/third_party/blink/renderer/controller/dev_tools_frontend_impl.cc
index 18164d52..093d7d2b 100644
--- a/third_party/blink/renderer/controller/dev_tools_frontend_impl.cc
+++ b/third_party/blink/renderer/controller/dev_tools_frontend_impl.cc
@@ -82,6 +82,8 @@
     ScriptState* script_state = ToScriptStateForMainWorld(GetSupplementable());
     DCHECK(script_state);
     ScriptState::Scope scope(script_state);
+    v8::MicrotasksScope microtasks_scope(
+        isolate, v8::MicrotasksScope::kDoNotRunMicrotasks);
     if (devtools_host_)
       devtools_host_->DisconnectClient();
     devtools_host_ =
diff --git a/third_party/blink/renderer/core/app_history/app_history_test.cc b/third_party/blink/renderer/core/app_history/app_history_test.cc
index 0b7a480..0d3beeb 100644
--- a/third_party/blink/renderer/core/app_history/app_history_test.cc
+++ b/third_party/blink/renderer/core/app_history/app_history_test.cc
@@ -76,7 +76,7 @@
       item->Url(), WebFrameLoadType::kBackForward, item,
       ClientRedirectPolicy::kNotClientRedirect,
       false /* has_transient_user_activation */, nullptr /* initiator_origin */,
-      false /* is_content_initiated */,
+      false /* is_synchronously_committed */,
       mojom::blink::TriggeringEventInfo::kUnknown, nullptr);
 
   EXPECT_EQ(result, mojom::blink::CommitResult::Ok);
diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver.cc b/third_party/blink/renderer/core/css/resolver/style_resolver.cc
index 3a440bd..f614523 100644
--- a/third_party/blink/renderer/core/css/resolver/style_resolver.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_resolver.cc
@@ -76,6 +76,7 @@
 #include "third_party/blink/renderer/core/frame/settings.h"
 #include "third_party/blink/renderer/core/frame/web_feature.h"
 #include "third_party/blink/renderer/core/html/custom/custom_element_definition.h"
+#include "third_party/blink/renderer/core/html/html_body_element.h"
 #include "third_party/blink/renderer/core/html/html_iframe_element.h"
 #include "third_party/blink/renderer/core/html/html_slot_element.h"
 #include "third_party/blink/renderer/core/html/shadow/shadow_element_names.h"
@@ -1709,7 +1710,7 @@
 
 void StyleResolver::PropagateStyleToViewport() {
   DCHECK(GetDocument().InStyleRecalc());
-  HTMLElement* body = GetDocument().body();
+  HTMLBodyElement* body = GetDocument().FirstBodyElement();
   Element* document_element = GetDocument().documentElement();
 
   const ComputedStyle* document_element_style =
@@ -1743,7 +1744,7 @@
     // <body> child.
     // Also see LayoutBoxModelObject::BackgroundTransfersToView()
     if (body_style && IsA<HTMLHtmlElement>(document_element) &&
-        IsA<HTMLBodyElement>(body) && !background_style->HasBackground()) {
+        !background_style->HasBackground()) {
       background_style = body_style;
     }
 
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index 7e89572..2ff6c0f 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -3277,7 +3277,7 @@
   // (3) The root element has visible overflow.
   // Otherwise it's the root element's properties that are to be propagated.
   Element* root_element = documentElement();
-  Element* body_element = body();
+  HTMLBodyElement* body_element = FirstBodyElement();
   if (!root_element)
     return nullptr;
   const ComputedStyle* root_style = root_element->GetComputedStyle();
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 e0a1e13..c33d3ac 100644
--- a/third_party/blink/renderer/core/exported/web_view_test.cc
+++ b/third_party/blink/renderer/core/exported/web_view_test.cc
@@ -2492,19 +2492,19 @@
       item1->Url(), WebFrameLoadType::kBackForward, item1.Get(),
       ClientRedirectPolicy::kNotClientRedirect,
       false /* has_transient_user_activation */, nullptr /* initiator_origin */,
-      false /* is_content_initiated */,
+      false /* is_synchronously_committed */,
       mojom::blink::TriggeringEventInfo::kNotFromEvent, nullptr);
   main_frame_local->Loader().GetDocumentLoader()->CommitSameDocumentNavigation(
       item2->Url(), WebFrameLoadType::kBackForward, item2.Get(),
       ClientRedirectPolicy::kNotClientRedirect,
       false /* has_transient_user_activation */, nullptr /* initiator_origin */,
-      false /* is_content_initiated */,
+      false /* is_synchronously_committed */,
       mojom::blink::TriggeringEventInfo::kNotFromEvent, nullptr);
   main_frame_local->Loader().GetDocumentLoader()->CommitSameDocumentNavigation(
       item1->Url(), WebFrameLoadType::kBackForward, item1.Get(),
       ClientRedirectPolicy::kNotClientRedirect,
       false /* has_transient_user_activation */, nullptr /* initiator_origin */,
-      false /* is_content_initiated */,
+      false /* is_synchronously_committed */,
       mojom::blink::TriggeringEventInfo::kNotFromEvent, nullptr);
   web_view_impl->MainFrameWidget()->UpdateAllLifecyclePhases(
       DocumentUpdateReason::kTest);
@@ -2525,14 +2525,14 @@
       item1->Url(), WebFrameLoadType::kBackForward, item1.Get(),
       ClientRedirectPolicy::kNotClientRedirect,
       false /* has_transient_user_activation */, nullptr /* initiator_origin */,
-      false /* is_content_initiated */,
+      false /* is_synchronously_committed */,
       mojom::blink::TriggeringEventInfo::kNotFromEvent, nullptr);
 
   main_frame_local->Loader().GetDocumentLoader()->CommitSameDocumentNavigation(
       item3->Url(), WebFrameLoadType::kBackForward, item3.Get(),
       ClientRedirectPolicy::kNotClientRedirect,
       false /* has_transient_user_activation */, nullptr /* initiator_origin */,
-      false /* is_content_initiated */,
+      false /* is_synchronously_committed */,
       mojom::blink::TriggeringEventInfo::kNotFromEvent, nullptr);
   // The scroll offset is only applied via invoking the anchor via the main
   // lifecycle, or a forced layout.
diff --git a/third_party/blink/renderer/core/frame/local_frame_client.h b/third_party/blink/renderer/core/frame/local_frame_client.h
index 4e60a47..1daee3a 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client.h
+++ b/third_party/blink/renderer/core/frame/local_frame_client.h
@@ -131,7 +131,7 @@
   virtual void DispatchDidHandleOnloadEvents() = 0;
   virtual void DidFinishSameDocumentNavigation(HistoryItem*,
                                                WebHistoryCommitType,
-                                               bool content_initiated,
+                                               bool is_synchronously_committed,
                                                bool is_history_api_navigation,
                                                bool is_client_redirect) {}
   virtual void DispatchDidReceiveTitle(const String&) = 0;
diff --git a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
index 43be9e78..a9bddf6f 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
@@ -381,7 +381,7 @@
 void LocalFrameClientImpl::DidFinishSameDocumentNavigation(
     HistoryItem* item,
     WebHistoryCommitType commit_type,
-    bool content_initiated,
+    bool is_synchronously_committed,
     bool is_history_api_navigation,
     bool is_client_redirect) {
   bool should_create_history_entry = commit_type == kWebStandardCommit;
@@ -389,7 +389,7 @@
   web_frame_->ViewImpl()->DidCommitLoad(should_create_history_entry, true);
   if (web_frame_->Client()) {
     web_frame_->Client()->DidFinishSameDocumentNavigation(
-        commit_type, content_initiated, is_history_api_navigation,
+        commit_type, is_synchronously_committed, is_history_api_navigation,
         is_client_redirect);
   }
 }
diff --git a/third_party/blink/renderer/core/frame/local_frame_client_impl.h b/third_party/blink/renderer/core/frame/local_frame_client_impl.h
index 6c8ad89..5c3cb23 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client_impl.h
+++ b/third_party/blink/renderer/core/frame/local_frame_client_impl.h
@@ -93,7 +93,7 @@
   void DispatchDidHandleOnloadEvents() override;
   void DidFinishSameDocumentNavigation(HistoryItem*,
                                        WebHistoryCommitType,
-                                       bool content_initiated,
+                                       bool is_handled_within_agent,
                                        bool is_history_api_navigation,
                                        bool is_client_redirect) override;
   void DispatchDidReceiveTitle(const String&) override;
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 4d83d599f..85ae6a4 100644
--- a/third_party/blink/renderer/core/frame/web_frame_test.cc
+++ b/third_party/blink/renderer/core/frame/web_frame_test.cc
@@ -7681,7 +7681,7 @@
 
   // frame_test_helpers::TestWebFrameClient:
   void DidFinishSameDocumentNavigation(WebHistoryCommitType type,
-                                       bool content_initiated,
+                                       bool is_synchronously_committed,
                                        bool is_history_api_navigation,
                                        bool is_client_redirect) override {
     last_commit_type_ = type;
@@ -7708,7 +7708,7 @@
       item->Url(), WebFrameLoadType::kBackForward, item.Get(),
       ClientRedirectPolicy::kNotClientRedirect,
       false /* has_transient_user_activation */, /*initiator_origin=*/nullptr,
-      /*is_content_initiated=*/false,
+      /*is_synchronously_committed=*/false,
       mojom::blink::TriggeringEventInfo::kNotFromEvent,
       nullptr /* extra_data */);
   EXPECT_EQ(kWebBackForwardCommit, client.LastCommitType());
@@ -13305,7 +13305,8 @@
       ToKURL("about:blank"), kSameDocumentNavigationHistoryApi, message,
       mojom::blink::ScrollRestorationType::kAuto,
       WebFrameLoadType::kReplaceCurrentItem,
-      frame->DomWindow()->GetSecurityOrigin(), /*is_content_initiated=*/true);
+      frame->DomWindow()->GetSecurityOrigin(),
+      /*is_synchronously_committed=*/true);
   // The bucket index corresponds to the definition of
   // |SinglePageAppNavigationType|.
   tester.ExpectBucketCount(histogramName,
@@ -13314,14 +13315,15 @@
       ToKURL("about:blank"), kSameDocumentNavigationDefault, message,
       mojom::blink::ScrollRestorationType::kManual,
       WebFrameLoadType::kBackForward, frame->DomWindow()->GetSecurityOrigin(),
-      /*is_content_initiated=*/true);
+      /*is_synchronously_committed=*/true);
   tester.ExpectBucketCount(histogramName,
                            kSPANavTypeSameDocumentBackwardOrForward, 1);
   document_loader.UpdateForSameDocumentNavigation(
       ToKURL("about:blank"), kSameDocumentNavigationDefault, message,
       mojom::blink::ScrollRestorationType::kManual,
       WebFrameLoadType::kReplaceCurrentItem,
-      frame->DomWindow()->GetSecurityOrigin(), /*is_content_initiated=*/true);
+      frame->DomWindow()->GetSecurityOrigin(),
+      /*is_synchronously_committed=*/true);
   tester.ExpectBucketCount(histogramName, kSPANavTypeOtherFragmentNavigation,
                            1);
   // kSameDocumentNavigationHistoryApi and WebFrameLoadType::kBackForward is an
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 314b107..165d9e1a 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
@@ -2355,7 +2355,7 @@
       is_client_redirect ? ClientRedirectPolicy::kClientRedirect
                          : ClientRedirectPolicy::kNotClientRedirect,
       has_transient_user_activation, initiator_origin.Get(),
-      /*is_content_initiated=*/false,
+      /*is_synchronously_committed=*/false,
       mojom::blink::TriggeringEventInfo::kNotFromEvent, std::move(extra_data));
 }
 
diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser.cc b/third_party/blink/renderer/core/html/parser/html_document_parser.cc
index 8abbd6e..6683a276b 100644
--- a/third_party/blink/renderer/core/html/parser/html_document_parser.cc
+++ b/third_party/blink/renderer/core/html/parser/html_document_parser.cc
@@ -431,11 +431,12 @@
   DCHECK(!RuntimeEnabledFeatures::ForceSynchronousHTMLParsingEnabled() ||
          !CanParseAsynchronously());
 
-  // Report metrics for async document parsing only. The document
-  // must be main frame to meet UKM requirements, and must have a high
-  // resolution clock for high quality data.
-  if (sync_policy == kAllowAsynchronousParsing && document.GetFrame() &&
-      document.GetFrame()->IsMainFrame() &&
+  // Report metrics for async document parsing or forced synchronous parsing.
+  // The document must be main frame to meet UKM requirements, and must have a
+  // high resolution clock for high quality data.
+  if ((sync_policy == kAllowAsynchronousParsing ||
+       sync_policy == kAllowDeferredParsing) &&
+      document.GetFrame() && document.GetFrame()->IsMainFrame() &&
       base::TimeTicks::IsHighResolution()) {
     metrics_reporter_ = std::make_unique<HTMLParserMetrics>(
         document.UkmSourceID(), document.UkmRecorder());
@@ -572,6 +573,15 @@
   TRACE_EVENT2("blink", "HTMLDocumentParser::DeferredPumpTokenizerIfPossible",
                "parser", (void*)this, "state",
                task_runner_state_->GetStateAsString());
+
+  // This method is called when the post task is executed, marking the end of
+  // a yield. Report the yielded time.
+  DCHECK(yield_timer_);
+  if (metrics_reporter_) {
+    metrics_reporter_->AddYieldInterval(yield_timer_->Elapsed());
+  }
+  yield_timer_.reset();
+
   bool should_call_delay_end =
       task_runner_state_->GetState() ==
       HTMLDocumentParserState::DeferredParserState::kScheduledWithEndIfDelayed;
@@ -607,11 +617,15 @@
   } else if (task_runner_state_->ShouldAttemptToEndOnEOF()) {
     // Fall into this branch if ::Finish has been previously called and we've
     // just finished asynchronously parsing everything.
+    if (metrics_reporter_)
+      metrics_reporter_->ReportMetricsAtParseEnd(false);
     AttemptToEnd();
   } else if (task_runner_state_->ShouldEndIfDelayed()) {
     // If we did not exceed the budget or parsed everything there was to
     // parse, check if we should complete the document.
     if (task_runner_state_->ShouldComplete() || IsStopped() || IsStopping()) {
+      if (metrics_reporter_)
+        metrics_reporter_->ReportMetricsAtParseEnd(false);
       EndIfDelayed();
     } else {
       ScheduleEndIfDelayed();
@@ -973,7 +987,7 @@
     metrics_reporter_->AddChunk(session.ElapsedTime(),
                                 session.ProcessedElementTokens());
     if (reached_end_of_file)
-      metrics_reporter_->ReportMetricsAtParseEnd();
+      metrics_reporter_->ReportMetricsAtParseEnd(true);
   }
 }
 
@@ -1017,6 +1031,8 @@
   bool should_yield = false;
   int budget = max_tokenization_budget_;
 
+  base::ElapsedTimer chunk_parsing_timer_;
+  unsigned tokens_parsed = 0;
   while (!should_yield) {
     const auto next_token_status = CanTakeNextToken();
     if (next_token_status == NoTokens) {
@@ -1040,6 +1056,7 @@
       if (!tokenizer_->NextToken(input_.Current(), Token()))
         break;
       budget--;
+      tokens_parsed++;
     }
     ConstructTreeFromHTMLToken();
     if (!should_run_until_completion && !IsPaused()) {
@@ -1053,8 +1070,13 @@
     DCHECK(IsStopped() || Token().IsUninitialized());
   }
 
-  if (IsStopped())
+  if (IsStopped()) {
+    if (metrics_reporter_ && tokens_parsed) {
+      metrics_reporter_->AddChunk(chunk_parsing_timer_.Elapsed(),
+                                  tokens_parsed);
+    }
     return false;
+  }
 
   // There should only be PendingText left since the tree-builder always flushes
   // the task queue before returning. In case that ever changes, crash.
@@ -1074,6 +1096,10 @@
     }
   }
 
+  if (metrics_reporter_ && tokens_parsed) {
+    metrics_reporter_->AddChunk(chunk_parsing_timer_.Elapsed(), tokens_parsed);
+  }
+
   // should_run_until_completion implies that we should not yield
   CHECK(!should_run_until_completion || !should_yield);
   return should_yield;
@@ -1094,6 +1120,8 @@
                            WrapPersistent(this)));
   task_runner_state_->SetState(
       HTMLDocumentParserState::DeferredParserState::kScheduled);
+
+  yield_timer_ = std::make_unique<base::ElapsedTimer>();
 }
 
 void HTMLDocumentParser::ScheduleEndIfDelayed() {
@@ -1109,6 +1137,7 @@
         FROM_HERE,
         WTF::Bind(&HTMLDocumentParser::DeferredPumpTokenizerIfPossible,
                   WrapPersistent(this)));
+    yield_timer_ = std::make_unique<base::ElapsedTimer>();
   }
   // If a pump is already scheduled, it's OK to just upgrade it to one
   // which calls EndIfDelayed afterwards.
@@ -1323,6 +1352,10 @@
   input_.AppendToEnd(source);
   task_runner_state_->SetHaveSeenFirstByte();
 
+  // Add input_source.length() to "file size" metric.
+  if (metrics_reporter_)
+    metrics_reporter_->AddInput(input_source.length());
+
   if (InPumpSession()) {
     // We've gotten data off the network in a nested write. We don't want to
     // consume any more of the input stream now.  Do not worry.  We'll consume
@@ -1330,7 +1363,9 @@
     return;
   }
 
-  // Schedule a tokenizer pump to process this new data.
+  // Schedule a tokenizer pump to process this new data. We schedule to give
+  // paint a chance to happen, and because devtools somehow depends on it
+  // for js loads.
   if (task_runner_state_->GetMode() ==
           ParserSynchronizationPolicy::kAllowDeferredParsing &&
       !task_runner_state_->ShouldComplete()) {
diff --git a/third_party/blink/renderer/core/html/parser/html_parser_metrics.cc b/third_party/blink/renderer/core/html/parser/html_parser_metrics.cc
index 997ff68..bb4b9af 100644
--- a/third_party/blink/renderer/core/html/parser/html_parser_metrics.cc
+++ b/third_party/blink/renderer/core/html/parser/html_parser_metrics.cc
@@ -44,8 +44,11 @@
     max_yield_interval_ = elapsed_time;
 }
 
-void HTMLParserMetrics::ReportMetricsAtParseEnd() {
-  // The various histogram limits were chosen based on initial UKM data.
+void HTMLParserMetrics::AddInput(unsigned length) {
+  input_character_count += length;
+}
+
+void HTMLParserMetrics::ReportBackgroundParsingUMA() {
   UMA_HISTOGRAM_COUNTS_1000("Blink.HTMLParsing.ChunkCount", chunk_count_);
   UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
       "Blink.HTMLParsing.ParsingTimeMax", max_parsing_time_,
@@ -82,6 +85,58 @@
         base::TimeDelta::FromMicroseconds(1), base::TimeDelta::FromSeconds(10),
         100);
   }
+}
+
+void HTMLParserMetrics::ReportForcedSynchronousParsingUMA() {
+  UMA_HISTOGRAM_COUNTS_1000("Blink.HTMLParsing.ChunkCount2", chunk_count_);
+  UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
+      "Blink.HTMLParsing.ParsingTimeMax2", max_parsing_time_,
+      base::TimeDelta::FromMicroseconds(1), base::TimeDelta::FromSeconds(100),
+      1000);
+  UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES("Blink.HTMLParsing.ParsingTimeMin2",
+                                          min_parsing_time_,
+                                          base::TimeDelta::FromMicroseconds(1),
+                                          base::TimeDelta::FromSeconds(1), 100);
+  UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
+      "Blink.HTMLParsing.ParsingTimeTotal2", accumulated_parsing_time_,
+      base::TimeDelta::FromMicroseconds(1), base::TimeDelta::FromSeconds(100),
+      1000);
+  UMA_HISTOGRAM_COUNTS_1M("Blink.HTMLParsing.TokensParsedMax2",
+                          max_tokens_parsed_);
+  UMA_HISTOGRAM_COUNTS_10000("Blink.HTMLParsing.TokensParsedMin2",
+                             min_tokens_parsed_);
+  UMA_HISTOGRAM_COUNTS_1M("Blink.HTMLParsing.TokensParsedAverage2",
+                          total_tokens_parsed_ / chunk_count_);
+
+  // Only report yield data if we actually yielded.
+  if (max_yield_interval_ != base::TimeDelta()) {
+    UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
+        "Blink.HTMLParsing.YieldedTimeMax2", max_yield_interval_,
+        base::TimeDelta::FromMicroseconds(1), base::TimeDelta::FromSeconds(100),
+        1000);
+    UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
+        "Blink.HTMLParsing.YieldedTimeMin2", min_yield_interval_,
+        base::TimeDelta::FromMicroseconds(1), base::TimeDelta::FromSeconds(10),
+        100);
+    UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
+        "Blink.HTMLParsing.YieldedTimeAverage2",
+        accumulated_yield_intervals_ / yield_count_,
+        base::TimeDelta::FromMicroseconds(1), base::TimeDelta::FromSeconds(10),
+        100);
+  }
+
+  UMA_HISTOGRAM_COUNTS_10M("Blink.HTMLParsing.InputCharacterCount",
+                           input_character_count);
+}
+
+void HTMLParserMetrics::ReportMetricsAtParseEnd(bool background_parsing) {
+  if (!chunk_count_)
+    return;
+
+  if (background_parsing)
+    ReportBackgroundParsingUMA();
+  else
+    ReportForcedSynchronousParsingUMA();
 
   // Build and report UKM
   ukm::builders::Blink_HTMLParsing builder(source_id_);
diff --git a/third_party/blink/renderer/core/html/parser/html_parser_metrics.h b/third_party/blink/renderer/core/html/parser/html_parser_metrics.h
index e6c84aa7..98760a87 100644
--- a/third_party/blink/renderer/core/html/parser/html_parser_metrics.h
+++ b/third_party/blink/renderer/core/html/parser/html_parser_metrics.h
@@ -25,9 +25,14 @@
 
   void AddYieldInterval(base::TimeDelta elapsed_time);
 
-  void ReportMetricsAtParseEnd();
+  void AddInput(unsigned length);
+
+  void ReportMetricsAtParseEnd(bool background_parsing);
 
  private:
+  void ReportBackgroundParsingUMA();
+  void ReportForcedSynchronousParsingUMA();
+
   // UKM System data.
   const int64_t source_id_;
   ukm::UkmRecorder* const recorder_;
@@ -48,6 +53,10 @@
   base::TimeDelta min_yield_interval_ = base::TimeDelta::Max();
   base::TimeDelta max_yield_interval_;  // Constructed with 0 value
 
+  // Track total number of characters parsed in one instantiation of the
+  // parser.
+  unsigned input_character_count = 0;
+
   DISALLOW_COPY_AND_ASSIGN(HTMLParserMetrics);
 };
 
diff --git a/third_party/blink/renderer/core/html/parser/html_parser_metrics_test.cc b/third_party/blink/renderer/core/html/parser/html_parser_metrics_test.cc
index 5b9871d..2b4112f 100644
--- a/third_party/blink/renderer/core/html/parser/html_parser_metrics_test.cc
+++ b/third_party/blink/renderer/core/html/parser/html_parser_metrics_test.cc
@@ -10,15 +10,21 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/renderer/core/frame/frame_test_helpers.h"
 #include "third_party/blink/renderer/core/frame/web_local_frame_impl.h"
+#include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h"
 #include "third_party/blink/renderer/platform/testing/url_test_helpers.h"
 
 namespace blink {
 
-class HTMLParserMetricsTest : public testing::Test {
+class HTMLBackgroundParserMetricsTest
+    : public testing::Test,
+      private ScopedForceSynchronousHTMLParsingForTest {
  public:
-  HTMLParserMetricsTest() { helper_.Initialize(nullptr, nullptr, nullptr); }
+  HTMLBackgroundParserMetricsTest()
+      : ScopedForceSynchronousHTMLParsingForTest(false) {
+    helper_.Initialize(nullptr, nullptr, nullptr);
+  }
 
-  ~HTMLParserMetricsTest() override = default;
+  ~HTMLBackgroundParserMetricsTest() override = default;
 
   void SetUp() override {}
 
@@ -34,7 +40,32 @@
   frame_test_helpers::WebViewHelper helper_;
 };
 
-TEST_F(HTMLParserMetricsTest, ReportSingleChunk) {
+class HTMLForceSynchronousParserMetricsTest
+    : public testing::Test,
+      private ScopedForceSynchronousHTMLParsingForTest {
+ public:
+  HTMLForceSynchronousParserMetricsTest()
+      : ScopedForceSynchronousHTMLParsingForTest(true) {
+    helper_.Initialize(nullptr, nullptr, nullptr);
+  }
+
+  ~HTMLForceSynchronousParserMetricsTest() override = default;
+
+  void SetUp() override {}
+
+  void TearDown() override {}
+
+  void LoadHTML(const std::string& html) {
+    frame_test_helpers::LoadHTMLString(helper_.GetWebView()->MainFrameImpl(),
+                                       html,
+                                       url_test_helpers::ToKURL("about:blank"));
+  }
+
+ protected:
+  frame_test_helpers::WebViewHelper helper_;
+};
+
+TEST_F(HTMLBackgroundParserMetricsTest, ReportSingleChunk) {
   // Although the tests use a mock clock, the metrics recorder checks if the
   // system has a high resolution clock before recording results. As a result,
   // the tests will fail if the system does not have a high resolution clock.
@@ -84,7 +115,7 @@
   EXPECT_GT(parsing_time_total_buckets[0].min, 0);
 }
 
-TEST_F(HTMLParserMetricsTest, HistogramReportsTwoChunks) {
+TEST_F(HTMLBackgroundParserMetricsTest, HistogramReportsTwoChunks) {
   // Although the tests use a mock clock, the metrics recorder checks if the
   // system has a high resolution clock before recording results. As a result,
   // the tests will fail if the system does not have a high resolution clock.
@@ -162,7 +193,145 @@
   EXPECT_GT(yield_time_average_buckets[0].min, 0);
 }
 
-TEST_F(HTMLParserMetricsTest, UkmStoresValuesCorrectly) {
+TEST_F(HTMLForceSynchronousParserMetricsTest, ReportSingleChunk) {
+  // Although the tests use a mock clock, the metrics recorder checks if the
+  // system has a high resolution clock before recording results. As a result,
+  // the tests will fail if the system does not have a high resolution clock.
+  if (!base::TimeTicks::IsHighResolution())
+    return;
+
+  ScopedForceSynchronousHTMLParsingForTest(true);
+
+  base::HistogramTester histogram_tester;
+  LoadHTML(R"HTML(
+    <div></div>
+  )HTML");
+
+  // Should have one of each metric, except the yield times because with
+  // a single chunk they should not report.
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.ChunkCount2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.ParsingTimeMax2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.ParsingTimeMin2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.ParsingTimeTotal2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.TokensParsedMax2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.TokensParsedMin2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.TokensParsedAverage2",
+                                    1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.YieldedTimeMax2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.YieldedTimeMin2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.YieldedTimeAverage2", 1);
+
+  // Expect specific values for the chunks and tokens counts
+  histogram_tester.ExpectUniqueSample("Blink.HTMLParsing.ChunkCount2", 1, 1);
+  histogram_tester.ExpectUniqueSample("Blink.HTMLParsing.TokensParsedMax2", 5,
+                                      1);
+  histogram_tester.ExpectUniqueSample("Blink.HTMLParsing.TokensParsedMin2", 5,
+                                      1);
+  histogram_tester.ExpectUniqueSample("Blink.HTMLParsing.TokensParsedAverage2",
+                                      5, 1);
+
+  // Expect that the times have moved from the default and the max and min
+  // and total are all the same (within the same bucket)
+  std::vector<base::Bucket> parsing_time_max_buckets =
+      histogram_tester.GetAllSamples("Blink.HTMLParsing.ParsingTimeMax2");
+  std::vector<base::Bucket> parsing_time_min_buckets =
+      histogram_tester.GetAllSamples("Blink.HTMLParsing.ParsingTimeMin2");
+  std::vector<base::Bucket> parsing_time_total_buckets =
+      histogram_tester.GetAllSamples("Blink.HTMLParsing.ParsingTimeTotal2");
+  EXPECT_EQ(parsing_time_max_buckets.size(), 1u);
+  EXPECT_EQ(parsing_time_min_buckets.size(), 1u);
+  EXPECT_EQ(parsing_time_total_buckets.size(), 1u);
+  EXPECT_GT(parsing_time_max_buckets[0].min, 0);
+  EXPECT_GT(parsing_time_min_buckets[0].min, 0);
+  EXPECT_GT(parsing_time_total_buckets[0].min, 0);
+
+  histogram_tester.ExpectUniqueSample("Blink.HTMLParsing.InputCharacterCount",
+                                      19, 1);
+}
+
+TEST_F(HTMLForceSynchronousParserMetricsTest, HistogramReportsTwoChunks) {
+  // Although the tests use a mock clock, the metrics recorder checks if the
+  // system has a high resolution clock before recording results. As a result,
+  // the tests will fail if the system does not have a high resolution clock.
+  if (!base::TimeTicks::IsHighResolution())
+    return;
+
+  ScopedForceSynchronousHTMLParsingForTest(true);
+
+  base::HistogramTester histogram_tester;
+
+  // This content processes many tokens before a script tag used as the yield
+  // threshold. If the yield behavior changes this test may need updating.
+  LoadHTML(R"HTML(
+    <head></head>
+    <div></div><div></div><div></div><div></div><div></div><div></div>
+    <div></div><div></div><div></div><div></div><div></div><div></div>
+    <div></div><div></div><div></div><div></div><div></div><div></div>
+    <div></div><div></div><div></div><div></div><div></div><div></div>
+    <div></div><div></div><div></div><div></div><div></div><div></div>
+    <div></div><div></div><div></div><div></div><div></div><div></div>
+    <div></div><div></div><div></div><div></div><div></div><div></div>
+    <div></div><div></div><div></div><div></div><div></div><div></div>
+    <div></div><div></div><div></div><div></div><div></div><div></div>
+    <script>document.offsetTop</script>
+  )HTML");
+
+  // Should have one of each metric.
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.ChunkCount2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.ParsingTimeMax2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.ParsingTimeMin2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.ParsingTimeTotal2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.TokensParsedMax2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.TokensParsedMin2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.TokensParsedAverage2",
+                                    1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.YieldedTimeMax2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.YieldedTimeMin2", 1);
+  histogram_tester.ExpectTotalCount("Blink.HTMLParsing.YieldedTimeAverage2", 1);
+
+  // Expect specific values for the chunks and tokens counts
+  histogram_tester.ExpectUniqueSample("Blink.HTMLParsing.ChunkCount2", 2, 1);
+  histogram_tester.ExpectUniqueSample("Blink.HTMLParsing.TokensParsedMax2", 124,
+                                      1);
+  histogram_tester.ExpectUniqueSample("Blink.HTMLParsing.TokensParsedMin2", 2,
+                                      1);
+  histogram_tester.ExpectUniqueSample("Blink.HTMLParsing.TokensParsedAverage2",
+                                      63, 1);
+
+  // For parse times, expect that the times have moved from the default.
+  std::vector<base::Bucket> parsing_time_max_buckets =
+      histogram_tester.GetAllSamples("Blink.HTMLParsing.ParsingTimeMax2");
+  std::vector<base::Bucket> parsing_time_min_buckets =
+      histogram_tester.GetAllSamples("Blink.HTMLParsing.ParsingTimeMin2");
+  std::vector<base::Bucket> parsing_time_total_buckets =
+      histogram_tester.GetAllSamples("Blink.HTMLParsing.ParsingTimeTotal2");
+  EXPECT_EQ(parsing_time_max_buckets.size(), 1u);
+  EXPECT_EQ(parsing_time_min_buckets.size(), 1u);
+  EXPECT_EQ(parsing_time_total_buckets.size(), 1u);
+  EXPECT_GT(parsing_time_max_buckets[0].min, 0);
+  EXPECT_GT(parsing_time_min_buckets[0].min, 0);
+  EXPECT_GT(parsing_time_total_buckets[0].min, 0);
+
+  // For yields, the values should be the same because there was only one yield,
+  // but due to different histogram sizes we can't directly compare them.
+  std::vector<base::Bucket> yield_time_max_buckets =
+      histogram_tester.GetAllSamples("Blink.HTMLParsing.YieldedTimeMax2");
+  std::vector<base::Bucket> yield_time_min_buckets =
+      histogram_tester.GetAllSamples("Blink.HTMLParsing.YieldedTimeMin2");
+  std::vector<base::Bucket> yield_time_average_buckets =
+      histogram_tester.GetAllSamples("Blink.HTMLParsing.YieldedTimeAverage2");
+  EXPECT_EQ(yield_time_max_buckets.size(), 1u);
+  EXPECT_EQ(yield_time_min_buckets.size(), 1u);
+  EXPECT_EQ(yield_time_average_buckets.size(), 1u);
+  EXPECT_GT(yield_time_max_buckets[0].min, 0);
+  EXPECT_GT(yield_time_min_buckets[0].min, 0);
+  EXPECT_GT(yield_time_average_buckets[0].min, 0);
+
+  histogram_tester.ExpectUniqueSample("Blink.HTMLParsing.InputCharacterCount",
+                                      700, 1);
+}
+
+TEST_F(HTMLForceSynchronousParserMetricsTest, UkmStoresValuesCorrectly) {
   // Although the tests use a mock clock, the metrics recorder checks if the
   // system has a high resolution clock before recording results. As a result,
   // the tests will fail if the system does not have a high resolution clock.
@@ -191,7 +360,7 @@
   reporter.AddChunk(second_parse_time, second_tokens_parsed);
   reporter.AddYieldInterval(second_yield_time);
   reporter.AddChunk(third_parse_time, third_tokens_parsed);
-  reporter.ReportMetricsAtParseEnd();
+  reporter.ReportMetricsAtParseEnd(false);
 
   // Check we have a single entry
   entries = recorder.GetEntriesByName("Blink.HTMLParsing");
diff --git a/third_party/blink/renderer/core/layout/ng/block-fragmentation-tutorial.md b/third_party/blink/renderer/core/layout/ng/block-fragmentation-tutorial.md
index 999ef50..3ef2f33 100644
--- a/third_party/blink/renderer/core/layout/ng/block-fragmentation-tutorial.md
+++ b/third_party/blink/renderer/core/layout/ng/block-fragmentation-tutorial.md
@@ -228,6 +228,22 @@
 fragments can be retrieved from
 [BreakToken()->ConsumedBlockSize()](ng_block_break_token.h).
 
+As mentioned earlier, normally the right thing to do before performing block
+fragmentation steps is to check if
+[ConstraintSpace().HasBlockFragmentation()](ng_constraint_space.h) returns true,
+but there are situations where we may already have generated fragments from a
+node, but need to stop it from fragmenting any further. This happens when
+overflow is clipped
+[(overflow:clip)](https://www.w3.org/TR/css-overflow-3/#valdef-overflow-clip). In
+such situations, ConstraintSpace().HasBlockFragmentation() will return false,
+but we still need to pick up any previous break token to resume layout
+correctly. In cases where this distinction matters (like here - since the
+previous break token is necessary in order to calculate the final block-size, if
+specified), [InvolvedInBlockFragmentation()](ng_fragmentation_utils.h) should be
+called instead. This situation is detected in FinishFragmentation(), and
+kDisableFragmentation will be returned then, which means that we need to abort
+layout and retry without fragmentation.
+
 ## Break appeal ##
 
 Some breakpoints are more appealing, while others violate certain breaking
@@ -364,16 +380,17 @@
 had one break token child, i.e. the one for #container. We'll proceed with its
 sibling #next, which will also fit in the second column. And we're done.
 
-## Aborting and re-running layout to an earlier breakpoint ##
+## Aborting and re-running layout ##
 
-If BreakBeforeChildIfNeeded() returns kNeedsEarlierBreak, or
-FinishFragmentation() fails (i.e. returns false), we ran out of space at an
-unappealing breakpoint. It also means that we have actually found a better
-earlier breakpoint (further up in the fragmentainer). When this happens, we need
-to abort and rerun layout, but this time with a parameter that says exactly
-where to stop and break. Early breaks are stored in NGLayoutResult when
-found. See NGLayoutResult::GetEarlyBreak() and the
-[NGEarlyBreak](ng_early_break.h) structure.
+### Re-running to an earlier breakpoint ###
+
+If BreakBeforeChildIfNeeded() or FinishFragmentation() returns
+kNeedsEarlierBreak, we ran out of space at an unappealing breakpoint. It also
+means that we have actually found a better earlier breakpoint (further up in the
+fragmentainer). When this happens, we need to abort and rerun layout, but this
+time with a parameter that says exactly where to stop and break. Early breaks
+are stored in NGLayoutResult when found. See NGLayoutResult::GetEarlyBreak() and
+the [NGEarlyBreak](ng_early_break.h) structure.
 
 An algorithm can be rerun to break at the appealing early breakpoint by passing
 said early breakpoint to the algorithm's constructor. This can be done in the
@@ -391,6 +408,20 @@
 [EnterEarlyBreakInChild()](ng_fragmentation_utils.h) should be called, and
 the return value should be passed to the layout algorithm of the child.
 
+### Re-running without block fragmentation ###
+
+If [FinishFragmentation()](ng_fragmentation_utils.h) returns
+kDisableFragmentation, it means that a clipped node isn't allowed to fragment
+any further, because we've reached the end, and anything past that point will be
+clipped (and we don't want any additional fragmentainers generated just to hold
+empty clipped fragments). When we've reached the end, but some child still
+claims more space than available in the current fragmentainer, we need to abort
+and relayout without block fragmentation, so that the node from this point will
+be treated as monolithic.
+
+The correct response to this is to abort layout of the node and relayout using
+[NGLayoutAlgorithm::RelayoutWithoutFragmentation()](ng_layout_algorithm.h).
+
 ## Parallel flows ##
 
 With kContinue from BreakBeforeChildIfNeeded(), we may continue as long as there
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc
index bdeb831..6c28ca1 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc
@@ -424,19 +424,22 @@
     result = LayoutWithInlineChildLayoutContext(first_child);
   else
     result = Layout(nullptr);
-  if (UNLIKELY(result->Status() == NGLayoutResult::kNeedsEarlierBreak)) {
-    // If we found a good break somewhere inside this block, re-layout and break
-    // at that location.
-    DCHECK(result->GetEarlyBreak());
-    return RelayoutAndBreakEarlier<NGBlockLayoutAlgorithm>(
-        *result->GetEarlyBreak());
-  } else if (UNLIKELY(result->Status() ==
-                      NGLayoutResult::
-                          kNeedsRelayoutWithNoForcedTruncateAtLineClamp)) {
-    DCHECK(!ignore_line_clamp_);
-    return RelayoutIgnoringLineClamp();
+  switch (result->Status()) {
+    case NGLayoutResult::kNeedsEarlierBreak:
+      // If we found a good break somewhere inside this block, re-layout and
+      // break at that location.
+      DCHECK(result->GetEarlyBreak());
+      return RelayoutAndBreakEarlier<NGBlockLayoutAlgorithm>(
+          *result->GetEarlyBreak());
+    case NGLayoutResult::kNeedsRelayoutWithNoForcedTruncateAtLineClamp:
+      DCHECK(!ignore_line_clamp_);
+      return RelayoutIgnoringLineClamp();
+    case NGLayoutResult::kDisableFragmentation:
+      DCHECK(ConstraintSpace().HasBlockFragmentation());
+      return RelayoutWithoutFragmentation<NGBlockLayoutAlgorithm>();
+    default:
+      return result;
   }
-  return result;
 }
 
 NOINLINE const NGLayoutResult*
@@ -927,10 +930,15 @@
   // We only finalize for fragmentation if the fragment has a BFC block offset.
   // This may occur with a zero block size fragment. We need to know the BFC
   // block offset to determine where the fragmentation line is relative to us.
-  if (container_builder_.BfcBlockOffset() &&
-      ConstraintSpace().HasBlockFragmentation()) {
-    if (!FinalizeForFragmentation())
-      return container_builder_.Abort(NGLayoutResult::kNeedsEarlierBreak);
+  if (UNLIKELY(container_builder_.BfcBlockOffset() &&
+               InvolvedInBlockFragmentation(container_builder_))) {
+    NGBreakStatus status = FinalizeForFragmentation();
+    if (status != NGBreakStatus::kContinue) {
+      if (status == NGBreakStatus::kNeedsEarlierBreak)
+        return container_builder_.Abort(NGLayoutResult::kNeedsEarlierBreak);
+      DCHECK_EQ(status, NGBreakStatus::kDisableFragmentation);
+      return container_builder_.Abort(NGLayoutResult::kDisableFragmentation);
+    }
   }
 
   NGOutOfFlowLayoutPart(Node(), ConstraintSpace(), &container_builder_).Run();
@@ -938,7 +946,7 @@
 #if DCHECK_IS_ON()
   // If we're not participating in a fragmentation context, no block
   // fragmentation related fields should have been set.
-  if (!ConstraintSpace().HasBlockFragmentation())
+  if (!InvolvedInBlockFragmentation(container_builder_))
     container_builder_.CheckNoBlockFragmentation();
 #endif
 
@@ -2240,8 +2248,9 @@
   }
 }
 
-bool NGBlockLayoutAlgorithm::FinalizeForFragmentation() {
-  if (Node().IsInlineFormattingContextRoot() && !early_break_) {
+NGBreakStatus NGBlockLayoutAlgorithm::FinalizeForFragmentation() {
+  if (Node().IsInlineFormattingContextRoot() && !early_break_ &&
+      ConstraintSpace().HasBlockFragmentation()) {
     if (container_builder_.HasInflowChildBreakInside() ||
         first_overflowing_line_) {
       if (first_overflowing_line_ &&
@@ -2261,7 +2270,7 @@
         const NGEarlyBreak* breakpoint =
             MakeGarbageCollected<NGEarlyBreak>(line_number);
         container_builder_.SetEarlyBreak(breakpoint, kBreakAppealPerfect);
-        return false;
+        return NGBreakStatus::kNeedsEarlierBreak;
       }
     } else {
       // Everything could fit in the current fragmentainer, but, depending on
@@ -2300,7 +2309,7 @@
                                               consumed_block_size);
       container_builder_.SetConsumedBlockSize(fragments_total_block_size);
     }
-    return true;
+    return NGBreakStatus::kContinue;
   }
 
   LayoutUnit space_left = kIndefiniteSize;
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h
index b3a92961..5f476f5 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h
@@ -225,9 +225,11 @@
   // from crossing fragmentainer boundaries, and rather create a break token if
   // we're out of space. As part of finalizing we may also discover that we need
   // to abort layout, because we've run out of space at a less-than-ideal
-  // location. In this case, false will be returned. Otherwise, true will be
-  // returned.
-  bool FinalizeForFragmentation();
+  // location, or that we need to relayout without block fragmentation (when a
+  // clipped box gets overflowed past the fragmentation line). The return value
+  // can be checked for this. Only if kContinue is returned, can a fragment be
+  // created.
+  NGBreakStatus FinalizeForFragmentation();
 
   // Insert a fragmentainer break before the child if necessary.
   // See |::blink::BreakBeforeChildIfNeeded()| for more documentation.
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_node.cc b/third_party/blink/renderer/core/layout/ng/ng_block_node.cc
index a098480f..aff80cd9 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_block_node.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_block_node.cc
@@ -1526,6 +1526,13 @@
   return transform;
 }
 
+bool NGBlockNode::HasNonVisibleBlockOverflow() const {
+  OverflowClipAxes clip_axes = GetOverflowClipAxes();
+  if (Style().IsHorizontalWritingMode())
+    return clip_axes & kOverflowClipY;
+  return clip_axes & kOverflowClipX;
+}
+
 bool NGBlockNode::IsCustomLayoutLoaded() const {
   DCHECK(box_->IsLayoutNGCustom());
   return To<LayoutNGCustom>(box_.Get())->IsLoaded();
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_node.h b/third_party/blink/renderer/core/layout/ng/ng_block_node.h
index 83ce0915..02100c2 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_block_node.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_block_node.h
@@ -123,6 +123,11 @@
   bool HasTopOverflow() const { return box_->HasTopOverflow(); }
   bool HasNonVisibleOverflow() const { return box_->HasNonVisibleOverflow(); }
 
+  // Return true if overflow in the block direction is clipped. With
+  // overflow-[xy]:clip, it is possible with visible overflow along one axis at
+  // the same time as we clip it along the other axis.
+  bool HasNonVisibleBlockOverflow() const;
+
   OverflowClipAxes GetOverflowClipAxes() const {
     return box_->GetOverflowClipAxes();
   }
diff --git a/third_party/blink/renderer/core/layout/ng/ng_constraint_space_builder.h b/third_party/blink/renderer/core/layout/ng/ng_constraint_space_builder.h
index bd26f3a8..e7bcc33 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_constraint_space_builder.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_constraint_space_builder.h
@@ -452,6 +452,15 @@
     return std::move(space_);
   }
 
+  static NGConstraintSpace CloneWithoutFragmentation(
+      const NGConstraintSpace& other) {
+    DCHECK(other.HasBlockFragmentation());
+    NGConstraintSpace copy = other;
+    DCHECK(copy.rare_data_);
+    copy.rare_data_->block_direction_fragmentation_type = kFragmentNone;
+    return copy;
+  }
+
  private:
   NGConstraintSpace space_;
 
diff --git a/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.cc b/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.cc
index f883d5f4..12a80b2 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.cc
@@ -214,7 +214,13 @@
     const NGConstraintSpace& space,
     const NGBlockBreakToken* previous_break_token,
     NGBoxFragmentBuilder* builder) {
-  builder->SetHasBlockFragmentation();
+  // When resuming layout after a break, we may not be allowed to break again
+  // (because of clipped overflow). In such situations, we should not call
+  // SetHasBlockFragmentation(), but we still need to resume layout correctly,
+  // based on the previous break token.
+  DCHECK(space.HasBlockFragmentation() || previous_break_token);
+  if (space.HasBlockFragmentation())
+    builder->SetHasBlockFragmentation();
   builder->SetPreviousBreakToken(previous_break_token);
 
   if (space.IsInitialColumnBalancingPass())
@@ -244,11 +250,11 @@
   return max_block_size == current_total_block_size;
 }
 
-bool FinishFragmentation(NGBlockNode node,
-                         const NGConstraintSpace& space,
-                         LayoutUnit trailing_border_padding,
-                         LayoutUnit space_left,
-                         NGBoxFragmentBuilder* builder) {
+NGBreakStatus FinishFragmentation(NGBlockNode node,
+                                  const NGConstraintSpace& space,
+                                  LayoutUnit trailing_border_padding,
+                                  LayoutUnit space_left,
+                                  NGBoxFragmentBuilder* builder) {
   const NGBlockBreakToken* previous_break_token = builder->PreviousBreakToken();
   LayoutUnit previously_consumed_block_size;
   if (previous_break_token && !previous_break_token->IsBreakBefore())
@@ -301,7 +307,8 @@
     // two fragments for #container after the spanner, each 40px tall.
     final_block_size = std::min(final_block_size, intrinsic_block_size) -
                        trailing_border_padding;
-  } else if (space_left != kIndefiniteSize && desired_block_size > space_left) {
+  } else if (space_left != kIndefiniteSize && desired_block_size > space_left &&
+             space.HasBlockFragmentation()) {
     // We're taller than what we have room for. We don't want to use more than
     // |space_left|, but if the intrinsic block-size is larger than that, it
     // means that there's something unbreakable (monolithic) inside (or we'd
@@ -348,14 +355,14 @@
                                 final_block_size);
   builder->SetFragmentBlockSize(final_block_size);
 
-  if (builder->FoundColumnSpanner())
-    return true;
+  if (builder->FoundColumnSpanner() || !space.HasBlockFragmentation())
+    return NGBreakStatus::kContinue;
 
   if (space_left == kIndefiniteSize) {
     // We don't know how space is available (initial column balancing pass), so
     // we won't break.
     builder->SetIsAtBlockEnd();
-    return true;
+    return NGBreakStatus::kContinue;
   }
 
   if (builder->HasChildBreakInside()) {
@@ -397,8 +404,20 @@
       if (!was_broken_by_child ||
           IsNodeFullyGrown(node, space, fragments_total_block_size,
                            builder->BorderPadding(),
-                           builder->InitialBorderBoxSize().inline_size))
+                           builder->InitialBorderBoxSize().inline_size)) {
+        if (node.HasNonVisibleBlockOverflow() &&
+            builder->HasChildBreakInside()) {
+          // We have reached the end of a fragmentable node that clips overflow
+          // in the block direction. If something broke inside at this point, we
+          // need to relayout without fragmentation, so that we don't generate
+          // any additional fragments (apart from the one we're working on) from
+          // this node. We don't want any zero-sized clipped fragments that
+          // contribute to superfluous fragmentainers.
+          return NGBreakStatus::kDisableFragmentation;
+        }
+
         builder->SetIsAtBlockEnd();
+      }
 
       // If we're going to break just because of floats or out-of-flow child
       // breaks, no break appeal will have been recorded so far, since we only
@@ -420,7 +439,7 @@
                                     std::max(final_block_size, space_left));
     }
 
-    return true;
+    return NGBreakStatus::kContinue;
   }
 
   if (desired_block_size > space_left) {
@@ -451,16 +470,16 @@
       //
       // [1] https://www.w3.org/TR/css-break-3/#possible-breaks
       if (builder->HasEarlyBreak())
-        return false;
+        return NGBreakStatus::kNeedsEarlierBreak;
       break_appeal = kBreakAppealLastResort;
     }
     builder->SetBreakAppeal(break_appeal);
-    return true;
+    return NGBreakStatus::kContinue;
   }
 
   // The end of the block fits in the current fragmentainer.
   builder->SetIsAtBlockEnd();
-  return true;
+  return NGBreakStatus::kContinue;
 }
 
 NGBreakStatus BreakBeforeChildIfNeeded(const NGConstraintSpace& space,
diff --git a/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.h b/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.h
index cd6dc8c..8b13ccd8 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.h
@@ -48,6 +48,17 @@
   return token && !token->IsBreakBefore();
 }
 
+// Return true if the node may break into multiple fragments (or has already
+// broken). In some situations we'll disable block fragmentation while in the
+// middle of layout of a node (to prevent superfluous empty fragments, if
+// overflow is clipped). In some cases it's not enough to just check if we're
+// currently performing block fragmentation; we also need to know if it has
+// already been fragmented (to resume layout correctly, but not break again).
+inline bool InvolvedInBlockFragmentation(const NGBoxFragmentBuilder& builder) {
+  return builder.ConstraintSpace()->HasBlockFragmentation() ||
+         builder.PreviousBreakToken();
+}
+
 // Calculate the final "break-between" value at a class A or C breakpoint. This
 // is the combination of all break-before and break-after values that met at the
 // breakpoint.
@@ -152,6 +163,33 @@
                       const NGBoxStrut& border_padding,
                       LayoutUnit inline_size);
 
+// Outcome of considering (and possibly attempting) breaking before or inside a
+// child.
+enum class NGBreakStatus {
+  // Continue layout. No break was inserted in this operation.
+  kContinue,
+
+  // A break was inserted before the child. Discard the child fragment and
+  // finish layout of the container. If there was a break inside the child, it
+  // will be discarded along with the child fragment.
+  kBrokeBefore,
+
+  // The fragment couldn't fit here, but no break was inserted before/inside the
+  // child, as it was an unappealing place to break, and we have a better
+  // earlier breakpoint. We now need to abort the current layout, and go back
+  // and re-layout to said earlier breakpoint.
+  kNeedsEarlierBreak,
+
+  // The node broke inside when it's not allowed to generate more fragments
+  // (than the one we're working on right now). This happens when a child inside
+  // an overflow:clip box breaks, and we're past the block-end edge of the
+  // overflow:clip box. The fragmentation engine has one job: to insert breaks
+  // in order to prevent content from overflowing the fragmentainers, but if
+  // we're past the block-end edge of a clipped box, there'll be no
+  // fragmentainer overflow, and therefore no need for breaks.
+  kDisableFragmentation,
+};
+
 // Update and write fragmentation information to the fragment builder after
 // layout. This will update the block-size stored in the builder. When
 // calculating the block-size, a layout algorithm will include the accumulated
@@ -161,34 +199,18 @@
 // regardless of fragmentation. This function will update the block-size to the
 // actual fragment size, by examining possible breakpoints, if necessary.
 //
-// Return true if successful. If false is returned, it means that we ran out of
-// space at a less-than-ideal location - in this case between the last child and
-// the block-end padding / border. Furthermore, this also means that we know
-// that we have a better earlier breakpoint, so the correct response to 'false'
-// is to abort layout, then relayout and break earlier.
-bool FinishFragmentation(NGBlockNode node,
-                         const NGConstraintSpace&,
-                         LayoutUnit trailing_border_padding,
-                         LayoutUnit space_left,
-                         NGBoxFragmentBuilder*);
-
-// Outcome of considering (and possibly attempting) breaking before a child.
-enum class NGBreakStatus {
-  // Continue layout. No break was inserted before the child (but there may be
-  // a break inside).
-  kContinue,
-
-  // A break was inserted before the child. Discard the child fragment and
-  // finish layout of the container. If there was a break inside the child, it
-  // will be discarded along with the child fragment.
-  kBrokeBefore,
-
-  // The child couldn't fit here, but no break was inserted before the child,
-  // as it was an unappealing place to break, and we have a better earlier
-  // breakpoint. We now need to abort the current layout, and go back and
-  // re-layout to said earlier breakpoint.
-  kNeedsEarlierBreak
-};
+// Return kContinue if we're allowed to generate a fragment. Otherwise, it means
+// that we need to abort and relayout, either because we ran out of space at a
+// less-than-ideal location (kNeedsEarlierBreak) - in this case between the last
+// child and the block-end padding / border, or, because we need to disable
+// fragmentation (kDisableFragmentation). kBrokeBefore is never returned here
+// (if we need a break before the node, that's something that will be determined
+// by the parent algorithm).
+NGBreakStatus FinishFragmentation(NGBlockNode node,
+                                  const NGConstraintSpace&,
+                                  LayoutUnit trailing_border_padding,
+                                  LayoutUnit space_left,
+                                  NGBoxFragmentBuilder*);
 
 // Insert a fragmentainer break before the child if necessary. In that case, the
 // previous in-flow position will be updated, we'll return |kBrokeBefore|. If we
@@ -197,7 +219,9 @@
 // might have to go back and break here. Return |kContinue| if we're to continue
 // laying out. If |kNeedsEarlierBreak| is returned, it means that we ran out of
 // space, but shouldn't break before the child, but rather abort layout, and
-// re-layout to a previously found good breakpoint.  If
+// re-layout to a previously found good breakpoint. |kDisableFragmentation| will
+// never be returned from this function (we need to finish layout of the
+// container before we can tell whether we reached the end). If
 // |has_container_separation| is true, it means that we're at a valid
 // breakpoint. We obviously prefer valid breakpoints, but sometimes we need to
 // break at undesirable locations. Class A breakpoints occur between block
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/ng_layout_algorithm.h
index eaf904d..d7975b1 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_algorithm.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_algorithm.h
@@ -10,6 +10,7 @@
 #include "third_party/blink/renderer/core/layout/min_max_sizes.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_block_node.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_constraint_space.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_constraint_space_builder.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.h"
 #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
 
@@ -92,8 +93,7 @@
     container_builder_.SetIsNewFormattingContext(
         params.space.IsNewFormattingContext());
     container_builder_.SetInitialFragmentGeometry(params.fragment_geometry);
-    if (UNLIKELY(params.space.HasBlockFragmentation())) {
-      DCHECK(params.space.IsAnonymous() || !params.node.IsMonolithic());
+    if (UNLIKELY(params.space.HasBlockFragmentation() || params.break_token)) {
       SetupFragmentBuilderForFragmentation(params.space, params.break_token,
                                            &container_builder_);
     }
@@ -153,6 +153,32 @@
     return algorithm_with_break.Layout();
   }
 
+  // Lay out again, this time without block fragmentation. This happens when a
+  // block-axis clipped node reaches the end, but still has content inside that
+  // wants to break. We don't want any zero-sized clipped fragments that
+  // contribute to superfluous fragmentainers.
+  template <typename Algorithm>
+  const NGLayoutResult* RelayoutWithoutFragmentation() {
+    DCHECK(ConstraintSpace().HasBlockFragmentation());
+    // We'll relayout with a special cloned constraint space that disables
+    // further fragmentation (but rather lets clipped child content "overflow"
+    // past the fragmentation line). This means that the cached constraint space
+    // will still be set up to do block fragmentation, but that should be the
+    // right thing, since, as far as input is concerned, this node is meant to
+    // perform block fragmentation (and it may already have produced multiple
+    // fragment, but this one will be the last).
+    NGConstraintSpace new_space =
+        NGConstraintSpaceBuilder::CloneWithoutFragmentation(ConstraintSpace());
+
+    NGLayoutAlgorithmParams params(Node(),
+                                   container_builder_.InitialFragmentGeometry(),
+                                   new_space, BreakToken());
+    Algorithm algorithm_without_fragmentation(params);
+    auto& new_builder = algorithm_without_fragmentation.container_builder_;
+    new_builder.SetBoxType(container_builder_.BoxType());
+    return algorithm_without_fragmentation.Layout();
+  }
+
   NGInputNodeType node_;
 
   // When set, this will specify where to break before or inside. If not set,
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_result.h b/third_party/blink/renderer/core/layout/ng/ng_layout_result.h
index 8bc69a4f..b2fddcf5 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_result.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_result.h
@@ -45,6 +45,7 @@
     kNeedsEarlierBreak = 2,
     kOutOfFragmentainerSpace = 3,
     kNeedsRelayoutWithNoForcedTruncateAtLineClamp = 4,
+    kDisableFragmentation = 5,
     // When adding new values, make sure the bit size of |Bitfields::status| is
     // large enough to store.
   };
diff --git a/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_algorithm.cc
index 15edbc7..7b20f323 100644
--- a/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_algorithm.cc
@@ -5,6 +5,9 @@
 #include "third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_algorithm.h"
 
 #include "third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.h"
+#include "third_party/blink/renderer/core/svg/svg_animated_length.h"
+#include "third_party/blink/renderer/core/svg/svg_length_context.h"
+#include "third_party/blink/renderer/core/svg/svg_text_content_element.h"
 
 namespace blink {
 
@@ -109,7 +112,7 @@
   AdjustPositionsDxDy(items);
 
   // 5. Apply ‘textLength’ attribute
-  // TODO(crbug.com/1179585): Implement this step.
+  ApplyTextLengthAttribute(items);
 
   // 6. Adjust positions: x, y
   AdjustPositionsXY(items);
@@ -256,6 +259,223 @@
   }
 }
 
+struct SVGTextLengthContext {
+  DISALLOW_NEW();
+  wtf_size_t start_index;
+  float text_length;
+  Member<const LayoutObject> layout_object;
+  void Trace(Visitor* visitor) const { visitor->Trace(layout_object); }
+};
+
+}  // namespace blink
+
+WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(blink::SVGTextLengthContext)
+
+namespace blink {
+
+void NGSVGTextLayoutAlgorithm::ApplyTextLengthAttribute(
+    const NGFragmentItemsBuilder::ItemWithOffsetList& items) {
+  // TODO(crbug.com/1179585): Traversing LayoutObject ancestors in a layout
+  // algorithm is not preferable. We should consider moving this part to
+  // NGSVGTextLayoutAttributesBuilder.
+
+  VectorOf<SVGTextLengthContext> context_stack;
+  // Start indexes of the highest textLength elements which were already
+  // handled by ResolveTextLength().
+  Vector<wtf_size_t> resolved_descendant_node_starts;
+  const LayoutObject* last_parent = nullptr;
+  for (wtf_size_t index = 0; index < result_.size(); ++index) {
+    const LayoutObject* layout_object =
+        items[result_[index].item_index]->GetLayoutObject();
+    DCHECK(IsA<LayoutText>(layout_object));
+    if (last_parent == layout_object->Parent())
+      continue;
+    last_parent = layout_object->Parent();
+    VectorOfPairs<float, const LayoutObject> text_length_ancestors =
+        CollectTextLengthAncestors(items, index, layout_object);
+
+    // Find a common part of context_stack and text_length_ancestors.
+    wtf_size_t common_size = 0;
+    for (const auto& ancestor : text_length_ancestors) {
+      if (common_size >= context_stack.size())
+        break;
+      if (context_stack[common_size].layout_object != ancestor.second)
+        break;
+      ++common_size;
+    }
+    // Pop uncommon part of context_stack.
+    while (context_stack.size() > common_size) {
+      const auto& context = context_stack.back();
+      ResolveTextLength(items, context.text_length, context.start_index, index,
+                        resolved_descendant_node_starts);
+      context_stack.pop_back();
+    }
+    // Push uncommon part of text_length_ancestors.
+    for (wtf_size_t p = common_size; p < text_length_ancestors.size(); ++p) {
+      context_stack.push_back(
+          SVGTextLengthContext{index, text_length_ancestors[p].first,
+                               text_length_ancestors[p].second});
+    }
+  }
+  while (!context_stack.IsEmpty()) {
+    const auto& context = context_stack.back();
+    ResolveTextLength(items, context.text_length, context.start_index,
+                      result_.size(), resolved_descendant_node_starts);
+    context_stack.pop_back();
+  }
+}
+
+// Collects ancestors with a valid textLength attribute up until the IFC.
+// The result is a list of pairs of scaled textLength value and LayoutObject
+// in the reversed order of distance from the specified |layout_object|.
+VectorOfPairs<float, const LayoutObject>
+NGSVGTextLayoutAlgorithm::CollectTextLengthAncestors(
+    const NGFragmentItemsBuilder::ItemWithOffsetList& items,
+    wtf_size_t index,
+    const LayoutObject* layout_object) const {
+  DCHECK(layout_object);
+  VectorOfPairs<float, const LayoutObject> ancestors;
+  do {
+    layout_object = layout_object->Parent();
+    if (auto* element =
+            DynamicTo<SVGTextContentElement>(layout_object->GetNode())) {
+      if (element->TextLengthIsSpecifiedByUser()) {
+        float text_length = element->textLength()->CurrentValue()->Value(
+            SVGLengthContext(element));
+        // text_length is 0.0 if the textLength attribute has an invalid
+        // string. Legacy SVG <text> skips textLength processing if the
+        // attribute is "0" or invalid. Firefox skips textLength processing if
+        // textLength value is smaller than the intrinsic width of the text.
+        // This code follows the legacy behavior.
+        if (text_length > 0.0f) {
+          ancestors.push_back(std::make_pair(
+              text_length * ScalingFactorAt(items, index), layout_object));
+        }
+      }
+    }
+  } while (layout_object != inline_node_.GetLayoutBlockFlow());
+  ancestors.Reverse();
+  return ancestors;
+}
+
+// The implementation of step 2 of "Procedure: resolve text length"
+// in "5. Apply 'textLength' attribute".
+//
+// This function is called for elements with textLength in the order of
+// closed tags. e.g.
+//     <text textLength="...">
+//       <tspan textLength="...">...</tspan>
+//       <tspan textLength="...">...</tspan>
+//     </text>
+//    1. Called for the first <tspan>.
+//    2. Called for the second <tspan>.
+//    3. Called for the <text>.
+void NGSVGTextLayoutAlgorithm::ResolveTextLength(
+    const NGFragmentItemsBuilder::ItemWithOffsetList& items,
+    float text_length,
+    wtf_size_t i,
+    wtf_size_t j_plus_1,
+    Vector<wtf_size_t>& resolved_descendant_node_starts) {
+  // 2.1. Let a = +Infinity and b = −Infinity.
+  float min_position = std::numeric_limits<float>::infinity();
+  float max_position = -std::numeric_limits<float>::infinity();
+
+  // 2.2. Let i and j be the global index of the first character and last
+  // characters in node, respectively.
+  // ==> They are computed in ApplyTextLengthAttribute().
+
+  // 2.3. For each index k in the range [i, j] where the "addressable" flag of
+  // result[k] is true:
+  for (wtf_size_t k = i; k < j_plus_1; ++k) {
+    // 2.3.1. If the character at k is a linefeed or carriage return, return. No
+    // adjustments due to ‘textLength’ are made to a node with a forced line
+    // break.
+    // ==> We don't support white-space:pre yet. crbug.com/366558.
+
+    // 2.3.2. Let pos = the x coordinate of the position in result[k], if the
+    // "horizontal" flag is true, and the y coordinate otherwise.
+    float min_char_pos = horizontal_ ? *result_[k].x : *result_[k].y;
+
+    // 2.3.3. Let advance = the advance of the typographic character
+    // corresponding to character k.
+    PhysicalSize item_size = items[result_[k].item_index]->Size();
+    float inline_size = horizontal_ ? item_size.width : item_size.height;
+    // 2.3.4. Set a = min(a, pos, pos + advance).
+    min_position = std::min(min_position, min_char_pos);
+    // 2.3.5. Set b = max(b, pos, pos + advance).
+    max_position = std::max(max_position, min_char_pos + inline_size);
+  }
+  // 2.4. If a != +Infinity then:
+  if (min_position == std::numeric_limits<float>::infinity())
+    return;
+  // 2.4.1. Find the distance delta = ‘textLength’ computed value − (b − a).
+  const float delta = text_length - (max_position - min_position);
+
+  // TODO(crbug.com/1179585): Implement lengthAdjust="spacingAndGlyphs". The
+  // following code handles only lengthAdjust="spacing".
+
+  // 2.4.2. Find n, the total number of typographic characters in this node
+  // including any descendant nodes that are not resolved descendant nodes or
+  // within a resolved descendant node.
+  auto n = std::count_if(result_.begin() + i, result_.begin() + j_plus_1,
+                         [](const auto& info) {
+                           return !info.middle && !info.text_length_resolved;
+                         });
+  // 2.4.3. Let n = n + number of resolved descendant nodes − 1.
+  n += std::count_if(resolved_descendant_node_starts.begin(),
+                     resolved_descendant_node_starts.end(),
+                     [i, j_plus_1](const auto& start_index) {
+                       return i <= start_index && start_index < j_plus_1;
+                     }) -
+       1;
+  // 2.4.4. Find the per-character adjustment small-delta = delta/n.
+  float character_delta = n != 0 ? delta / n : delta;
+  // 2.4.5. Let shift = 0.
+  float shift = 0.0f;
+  // 2.4.6. For each index k in the range [i,j]:
+  for (wtf_size_t k = i; k < j_plus_1; ++k) {
+    // 2.4.6.1. Add shift to the x coordinate of the position in result[k], if
+    // the "horizontal" flag is true, and to the y coordinate otherwise.
+    if (horizontal_)
+      *result_[k].x += shift;
+    else
+      *result_[k].y += shift;
+    // 2.4.6.2. If the "middle" flag for result[k] is not true and k is not a
+    // character in a resolved descendant node other than the first character
+    // then shift = shift + small-delta.
+    if (!result_[k].middle &&
+        (std::any_of(resolved_descendant_node_starts.begin(),
+                     resolved_descendant_node_starts.end(),
+                     [k](auto offset) { return offset == k; }) ||
+         !result_[k].text_length_resolved))
+      shift += character_delta;
+    result_[k].text_length_resolved = true;
+  }
+  // We should shift characters until the end of this text chunk.
+  // Note: This is not defined by the algorithm. But it seems major SVG
+  // engines work so.
+  for (wtf_size_t k = j_plus_1; k < result_.size(); ++k) {
+    if (result_[k].anchored_chunk)
+      break;
+    if (horizontal_)
+      *result_[k].x += shift;
+    else
+      *result_[k].y += shift;
+  }
+
+  // Remove resolved_descendant_node_starts entries for descendant nodes,
+  // and register an entry for this node.
+  auto* new_end =
+      std::remove_if(resolved_descendant_node_starts.begin(),
+                     resolved_descendant_node_starts.end(),
+                     [i, j_plus_1](const auto& start_index) {
+                       return i <= start_index && start_index < j_plus_1;
+                     });
+  resolved_descendant_node_starts.erase(new_end,
+                                        resolved_descendant_node_starts.end());
+  resolved_descendant_node_starts.push_back(i);
+}
+
 void NGSVGTextLayoutAlgorithm::AdjustPositionsXY(
     const NGFragmentItemsBuilder::ItemWithOffsetList& items) {
   // 1. Let shift be the current adjustment due to the ‘x’ and ‘y’ attributes,
diff --git a/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_algorithm.h
index 2117674..bb4b9fd6 100644
--- a/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_algorithm.h
+++ b/third_party/blink/renderer/core/layout/ng/svg/ng_svg_text_layout_algorithm.h
@@ -27,6 +27,18 @@
                 const NGFragmentItemsBuilder::ItemWithOffsetList& items);
   void AdjustPositionsDxDy(
       const NGFragmentItemsBuilder::ItemWithOffsetList& items);
+  void ApplyTextLengthAttribute(
+      const NGFragmentItemsBuilder::ItemWithOffsetList& items);
+  VectorOfPairs<float, const LayoutObject> CollectTextLengthAncestors(
+      const NGFragmentItemsBuilder::ItemWithOffsetList& items,
+      wtf_size_t index,
+      const LayoutObject* layout_object) const;
+  void ResolveTextLength(
+      const NGFragmentItemsBuilder::ItemWithOffsetList& items,
+      float text_length,
+      wtf_size_t i,
+      wtf_size_t j_plus_1,
+      Vector<wtf_size_t>& resolved_descendant_node_starts);
   void AdjustPositionsXY(
       const NGFragmentItemsBuilder::ItemWithOffsetList& items);
   void ApplyAnchoring(const NGFragmentItemsBuilder::ItemWithOffsetList& items);
@@ -50,6 +62,8 @@
     bool hidden = false;
     bool middle = false;
     bool anchored_chunk = false;
+
+    bool text_length_resolved = false;
     wtf_size_t item_index = WTF::kNotFound;
   };
   // This data member represents "result" defined in the specification, but it
diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc
index 30207a5..ed787b7 100644
--- a/third_party/blink/renderer/core/loader/document_loader.cc
+++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -699,7 +699,7 @@
   UpdateForSameDocumentNavigation(
       new_url, kSameDocumentNavigationHistoryApi, std::move(data),
       scroll_restoration_type, type, frame_->DomWindow()->GetSecurityOrigin(),
-      /*is_content_initiated=*/true);
+      /*is_synchronously_committed=*/true);
 }
 
 void DocumentLoader::UpdateForSameDocumentNavigation(
@@ -709,7 +709,7 @@
     mojom::blink::ScrollRestorationType scroll_restoration_type,
     WebFrameLoadType type,
     const SecurityOrigin* initiator_origin,
-    bool is_content_initiated) {
+    bool is_synchronously_committed) {
   SinglePageAppNavigationType single_page_app_navigation_type =
       CategorizeSinglePageAppNavigation(same_document_navigation_source, type);
   UMA_HISTOGRAM_ENUMERATION(
@@ -754,7 +754,7 @@
   if (type == WebFrameLoadType::kStandard ||
       same_document_navigation_source == kSameDocumentNavigationDefault) {
     bool is_browser_initiated = !initiator_origin;
-    DCHECK(!(is_browser_initiated && is_content_initiated));
+    DCHECK(!(is_browser_initiated && is_synchronously_committed));
     has_text_fragment_token_ =
         TextFragmentAnchor::GenerateNewTokenForSameDocument(
             new_url.FragmentIdentifier(), type, is_browser_initiated,
@@ -781,7 +781,7 @@
       FrameScheduler::NavigationType::kSameDocument);
 
   GetLocalFrameClient().DidFinishSameDocumentNavigation(
-      history_item_.Get(), commit_type, is_content_initiated,
+      history_item_.Get(), commit_type, is_synchronously_committed,
       is_history_api_navigation, is_client_redirect_);
   probe::DidNavigateWithinDocument(frame_);
   if (!was_loading) {
@@ -1216,7 +1216,7 @@
     ClientRedirectPolicy client_redirect_policy,
     bool has_transient_user_activation,
     const SecurityOrigin* initiator_origin,
-    bool is_content_initiated,
+    bool is_synchronously_committed,
     mojom::blink::TriggeringEventInfo triggering_event_info,
     std::unique_ptr<WebDocumentLoader::ExtraData> extra_data) {
   DCHECK(!IsReloadLoadType(frame_load_type));
@@ -1264,10 +1264,10 @@
 
   // If the requesting document is cross-origin, perform the navigation
   // asynchronously to minimize the navigator's ability to execute timing
-  // attacks. If |is_content_initiated| is false, the navigation is already
-  // asynchronous since it's coming from another agent so there's no need to
-  // post it again.
-  if (is_content_initiated && initiator_origin &&
+  // attacks. If |is_synchronously_committed| is false, the navigation is
+  // already asynchronous since it's coming from the browser so there's no need
+  // to post it again.
+  if (is_synchronously_committed && initiator_origin &&
       !initiator_origin->CanAccess(frame_->DomWindow()->GetSecurityOrigin())) {
     frame_->GetTaskRunner(TaskType::kInternalLoading)
         ->PostTask(
@@ -1276,13 +1276,15 @@
                       WrapWeakPersistent(this), url, frame_load_type,
                       WrapPersistent(history_item), client_redirect_policy,
                       has_transient_user_activation,
-                      WTF::RetainedRef(initiator_origin), is_content_initiated,
-                      triggering_event_info, std::move(extra_data)));
+                      WTF::RetainedRef(initiator_origin),
+                      is_synchronously_committed, triggering_event_info,
+                      std::move(extra_data)));
   } else {
     CommitSameDocumentNavigationInternal(
         url, frame_load_type, history_item, client_redirect_policy,
-        has_transient_user_activation, initiator_origin, is_content_initiated,
-        triggering_event_info, std::move(extra_data));
+        has_transient_user_activation, initiator_origin,
+        is_synchronously_committed, triggering_event_info,
+        std::move(extra_data));
   }
   return mojom::CommitResult::Ok;
 }
@@ -1294,7 +1296,7 @@
     ClientRedirectPolicy client_redirect,
     bool has_transient_user_activation,
     const SecurityOrigin* initiator_origin,
-    bool is_content_initiated,
+    bool is_synchronously_committed,
     mojom::blink::TriggeringEventInfo triggering_event_info,
     std::unique_ptr<WebDocumentLoader::ExtraData> extra_data) {
   // If this function was scheduled to run asynchronously, this DocumentLoader
@@ -1349,7 +1351,7 @@
   UpdateForSameDocumentNavigation(url, kSameDocumentNavigationDefault, nullptr,
                                   mojom::blink::ScrollRestorationType::kAuto,
                                   frame_load_type, initiator_origin,
-                                  is_content_initiated);
+                                  is_synchronously_committed);
 
   initial_scroll_state_.was_scrolled_by_user = false;
 
diff --git a/third_party/blink/renderer/core/loader/document_loader.h b/third_party/blink/renderer/core/loader/document_loader.h
index 6ab0829..dee677d 100644
--- a/third_party/blink/renderer/core/loader/document_loader.h
+++ b/third_party/blink/renderer/core/loader/document_loader.h
@@ -168,13 +168,16 @@
       WebFrameLoadType = WebFrameLoadType::kReplaceCurrentItem,
       mojom::blink::ScrollRestorationType =
           mojom::blink::ScrollRestorationType::kAuto);
+
+  // |is_synchronously_committed| is described in comment for
+  // CommitSameDocumentNavigation.
   void UpdateForSameDocumentNavigation(const KURL&,
                                        SameDocumentNavigationSource,
                                        scoped_refptr<SerializedScriptValue>,
                                        mojom::blink::ScrollRestorationType,
                                        WebFrameLoadType,
                                        const SecurityOrigin* initiator_origin,
-                                       bool is_content_initiated);
+                                       bool is_synchronously_committed);
 
   const ResourceResponse& GetResponse() const { return response_; }
   bool IsClientRedirect() const { return is_client_redirect_; }
@@ -214,10 +217,9 @@
   // |initiator_origin| is the origin of the document or script that initiated
   // the navigation or nullptr if the navigation is browser-initiated (e.g.
   // typed in omnibox).
-  // |is_content_initiated| is true iff the navigation comes internally from
-  // *this* renderer's content (e.g. link click, script). E.g. this argument is
-  // false when script in another renderer initiates the navigation (even
-  // though it is "content initiated").
+  // |is_synchronously_committed| is true if the navigation is synchronously
+  // committed from within Blink, rather than being driven by the browser's
+  // navigation stack.
   mojom::CommitResult CommitSameDocumentNavigation(
       const KURL&,
       WebFrameLoadType,
@@ -225,7 +227,7 @@
       ClientRedirectPolicy,
       bool has_transient_user_activation,
       const SecurityOrigin* initiator_origin,
-      bool is_content_initiated,
+      bool is_synchronously_committed,
       mojom::blink::TriggeringEventInfo,
       std::unique_ptr<WebDocumentLoader::ExtraData>);
 
@@ -396,7 +398,7 @@
       ClientRedirectPolicy,
       bool has_transient_user_activation,
       const SecurityOrigin* initiator_origin,
-      bool is_content_initiated,
+      bool is_synchronously_committed,
       mojom::blink::TriggeringEventInfo,
       std::unique_ptr<WebDocumentLoader::ExtraData>);
 
diff --git a/third_party/blink/renderer/core/loader/frame_loader.cc b/third_party/blink/renderer/core/loader/frame_loader.cc
index 9b1c2aea..e3f2d42a5 100644
--- a/third_party/blink/renderer/core/loader/frame_loader.cc
+++ b/third_party/blink/renderer/core/loader/frame_loader.cc
@@ -662,7 +662,7 @@
     document_loader_->CommitSameDocumentNavigation(
         url, frame_load_type, nullptr, request.ClientRedirect(),
         resource_request.HasUserGesture(), origin_window->GetSecurityOrigin(),
-        /*is_content_initiated=*/true, request.GetTriggeringEventInfo(),
+        /*is_synchronously_committed=*/true, request.GetTriggeringEventInfo(),
         nullptr /* extra_data */);
     return;
   }
diff --git a/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc b/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc
index 2ebe131a..aac445a 100644
--- a/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc
+++ b/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc
@@ -38,6 +38,7 @@
 #include "third_party/blink/renderer/core/frame/visual_viewport.h"
 #include "third_party/blink/renderer/core/html/canvas/canvas_rendering_context.h"
 #include "third_party/blink/renderer/core/html/canvas/html_canvas_element.h"
+#include "third_party/blink/renderer/core/html/html_body_element.h"
 #include "third_party/blink/renderer/core/html/html_iframe_element.h"
 #include "third_party/blink/renderer/core/html/media/html_media_element.h"
 #include "third_party/blink/renderer/core/html/media/html_video_element.h"
@@ -1296,10 +1297,9 @@
         HasBoxDecorationsOrBackgroundImage(root_object->StyleRef()))
       return true;
 
-    // Now look at the body's layoutObject.
-    HTMLElement* body = layout_object.GetDocument().body();
-    LayoutObject* body_object =
-        IsA<HTMLBodyElement>(body) ? body->GetLayoutObject() : nullptr;
+    // Now look at the body's LayoutObject.
+    HTMLElement* body = layout_object.GetDocument().FirstBodyElement();
+    LayoutObject* body_object = body ? body->GetLayoutObject() : nullptr;
     if (body_object &&
         HasBoxDecorationsOrBackgroundImage(body_object->StyleRef()))
       return true;
diff --git a/third_party/blink/renderer/core/script/html_parser_script_runner.cc b/third_party/blink/renderer/core/script/html_parser_script_runner.cc
index e38332b..4e118ab 100644
--- a/third_party/blink/renderer/core/script/html_parser_script_runner.cc
+++ b/third_party/blink/renderer/core/script/html_parser_script_runner.cc
@@ -27,7 +27,6 @@
 
 #include <inttypes.h>
 #include <memory>
-#include "services/metrics/public/cpp/ukm_builders.h"
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/public/platform/task_type.h"
 #include "third_party/blink/renderer/core/dom/document_parser_timing.h"
diff --git a/third_party/blink/renderer/core/scroll/scroll_test.cc b/third_party/blink/renderer/core/scroll/scroll_test.cc
index 6bce2a00..4c1e811 100644
--- a/third_party/blink/renderer/core/scroll/scroll_test.cc
+++ b/third_party/blink/renderer/core/scroll/scroll_test.cc
@@ -289,7 +289,16 @@
 // Test that the callback of user scroll will be executed when the animation
 // finishes at ScrollAnimator::TickAnimation for root frame user scroll at both
 // the layout and visual viewport.
-TEST_F(ScrollAnimatorSimTest, TestRootFrameBothViewportsUserScrollCallBack) {
+#if defined(THREAD_SANITIZER)
+// Flaky under thread sanitizers, see http://crbug.com/1202020
+#define MAYBE_TestRootFrameBothViewportsUserScrollCallBack \
+  DISABLED_TestRootFrameBothViewportsUserScrollCallBack
+#else
+#define MAYBE_TestRootFrameBothViewportsUserScrollCallBack \
+  TestRootFrameBothViewportsUserScrollCallBack
+#endif
+TEST_F(ScrollAnimatorSimTest,
+       MAYBE_TestRootFrameBothViewportsUserScrollCallBack) {
   GetDocument().GetFrame()->GetSettings()->SetScrollAnimatorEnabled(true);
   WebView().MainFrameViewWidget()->Resize(gfx::Size(800, 500));
   SimRequest request("https://example.com/test.html", "text/html");
diff --git a/third_party/blink/renderer/modules/BUILD.gn b/third_party/blink/renderer/modules/BUILD.gn
index 96659ee..dc66c707 100644
--- a/third_party/blink/renderer/modules/BUILD.gn
+++ b/third_party/blink/renderer/modules/BUILD.gn
@@ -10,6 +10,7 @@
 import("//third_party/blink/renderer/build/scripts/scripts.gni")
 import("//third_party/blink/renderer/modules/modules.gni")
 import("//third_party/blink/renderer/modules/modules_idl_files.gni")
+import("//third_party/webrtc/webrtc.gni")
 
 if (is_android) {
   import("//build/config/android/rules.gni")
@@ -489,6 +490,10 @@
     sources += [ "payments/skip_to_gpay_utils_test.cc" ]
   }
 
+  if (rtc_use_h264) {
+    sources += [ "mediarecorder/h264_encoder_unittest.cc" ]
+  }
+
   configs += [
     "//third_party/blink/renderer:config",
     "//third_party/blink/renderer:inside_blink",
diff --git a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
index 6b619f3b..a77ea1f 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
@@ -118,10 +118,6 @@
   AXNodeObject::Trace(visitor);
 }
 
-LayoutObject* AXLayoutObject::GetLayoutObject() const {
-  return layout_object_;
-}
-
 bool IsProgrammaticallyScrollable(LayoutBox* box) {
   if (!box->IsScrollContainer())
     return false;
@@ -313,6 +309,89 @@
          object.GetLayoutObject()->IsText();
 }
 
+// Requires layoutObject to be present because it relies on style
+// user-modify. Don't move this logic to AXNodeObject.
+bool AXLayoutObject::IsEditable() const {
+  if (IsDetached())
+    return false;
+
+  const Node* node = GetNodeOrContainingBlockNode();
+  if (!node)
+    return false;
+
+  const auto* elem = DynamicTo<Element>(node);
+  if (!elem)
+    elem = FlatTreeTraversal::ParentElement(*node);
+  if (GetLayoutObject()->IsTextControlIncludingNG())
+    return true;
+
+  // Contrary to Firefox, we mark editable all auto-generated content, such as
+  // list bullets and soft line breaks, that are contained within an editable
+  // container.
+  if (HasEditableStyle(*node))
+    return true;
+
+  if (IsWebArea()) {
+    Document& document = GetLayoutObject()->GetDocument();
+    HTMLElement* body = document.body();
+    if (body && HasEditableStyle(*body)) {
+      // A web area is editable if the body is contenteditable, unless the body
+      // or an ancestor of the body is aria-hidden. The following avoids
+      // GetOrCreate() on the body so that IsEditable() can be called when
+      // layout is not clean. Check current object for AriaHiddenRoot(), and
+      // manually check the <html> and <body> elements directly.
+      bool is_null = true;
+      if (AriaHiddenRoot() ||
+          AccessibleNode::GetPropertyOrARIAAttribute(
+              body, AOMBooleanProperty::kHidden, is_null) ||
+          AccessibleNode::GetPropertyOrARIAAttribute(
+              body->parentElement(), AOMBooleanProperty::kHidden, is_null)) {
+        return false;
+      }
+      return true;
+    }
+
+    return HasEditableStyle(document);
+  }
+
+  return AXNodeObject::IsEditable();
+}
+
+// Requires layoutObject to be present because it relies on style
+// user-modify. Don't move this logic to AXNodeObject.
+// Returns true for a contenteditable or any descendant of it.
+bool AXLayoutObject::IsRichlyEditable() const {
+  if (IsDetached())
+    return false;
+
+  const Node* node = GetNodeOrContainingBlockNode();
+  if (!node)
+    return false;
+
+  const Element* elem = DynamicTo<Element>(node);
+  if (!elem)
+    elem = FlatTreeTraversal::ParentElement(*node);
+
+  // Contrary to Firefox, we mark richly editable all auto-generated content,
+  // such as list bullets and soft line breaks, that are contained within a
+  // richly editable container.
+  if (HasRichlyEditableStyle(*node))
+    return true;
+
+  if (IsWebArea()) {
+    Document& document = layout_object_->GetDocument();
+    HTMLElement* body = document.body();
+    if (body && HasRichlyEditableStyle(*body)) {
+      AXObject* ax_body = AXObjectCache().GetOrCreate(body);
+      return ax_body && ax_body != ax_body->AriaHiddenRoot();
+    }
+
+    return HasRichlyEditableStyle(document);
+  }
+
+  return AXNodeObject::IsRichlyEditable();
+}
+
 bool AXLayoutObject::IsLineBreakingObject() const {
   if (IsDetached())
     return false;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_layout_object.h b/third_party/blink/renderer/modules/accessibility/ax_layout_object.h
index dd39e53..f07459e4 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_layout_object.h
+++ b/third_party/blink/renderer/modules/accessibility/ax_layout_object.h
@@ -48,8 +48,8 @@
   ~AXLayoutObject() override;
   void Trace(Visitor*) const override;
 
-  // AXObject overrides:
-  LayoutObject* GetLayoutObject() const final;
+  // Public, overridden from AXObject.
+  LayoutObject* GetLayoutObject() const final { return layout_object_; }
   ScrollableArea* GetScrollableAreaIfScrollable() const final;
 
   // If this is an anonymous node, returns the node of its containing layout
@@ -71,6 +71,8 @@
   bool IsAXLayoutObject() const final;
 
   // Check object role or purpose.
+  bool IsEditable() const override;
+  bool IsRichlyEditable() const override;
   bool IsLineBreakingObject() const override;
   bool IsLinked() const override;
   bool IsOffScreen() const override;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_layout_object_test.cc b/third_party/blink/renderer/modules/accessibility/ax_layout_object_test.cc
index ef26ab3..d8e63df 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_layout_object_test.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_layout_object_test.cc
@@ -22,7 +22,7 @@
   }
 };
 
-TEST_F(AXLayoutObjectTest, IsNotEditableInsideListmarker) {
+TEST_F(AXLayoutObjectTest, IsEditableInsideListmarker) {
   SetBodyInnerHTML("<div contenteditable><li id=t>ab");
   // The layout tree is:
   //    LayoutNGBlockFlow {DIV} at (0,0) size 784x20
@@ -44,11 +44,11 @@
   const AXObject* ax_list_marker = GetAXObject(&list_marker);
   ASSERT_NE(nullptr, ax_list_marker);
   EXPECT_TRUE(IsA<AXLayoutObject>(ax_list_item));
-  EXPECT_FALSE(ax_list_marker->IsEditable());
-  EXPECT_FALSE(ax_list_marker->IsRichlyEditable());
+  EXPECT_TRUE(ax_list_marker->IsEditable());
+  EXPECT_TRUE(ax_list_marker->IsRichlyEditable());
 }
 
-TEST_F(AXLayoutObjectTest, IsNotEditableOutsideListmarker) {
+TEST_F(AXLayoutObjectTest, IsEditableOutsideListmarker) {
   SetBodyInnerHTML("<ol contenteditable><li id=t>ab");
   // THe layout tree is:
   //    LayoutNGBlockFlow {OL} at (0,0) size 784x20
@@ -70,8 +70,8 @@
   const AXObject* ax_list_marker = GetAXObject(&list_marker);
   ASSERT_NE(nullptr, ax_list_marker);
   EXPECT_TRUE(IsA<AXLayoutObject>(ax_list_item));
-  EXPECT_FALSE(ax_list_marker->IsEditable());
-  EXPECT_FALSE(ax_list_marker->IsRichlyEditable());
+  EXPECT_TRUE(ax_list_marker->IsEditable());
+  EXPECT_TRUE(ax_list_marker->IsRichlyEditable());
 }
 
 TEST_F(AXLayoutObjectTest, GetValueForControlWithTextTransform) {
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 1c16d9d..c274680 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -48,6 +48,7 @@
 #include "third_party/blink/renderer/core/dom/qualified_name.h"
 #include "third_party/blink/renderer/core/dom/shadow_root.h"
 #include "third_party/blink/renderer/core/dom/text.h"
+#include "third_party/blink/renderer/core/editing/editing_utilities.h"
 #include "third_party/blink/renderer/core/editing/markers/document_marker_controller.h"
 #include "third_party/blink/renderer/core/editing/position.h"
 #include "third_party/blink/renderer/core/events/event_util.h"
@@ -1045,6 +1046,50 @@
   }
 }
 
+bool AXNodeObject::IsMultiline() const {
+  Node* node = GetNode();
+  if (!node)
+    return false;
+
+  const ax::mojom::blink::Role role = RoleValue();
+  const bool is_edit_box = role == ax::mojom::blink::Role::kSearchBox ||
+                           role == ax::mojom::blink::Role::kTextField;
+  if (!IsEditable() && !is_edit_box)
+    return false;  // Doesn't support multiline.
+
+  // Supports aria-multiline, so check for attribute.
+  bool is_multiline = false;
+  if (HasAOMPropertyOrARIAAttribute(AOMBooleanProperty::kMultiline,
+                                    is_multiline)) {
+    return is_multiline;
+  }
+
+  // Default for <textarea> is true.
+  if (IsA<HTMLTextAreaElement>(*node))
+    return true;
+
+  // Default for other edit boxes is false, including for ARIA, says CORE-AAM.
+  if (is_edit_box)
+    return false;
+
+  // If root of contenteditable area and no ARIA role of textbox/searchbox used,
+  // default to multiline=true which is what the default behavior is.
+  return HasContentEditableAttributeSet();
+}
+
+// This only returns true if this is the element that actually has the
+// contentEditable attribute set, unlike node->hasEditableStyle() which will
+// also return true if an ancestor is editable.
+bool AXNodeObject::HasContentEditableAttributeSet() const {
+  const AtomicString& content_editable_value =
+      GetAttribute(html_names::kContenteditableAttr);
+  if (content_editable_value.IsNull())
+    return false;
+  // Both "true" (case-insensitive) and the empty string count as true.
+  return content_editable_value.IsEmpty() ||
+         EqualIgnoringASCIICase(content_editable_value, "true");
+}
+
 static Element* SiblingWithAriaRole(String role, Node* node) {
   Node* parent = LayoutTreeBuilderTraversal::Parent(*node);
   if (!parent)
@@ -1164,6 +1209,21 @@
   return GetElement()->MatchesDefaultPseudoClass();
 }
 
+bool AXNodeObject::ComputeIsEditableRoot() const {
+  Node* node = GetNode();
+  if (!node)
+    return false;
+  if (IsNativeTextField())
+    return true;
+  if (IsRootEditableElement(*node)) {
+    // Editable roots created by the user agent are handled by
+    // |IsNativeTextField| above.
+    ShadowRoot* root = node->ContainingShadowRoot();
+    return !root || !root->IsUserAgent();
+  }
+  return false;
+}
+
 bool AXNodeObject::IsFieldset() const {
   return IsA<HTMLFieldSetElement>(GetNode());
 }
@@ -1263,6 +1323,22 @@
   return RoleValue() == ax::mojom::blink::Role::kProgressIndicator;
 }
 
+bool AXNodeObject::IsRichlyEditable() const {
+  // This check is necessary to support the richlyEditable and editable states
+  // in canvas fallback, for contenteditable elements.
+  // TODO(accessiblity) Support on descendants of the fallback element that
+  // has contenteditable set.
+  return HasContentEditableAttributeSet();
+}
+
+bool AXNodeObject::IsEditable() const {
+  if (IsNativeTextField())
+    return true;
+
+  // Support editable states in canvas fallback content.
+  return AXNodeObject::IsRichlyEditable();
+}
+
 bool AXNodeObject::IsSlider() const {
   return RoleValue() == ax::mojom::blink::Role::kSlider;
 }
@@ -2671,9 +2747,8 @@
 
   // ARIA 1.1 default value of haspopup for combobox is "listbox".
   if (RoleValue() == ax::mojom::blink::Role::kComboBoxMenuButton ||
-      RoleValue() == ax::mojom::blink::Role::kTextFieldWithComboBox) {
+      RoleValue() == ax::mojom::blink::Role::kTextFieldWithComboBox)
     return ax::mojom::blink::HasPopup::kListbox;
-  }
 
   if (AXObjectCache().GetAutofillState(AXObjectID()) !=
       WebAXAutofillState::kNoSuggestions) {
@@ -2683,47 +2758,6 @@
   return AXObject::HasPopup();
 }
 
-bool AXNodeObject::IsEditableRoot() const {
-  const Node* node = GetNode();
-  if (IsDetached() || !node)
-    return false;
-#if DCHECK_IS_ON()  // Required in order to get Lifecycle().ToString()
-  DCHECK(GetDocument());
-  DCHECK_GE(GetDocument()->Lifecycle().GetState(),
-            DocumentLifecycle::kStyleClean)
-      << "Unclean document style at lifecycle state "
-      << GetDocument()->Lifecycle().ToString();
-#endif  // DCHECK_IS_ON()
-
-  // The DOM inside native text fields is an implementation detail that should
-  // not be exposed to platform accessibility APIs.
-  if (EnclosingTextControl(node))
-    return false;
-
-  if (IsRootEditableElement(*node))
-    return true;
-
-  // Catches the case where a contenteditable is inside another contenteditable.
-  // This is especially important when the two nested contenteditables have
-  // different attributes, e.g. "true" vs. "plaintext-only".
-  if (HasContentEditableAttributeSet())
-    return true;
-
-  return false;
-}
-
-bool AXNodeObject::HasContentEditableAttributeSet() const {
-  if (IsDetached() || !GetNode())
-    return false;
-
-  const auto* html_element = DynamicTo<HTMLElement>(GetNode());
-  if (!html_element)
-    return false;
-
-  String normalized_value = html_element->contentEditable();
-  return normalized_value == "true" || normalized_value == "plaintext-only";
-}
-
 // Returns the nearest block-level LayoutBlockFlow ancestor
 static LayoutBlockFlow* NonInlineBlockFlow(LayoutObject* object) {
   LayoutObject* current = object;
@@ -3596,13 +3630,13 @@
   AXObjectCache().GetAriaOwnedChildren(this, owned_children);
 
   DCHECK(owned_children.size() == 0 || AXRelationCache::IsValidOwner(this))
-      << "This object is not allowed to use aria-owns, but it is.\n"
+      << "This object is not allowed to use aria-owns, but is: "
       << ToString(true, true);
 
   // Always include owned children.
   for (const auto& owned_child : owned_children) {
     DCHECK(AXRelationCache::IsValidOwnedChild(owned_child))
-        << "This object is not allowed to be owned, but it is.\n"
+        << "This object is not allowed to be owned, but is: "
         << owned_child->ToString(true, true);
     AddChildAndCheckIncluded(owned_child, true);
   }
@@ -3619,7 +3653,7 @@
 
   if (!CanHaveChildren()) {
     NOTREACHED()
-        << "Should not reach AddChildren() if CanHaveChildren() is false.\n"
+        << "Should not reach AddChildren() if CanHaveChildren() is false "
         << ToString(true, true);
     return;
   }
@@ -3681,9 +3715,9 @@
 #if DCHECK_IS_ON()
   // All added children must be attached.
   for (const auto& child : children_) {
-    DCHECK(!child->IsDetached()) << "A brand new child was detached.\n"
-                                 << child->ToString(true, true)
-                                 << "\n ... of parent " << ToString(true, true);
+    DCHECK(!child->IsDetached())
+        << "A brand new child was detached: " << child->ToString(true, true)
+        << "\n ... of parent " << ToString(true, true);
   }
 #endif
 }
@@ -3727,14 +3761,14 @@
 
 #if DCHECK_IS_ON()
 void AXNodeObject::CheckValidChild(AXObject* child) {
-  DCHECK(!child->IsDetached()) << "Cannot add a detached child.\n"
-                               << child->ToString(true, true);
+  DCHECK(!child->IsDetached())
+      << "Cannot add a detached child: " << child->ToString(true, true);
 
   Node* child_node = child->GetNode();
 
   // An HTML image can only have area children.
   DCHECK(!IsA<HTMLImageElement>(GetNode()) || IsA<HTMLAreaElement>(child_node))
-      << "Image elements can only have area children, but this one has:\n"
+      << "Image elements can only have area children, had "
       << child->ToString(true, true);
 
   // <area> children should only be added via AddImageMapChildren(), as the
@@ -3891,11 +3925,13 @@
       break;
   }
 
-  // Allow native text fields to expose any children they might have, complying
+  // Allow plain text controls to expose any children they might have, complying
   // with browser-side expectations that editable controls have children
   // containing the actual text content.
-  if (blink::EnclosingTextControl(GetNode()))
+  if (blink::EnclosingTextControl(GetNode()) ||
+      GetAttribute(html_names::kContenteditableAttr) == "plaintext-only") {
     return true;
+  }
 
   switch (AriaRoleAttribute()) {
     case ax::mojom::blink::Role::kImage:
@@ -4004,19 +4040,6 @@
   return &GetNode()->GetDocument();
 }
 
-Node* AXNodeObject::GetNode() const {
-  if (IsDetached()) {
-    DCHECK(!node_);
-    return nullptr;
-  }
-
-  DCHECK(!GetLayoutObject() || GetLayoutObject()->GetNode() == node_)
-      << "If there is an associated layout object, its node should match the "
-         "associated node of this accessibility object.\n"
-      << ToString(true, true);
-  return node_;
-}
-
 // TODO(chrishall): consider merging this with AXObject::Language in followup.
 AtomicString AXNodeObject::Language() const {
   if (!GetNode())
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.h b/third_party/blink/renderer/modules/accessibility/ax_node_object.h
index d87d702..3a1e7ff 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_node_object.h
+++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.h
@@ -92,6 +92,10 @@
   bool IsAutofillAvailable() const override;
   bool IsControllingVideoElement() const;
   bool IsDefault() const final;
+  bool IsMultiline() const override;
+  bool IsEditable() const override;
+  bool ComputeIsEditableRoot() const override;
+  bool HasContentEditableAttributeSet() const override;
   bool IsFieldset() const final;
   bool IsHovered() const final;
   bool IsImageButton() const;
@@ -102,6 +106,7 @@
   bool IsNativeImage() const final;
   bool IsOffScreen() const override;
   bool IsProgressIndicator() const override;
+  bool IsRichlyEditable() const override;
   bool IsSlider() const override;
   bool IsSpinButton() const override;
   bool IsNativeSlider() const override;
@@ -182,8 +187,6 @@
       Vector<ax::mojom::blink::Dropeffect>& dropeffects) const override;
 
   ax::mojom::blink::HasPopup HasPopup() const override;
-  bool IsEditableRoot() const override;
-  bool HasContentEditableAttributeSet() const override;
 
   // Modify or take an action on an object.
   bool OnNativeSetValueAction(const String&) override;
@@ -234,7 +237,7 @@
   Element* ActionElement() const override;
   Element* AnchorElement() const override;
   Document* GetDocument() const override;
-  Node* GetNode() const final;
+  Node* GetNode() const override { return node_; }
 
   // DOM and layout tree access.
   AtomicString Language() const override;
@@ -281,6 +284,8 @@
   const AtomicString& GetInternalsAttribute(Element&,
                                             const QualifiedName&) const;
 
+  Member<Node> node_;
+
   bool IsNativeCheckboxInMixedState() const;
   String NativeTextAlternative(AXObjectSet& visited,
                                ax::mojom::blink::NameFrom&,
@@ -317,8 +322,6 @@
   static bool IsNameFromLabelElement(HTMLElement* control);
   static bool IsRedundantLabel(HTMLLabelElement* label);
 
-  Member<Node> node_;
-
   DISALLOW_COPY_AND_ASSIGN(AXNodeObject);
 };
 
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.cc b/third_party/blink/renderer/modules/accessibility/ax_object.cc
index 2c00ea36..7bf673d 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_object.cc
@@ -42,7 +42,6 @@
 #include "third_party/blink/renderer/core/dom/events/simulated_click_options.h"
 #include "third_party/blink/renderer/core/dom/focus_params.h"
 #include "third_party/blink/renderer/core/dom/node_computed_style.h"
-#include "third_party/blink/renderer/core/editing/editing_utilities.h"
 #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/settings.h"
@@ -50,10 +49,8 @@
 #include "third_party/blink/renderer/core/html/custom/element_internals.h"
 #include "third_party/blink/renderer/core/html/forms/html_input_element.h"
 #include "third_party/blink/renderer/core/html/forms/html_select_element.h"
-#include "third_party/blink/renderer/core/html/forms/html_text_area_element.h"
 #include "third_party/blink/renderer/core/html/forms/text_control_element.h"
 #include "third_party/blink/renderer/core/html/html_dialog_element.h"
-#include "third_party/blink/renderer/core/html/html_element.h"
 #include "third_party/blink/renderer/core/html/html_frame_owner_element.h"
 #include "third_party/blink/renderer/core/html/html_head_element.h"
 #include "third_party/blink/renderer/core/html/html_script_element.h"
@@ -472,6 +469,7 @@
       cached_is_ignored_but_included_in_tree_(false),
       cached_is_inert_or_aria_hidden_(false),
       cached_is_descendant_of_disabled_node_(false),
+      cached_is_editable_root_(false),
       cached_live_region_root_(nullptr),
       cached_aria_column_index_(0),
       cached_aria_row_index_(0),
@@ -1915,7 +1913,7 @@
                                DocumentLifecycle::kAfterPerformLayout)
       << "Unclean document at lifecycle "
       << GetDocument()->Lifecycle().ToString();
-#endif  // DCHECK_IS_ON()
+#endif
 
   // TODO(accessibility) Every AXObject must have a parent except the root.
   // Sometimes the parent is detached and a new parent isn't yet reattached.
@@ -1979,6 +1977,7 @@
 
   cached_is_ignored_ = is_ignored;
   cached_is_ignored_but_included_in_tree_ = is_ignored_but_included_in_tree;
+  cached_is_editable_root_ = ComputeIsEditableRoot();
   // Compute live region root, which can be from any ARIA live value, including
   // "off", or from an automatic ARIA live value, e.g. from role="status".
   // TODO(dmazzoni): remove this const_cast.
@@ -3485,71 +3484,9 @@
   return role;
 }
 
-ax::mojom::blink::HasPopup AXObject::HasPopup() const {
-  return ax::mojom::blink::HasPopup::kFalse;
-}
-
-bool AXObject::IsEditable() const {
-  const Node* node = GetNode();
-  if (IsDetached() || !node)
-    return false;
-#if DCHECK_IS_ON()  // Required in order to get Lifecycle().ToString()
-  DCHECK(GetDocument());
-  DCHECK_GE(GetDocument()->Lifecycle().GetState(),
-            DocumentLifecycle::kStyleClean)
-      << "Unclean document style at lifecycle state "
-      << GetDocument()->Lifecycle().ToString();
-#endif  // DCHECK_IS_ON()
-
-  if (HasEditableStyle(*node))
-    return true;
-
-  // For the purposes of accessibility, atomic text fields  i.e. input and
-  // textarea are editable because the user can potentially enter text in them.
-  if (IsNativeTextField())
-    return true;
-
-  return false;
-}
-
 bool AXObject::IsEditableRoot() const {
-  return false;
-}
-
-bool AXObject::HasContentEditableAttributeSet() const {
-  return false;
-}
-
-bool AXObject::IsMultiline() const {
-  if (IsDetached() || !GetNode() || !IsTextField())
-    return false;
-
-  bool is_multiline = false;
-  if (HasAOMPropertyOrARIAAttribute(AOMBooleanProperty::kMultiline,
-                                    is_multiline)) {
-    return is_multiline;
-  }
-
-  return IsA<HTMLTextAreaElement>(*GetNode()) ||
-         HasContentEditableAttributeSet();
-}
-
-bool AXObject::IsRichlyEditable() const {
-  const Node* node = GetNode();
-  if (IsDetached() || !node)
-    return false;
-#if DCHECK_IS_ON()  // Required in order to get Lifecycle().ToString()
-  DCHECK(GetDocument());
-  DCHECK_GE(GetDocument()->Lifecycle().GetState(),
-            DocumentLifecycle::kStyleClean)
-      << "Unclean document style at lifecycle state "
-      << GetDocument()->Lifecycle().ToString();
-#endif  // DCHECK_IS_ON()
-
-  if (HasRichlyEditableStyle(*node))
-    return true;
-
-  return false;
+  UpdateCachedAttributeValuesIfNeeded();
+  return cached_is_editable_root_;
 }
 
 AXObject* AXObject::LiveRegionRoot() const {
@@ -4160,14 +4097,6 @@
   }
 }
 
-Node* AXObject::GetNode() const {
-  return nullptr;
-}
-
-LayoutObject* AXObject::GetLayoutObject() const {
-  return nullptr;
-}
-
 Element* AXObject::GetElement() const {
   return DynamicTo<Element>(GetNode());
 }
@@ -5025,9 +4954,9 @@
   const AtomicString& aria_owns =
       element->FastGetAttribute(html_names::kAriaOwnsAttr);
 
-  // TODO(accessibility): do we need to check !AriaOwnsElements.empty() ? Is
-  // that fundamentally different from HasExplicitlySetAttrAssociatedElements()?
-  // And is an element even necessary in the case of virtual nodes?
+  // TODO: do we need to check !AriaOwnsElements.empty() ? Is that fundamentally
+  // different from HasExplicitlySetAttrAssociatedElements()? And is an element
+  // even necessary in the case of virtual nodes?
   return !aria_owns.IsEmpty() ||
          element->HasExplicitlySetAttrAssociatedElements(
              html_names::kAriaOwnsAttr);
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.h b/third_party/blink/renderer/modules/accessibility/ax_object.h
index 51c1ee51..f44e28a4 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object.h
+++ b/third_party/blink/renderer/modules/accessibility/ax_object.h
@@ -464,7 +464,7 @@
 
   // Returns true if this object is not an <input> or a <textarea>, and is
   // either a contenteditable, or has role=textbox role=searchbox or
-  // (on certain platforms) role=combobox.
+  // role=combobox.
   bool IsNonNativeTextField() const;
 
   // Returns true if this object is a text field that is used for entering
@@ -822,39 +822,15 @@
   virtual void AriaOwnsElements(AXObjectVector& owns) const {}
   virtual void AriaDescribedbyElements(AXObjectVector&) const {}
   virtual AXObject* ErrorMessage() const { return nullptr; }
-
-  // Determines whether this object has an associated popup menu, list, or grid,
-  // such as in the case of an ARIA combobox or when the browser offers an
-  // autocomplete suggestion.
-  virtual ax::mojom::blink::HasPopup HasPopup() const;
-
-  // Returns true if this object is within or at the root of an editable region,
-  // such as a contenteditable. Also, returns true if this object is an atomic
-  // text field, i.e. an input or a textarea. Note that individual subtrees
-  // within an editable region could be made non-editable via e.g.
-  // contenteditable="false".
-  bool IsEditable() const;
-
-  // Returns true if this object is at the root of an editable region, such as a
-  // contenteditable. Does not return true if this object is an atomic text
-  // field, i.e. an input or a textarea.
-  //
-  // https://w3c.github.io/editing/execCommand.html#editing-host
-  virtual bool IsEditableRoot() const;
-
-  // Returns true if this object has contenteditable="true" or
-  // contenteditable="plaintext-only".
-  virtual bool HasContentEditableAttributeSet() const;
-
-  // Returns true if the user can enter multiple lines of text inside this
-  // editable region. By default, textareas and content editables can accept
-  // multiple lines of text.
-  bool IsMultiline() const;
-
-  // Same as `IsEditable()` but returns whether the region accepts rich text
-  // as well.
-  bool IsRichlyEditable() const;
-
+  virtual ax::mojom::blink::HasPopup HasPopup() const {
+    return ax::mojom::blink::HasPopup::kFalse;
+  }
+  virtual bool IsEditable() const { return false; }
+  bool IsEditableRoot() const;
+  virtual bool ComputeIsEditableRoot() const { return false; }
+  virtual bool HasContentEditableAttributeSet() const { return false; }
+  virtual bool IsMultiline() const { return false; }
+  virtual bool IsRichlyEditable() const { return false; }
   bool AriaCheckedIsPresent() const;
   bool AriaPressedIsPresent() const;
   bool SupportsARIAExpanded() const;
@@ -1156,25 +1132,10 @@
   virtual double EstimatedLoadingProgress() const { return 0; }
   virtual AXObject* RootScroller() const;
 
-  //
   // DOM and layout tree access.
-  //
-
-  // Returns the associated DOM node or, if an associated layout object is
-  // present, the node of the associated layout object.
-  //
-  // If this object is associated with generated content, or a list marker,
-  // returns a pseudoelement. It does not return the node that generated the
-  // content or the list marker.
-  virtual Node* GetNode() const;
-
-  // Returns the associated layout object if any.
-  virtual LayoutObject* GetLayoutObject() const;
-
-  // Returns the same as `AXObject::GetNode()` if the node is an Element,
-  // otherwise returns nullptr.
-  Element* GetElement() const;
-
+  virtual Node* GetNode() const { return nullptr; }
+  Element* GetElement() const;  // Same as GetNode, if it's an Element.
+  virtual LayoutObject* GetLayoutObject() const { return nullptr; }
   virtual Document* GetDocument() const = 0;
   LocalFrameView* DocumentFrameView() const;
   virtual Element* AnchorElement() const { return nullptr; }
@@ -1435,6 +1396,7 @@
   mutable bool cached_is_inert_or_aria_hidden_ : 1;
   mutable bool cached_is_hidden_via_style : 1;
   mutable bool cached_is_descendant_of_disabled_node_ : 1;
+  mutable bool cached_is_editable_root_ : 1;
   mutable Member<AXObject> cached_live_region_root_;
   mutable int cached_aria_column_index_;
   mutable int cached_aria_row_index_;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object_test.cc b/third_party/blink/renderer/modules/accessibility/ax_object_test.cc
index 191831a1..5e005b2 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object_test.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_object_test.cc
@@ -42,206 +42,6 @@
   EXPECT_FALSE(button->IsAncestorOf(*root));
 }
 
-TEST_F(AccessibilityTest, IsEditableInTextField) {
-  SetBodyInnerHTML(R"HTML(
-      <input type="text" id="input" value="Test">
-      <textarea id="textarea">
-        Test
-      </textarea>)HTML");
-
-  const AXObject* root = GetAXRootObject();
-  ASSERT_NE(nullptr, root);
-  const AXObject* input = GetAXObjectByElementId("input");
-  ASSERT_NE(nullptr, input);
-  const AXObject* input_text =
-      input->FirstChildIncludingIgnored()->UnignoredChildAt(0);
-  ASSERT_NE(nullptr, input_text);
-  ASSERT_EQ(ax::mojom::blink::Role::kStaticText, input_text->RoleValue());
-  const AXObject* textarea = GetAXObjectByElementId("textarea");
-  ASSERT_NE(nullptr, textarea);
-  const AXObject* textarea_text =
-      textarea->FirstChildIncludingIgnored()->UnignoredChildAt(0);
-  ASSERT_NE(nullptr, textarea_text);
-  ASSERT_EQ(ax::mojom::blink::Role::kStaticText, textarea_text->RoleValue());
-
-  EXPECT_FALSE(root->IsEditable());
-  EXPECT_TRUE(input->IsEditable());
-  EXPECT_TRUE(input_text->IsEditable());
-  EXPECT_TRUE(textarea->IsEditable());
-  EXPECT_TRUE(textarea_text->IsEditable());
-
-  EXPECT_FALSE(root->IsEditableRoot());
-  EXPECT_FALSE(input->IsEditableRoot());
-  EXPECT_FALSE(input_text->IsEditableRoot());
-  EXPECT_FALSE(textarea->IsEditableRoot());
-  EXPECT_FALSE(textarea_text->IsEditableRoot());
-
-  EXPECT_FALSE(root->HasContentEditableAttributeSet());
-  EXPECT_FALSE(input->HasContentEditableAttributeSet());
-  EXPECT_FALSE(input_text->HasContentEditableAttributeSet());
-  EXPECT_FALSE(textarea->HasContentEditableAttributeSet());
-  EXPECT_FALSE(textarea_text->HasContentEditableAttributeSet());
-
-  EXPECT_FALSE(root->IsMultiline());
-  EXPECT_FALSE(input->IsMultiline());
-  EXPECT_FALSE(input_text->IsMultiline());
-  EXPECT_TRUE(textarea->IsMultiline());
-  EXPECT_FALSE(textarea_text->IsMultiline());
-
-  EXPECT_FALSE(root->IsRichlyEditable());
-  EXPECT_FALSE(input->IsRichlyEditable());
-  EXPECT_FALSE(input_text->IsRichlyEditable());
-  EXPECT_FALSE(textarea->IsRichlyEditable());
-  EXPECT_FALSE(textarea_text->IsRichlyEditable());
-}
-
-TEST_F(AccessibilityTest, IsEditableInContentEditable) {
-  // On purpose, also add the textbox role to ensure that it won't affect the
-  // contenteditable state.
-  SetBodyInnerHTML(R"HTML(
-      <div role="textbox" contenteditable="true" id="outerContenteditable">
-        Test
-        <div contenteditable="plaintext-only" id="innerContenteditable">
-          Test
-        </div>
-      </div>)HTML");
-
-  const AXObject* root = GetAXRootObject();
-  ASSERT_NE(nullptr, root);
-  const AXObject* outer_contenteditable =
-      GetAXObjectByElementId("outerContenteditable");
-  ASSERT_NE(nullptr, outer_contenteditable);
-  const AXObject* outer_contenteditable_text =
-      outer_contenteditable->UnignoredChildAt(0);
-  ASSERT_NE(nullptr, outer_contenteditable_text);
-  ASSERT_EQ(ax::mojom::blink::Role::kStaticText,
-            outer_contenteditable_text->RoleValue());
-  const AXObject* inner_contenteditable =
-      GetAXObjectByElementId("innerContenteditable");
-  ASSERT_NE(nullptr, inner_contenteditable);
-  const AXObject* inner_contenteditable_text =
-      inner_contenteditable->UnignoredChildAt(0);
-  ASSERT_NE(nullptr, inner_contenteditable_text);
-  ASSERT_EQ(ax::mojom::blink::Role::kStaticText,
-            inner_contenteditable_text->RoleValue());
-
-  EXPECT_FALSE(root->IsEditable());
-  EXPECT_TRUE(outer_contenteditable->IsEditable());
-  EXPECT_TRUE(outer_contenteditable_text->IsEditable());
-  EXPECT_TRUE(inner_contenteditable->IsEditable());
-  EXPECT_TRUE(inner_contenteditable_text->IsEditable());
-
-  EXPECT_FALSE(root->IsEditableRoot());
-  EXPECT_TRUE(outer_contenteditable->IsEditableRoot());
-  EXPECT_FALSE(outer_contenteditable_text->IsEditableRoot());
-  EXPECT_TRUE(inner_contenteditable->IsEditableRoot());
-  EXPECT_FALSE(inner_contenteditable_text->IsEditableRoot());
-
-  EXPECT_FALSE(root->HasContentEditableAttributeSet());
-  EXPECT_TRUE(outer_contenteditable->HasContentEditableAttributeSet());
-  EXPECT_FALSE(outer_contenteditable_text->HasContentEditableAttributeSet());
-  EXPECT_TRUE(inner_contenteditable->HasContentEditableAttributeSet());
-  EXPECT_FALSE(inner_contenteditable_text->HasContentEditableAttributeSet());
-
-  EXPECT_FALSE(root->IsMultiline());
-  EXPECT_TRUE(outer_contenteditable->IsMultiline());
-  EXPECT_FALSE(outer_contenteditable_text->IsMultiline());
-  EXPECT_TRUE(inner_contenteditable->IsMultiline());
-  EXPECT_FALSE(inner_contenteditable_text->IsMultiline());
-
-  EXPECT_FALSE(root->IsRichlyEditable());
-  EXPECT_TRUE(outer_contenteditable->IsRichlyEditable());
-  EXPECT_TRUE(outer_contenteditable_text->IsRichlyEditable());
-  // contenteditable="plaintext-only".
-  EXPECT_FALSE(inner_contenteditable->IsRichlyEditable());
-  EXPECT_FALSE(inner_contenteditable_text->IsRichlyEditable());
-}
-
-TEST_F(AccessibilityTest, IsEditableInCanvasFallback) {
-  SetBodyInnerHTML(R"HTML(
-      <canvas id="canvas" width="300" height="300">
-        <input id="input" value="Test">
-        <div contenteditable="true" id="outerContenteditable">
-          Test
-          <div contenteditable="plaintext-only" id="innerContenteditable">
-            Test
-          </div>
-        </div>
-      </canvas>)HTML");
-
-  const AXObject* root = GetAXRootObject();
-  ASSERT_NE(nullptr, root);
-  const AXObject* canvas = GetAXObjectByElementId("canvas");
-  ASSERT_NE(nullptr, canvas);
-  const AXObject* input = GetAXObjectByElementId("input");
-  ASSERT_NE(nullptr, input);
-  const AXObject* input_text =
-      input->FirstChildIncludingIgnored()->UnignoredChildAt(0);
-  ASSERT_NE(nullptr, input_text);
-  ASSERT_EQ(ax::mojom::blink::Role::kStaticText, input_text->RoleValue());
-  const AXObject* outer_contenteditable =
-      GetAXObjectByElementId("outerContenteditable");
-  ASSERT_NE(nullptr, outer_contenteditable);
-  const AXObject* outer_contenteditable_text =
-      outer_contenteditable->UnignoredChildAt(0);
-  ASSERT_NE(nullptr, outer_contenteditable_text);
-  ASSERT_EQ(ax::mojom::blink::Role::kStaticText,
-            outer_contenteditable_text->RoleValue());
-  const AXObject* inner_contenteditable =
-      GetAXObjectByElementId("innerContenteditable");
-  ASSERT_NE(nullptr, inner_contenteditable);
-  const AXObject* inner_contenteditable_text =
-      inner_contenteditable->UnignoredChildAt(0);
-  ASSERT_NE(nullptr, inner_contenteditable_text);
-  ASSERT_EQ(ax::mojom::blink::Role::kStaticText,
-            inner_contenteditable_text->RoleValue());
-
-  EXPECT_FALSE(root->IsEditable());
-  EXPECT_FALSE(canvas->IsEditable());
-  EXPECT_TRUE(input->IsEditable());
-  EXPECT_TRUE(input_text->IsEditable());
-  EXPECT_TRUE(outer_contenteditable->IsEditable());
-  EXPECT_TRUE(outer_contenteditable_text->IsEditable());
-  EXPECT_TRUE(inner_contenteditable->IsEditable());
-  EXPECT_TRUE(inner_contenteditable_text->IsEditable());
-
-  EXPECT_FALSE(root->IsEditableRoot());
-  EXPECT_FALSE(canvas->IsEditableRoot());
-  EXPECT_FALSE(input->IsEditableRoot());
-  EXPECT_FALSE(input_text->IsEditableRoot());
-  EXPECT_TRUE(outer_contenteditable->IsEditableRoot());
-  EXPECT_FALSE(outer_contenteditable_text->IsEditableRoot());
-  EXPECT_TRUE(inner_contenteditable->IsEditableRoot());
-  EXPECT_FALSE(inner_contenteditable_text->IsEditableRoot());
-
-  EXPECT_FALSE(root->HasContentEditableAttributeSet());
-  EXPECT_FALSE(canvas->HasContentEditableAttributeSet());
-  EXPECT_FALSE(input->HasContentEditableAttributeSet());
-  EXPECT_FALSE(input_text->HasContentEditableAttributeSet());
-  EXPECT_TRUE(outer_contenteditable->HasContentEditableAttributeSet());
-  EXPECT_FALSE(outer_contenteditable_text->HasContentEditableAttributeSet());
-  EXPECT_TRUE(inner_contenteditable->HasContentEditableAttributeSet());
-  EXPECT_FALSE(inner_contenteditable_text->HasContentEditableAttributeSet());
-
-  EXPECT_FALSE(root->IsMultiline());
-  EXPECT_FALSE(canvas->IsMultiline());
-  EXPECT_FALSE(input->IsMultiline());
-  EXPECT_FALSE(input_text->IsMultiline());
-  EXPECT_TRUE(outer_contenteditable->IsMultiline());
-  EXPECT_FALSE(outer_contenteditable_text->IsMultiline());
-  EXPECT_TRUE(inner_contenteditable->IsMultiline());
-  EXPECT_FALSE(inner_contenteditable_text->IsMultiline());
-
-  EXPECT_FALSE(root->IsRichlyEditable());
-  EXPECT_FALSE(canvas->IsRichlyEditable());
-  EXPECT_FALSE(input->IsRichlyEditable());
-  EXPECT_FALSE(input_text->IsRichlyEditable());
-  EXPECT_TRUE(outer_contenteditable->IsRichlyEditable());
-  EXPECT_TRUE(outer_contenteditable_text->IsRichlyEditable());
-  EXPECT_FALSE(inner_contenteditable->IsRichlyEditable());
-  EXPECT_FALSE(inner_contenteditable_text->IsRichlyEditable());
-}
-
 TEST_F(AccessibilityTest, DetachedIsIgnored) {
   SetBodyInnerHTML(R"HTML(<button id="button">button</button>)HTML");
 
diff --git a/third_party/blink/renderer/modules/accessibility/ax_relation_cache.cc b/third_party/blink/renderer/modules/accessibility/ax_relation_cache.cc
index cacc965..8e24e72 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_relation_cache.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_relation_cache.cc
@@ -121,10 +121,10 @@
   if (!owner->CanHaveChildren())
     return false;
 
-  // An aria-owns is disallowed on editable roots and atomic text fields, such
-  // as <input>, <textarea> and content editables, otherwise the result would be
-  // unworkable and totally unexpected on the browser side.
-  if (owner->IsNativeTextField() || owner->IsEditableRoot())
+  // An aria-owns is disallowed on editable roots, such as <input>, <textarea>
+  // and content editables, otherwise the result would be unworkable and totally
+  // unexpected on the browser side.
+  if (owner->IsEditableRoot())
     return false;
 
   // Images can only use <img usemap> to "own" <area> children.
diff --git a/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc b/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc
index 833759830..102503a 100644
--- a/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc
+++ b/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc
@@ -7,12 +7,15 @@
 
 #include <utility>
 
+#include "base/optional.h"
+#include "media/base/video_codecs.h"
 #include "media/base/video_frame.h"
 #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h"
 #include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h"
 #include "third_party/blink/renderer/platform/scheduler/public/thread.h"
 #include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
 #include "third_party/blink/renderer/platform/wtf/functional.h"
+#include "third_party/blink/renderer/platform/wtf/hash_map.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 #include "third_party/openh264/src/codec/api/svc/codec_app_def.h"
 #include "third_party/openh264/src/codec/api/svc/codec_def.h"
@@ -22,6 +25,54 @@
 
 namespace blink {
 
+namespace {
+
+base::Optional<EProfileIdc> ToOpenH264Profile(
+    media::VideoCodecProfile profile) {
+  static const HashMap<media::VideoCodecProfile, EProfileIdc>
+      kProfileToEProfileIdc({
+          {media::H264PROFILE_BASELINE, PRO_BASELINE},
+          {media::H264PROFILE_MAIN, PRO_MAIN},
+          {media::H264PROFILE_EXTENDED, PRO_EXTENDED},
+          {media::H264PROFILE_HIGH, PRO_HIGH},
+      });
+
+  const auto& it = kProfileToEProfileIdc.find(profile);
+  if (it != kProfileToEProfileIdc.end()) {
+    return it->value;
+  }
+  return base::nullopt;
+}
+
+base::Optional<ELevelIdc> ToOpenH264Level(uint8_t level) {
+  static const HashMap<uint8_t, ELevelIdc> kLevelToELevelIdc({
+      {10, LEVEL_1_0},
+      {9, LEVEL_1_B},
+      {11, LEVEL_1_1},
+      {12, LEVEL_1_2},
+      {13, LEVEL_1_3},
+      {20, LEVEL_2_0},
+      {21, LEVEL_2_1},
+      {22, LEVEL_2_2},
+      {30, LEVEL_3_0},
+      {31, LEVEL_3_1},
+      {32, LEVEL_3_2},
+      {40, LEVEL_4_0},
+      {41, LEVEL_4_1},
+      {42, LEVEL_4_2},
+      {50, LEVEL_5_0},
+      {51, LEVEL_5_1},
+      {52, LEVEL_5_2},
+  });
+
+  const auto& it = kLevelToELevelIdc.find(level);
+  if (it != kLevelToELevelIdc.end())
+    return it->value;
+  return base::nullopt;
+}
+
+}  // namespace
+
 void H264Encoder::ISVCEncoderDeleter::operator()(ISVCEncoder* codec) {
   if (!codec)
     return;
@@ -39,10 +90,13 @@
 
 H264Encoder::H264Encoder(
     const VideoTrackRecorder::OnEncodedVideoCB& on_encoded_video_cb,
+    VideoTrackRecorder::CodecProfile codec_profile,
     int32_t bits_per_second,
     scoped_refptr<base::SequencedTaskRunner> task_runner)
-    : Encoder(on_encoded_video_cb, bits_per_second, std::move(task_runner)) {
+    : Encoder(on_encoded_video_cb, bits_per_second, std::move(task_runner)),
+      codec_profile_(codec_profile) {
   DCHECK(encoding_thread_);
+  DCHECK_EQ(codec_profile_.codec_id, VideoTrackRecorder::CodecId::H264);
 }
 
 H264Encoder::~H264Encoder() {
@@ -176,6 +230,19 @@
   init_params.sSpatialLayers[0].iVideoHeight = init_params.iPicHeight;
   init_params.sSpatialLayers[0].iSpatialBitrate = init_params.iTargetBitrate;
 
+  // Input profile may be optional, fills PRO_UNKNOWN for auto-detection.
+  init_params.sSpatialLayers[0].uiProfileIdc =
+      codec_profile_.profile
+          ? ToOpenH264Profile(*codec_profile_.profile).value_or(PRO_UNKNOWN)
+          : PRO_UNKNOWN;
+  // Input level may be optional, fills LEVEL_UNKNOWN for auto-detection.
+  init_params.sSpatialLayers[0].uiLevelIdc =
+      codec_profile_.level
+          ? ToOpenH264Level(*codec_profile_.level).value_or(LEVEL_UNKNOWN)
+          : LEVEL_UNKNOWN;
+  DCHECK_EQ(init_params.sSpatialLayers[0].uiProfileIdc == PRO_UNKNOWN,
+            init_params.sSpatialLayers[0].uiLevelIdc == LEVEL_UNKNOWN);
+
   // When uiSliceMode = SM_FIXEDSLCNUM_SLICE, uiSliceNum = 0 means auto design
   // it with cpu core number.
   init_params.sSpatialLayers[0].sSliceArgument.uiSliceNum = 0;
@@ -191,4 +258,17 @@
   openh264_encoder_->SetOption(ENCODER_OPTION_DATAFORMAT, &pixel_format);
 }
 
+SEncParamExt H264Encoder::GetEncoderOptionForTesting() {
+  DCHECK(openh264_encoder_)
+      << "Call GetOption on uninitialized OpenH264 encoder";
+
+  SEncParamExt params;
+  if (openh264_encoder_->GetOption(ENCODER_OPTION_SVC_ENCODE_PARAM_EXT,
+                                   &params) != 0) {
+    NOTREACHED() << "Failed to get ENCODER_OPTION_SVC_ENCODE_PARAM_EXT";
+  }
+
+  return params;
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h b/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h
index fdaac9f1..9761714c 100644
--- a/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h
+++ b/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h
@@ -19,7 +19,7 @@
 namespace blink {
 
 // Class encapsulating all openh264 interactions for H264 encoding.
-class H264Encoder final : public VideoTrackRecorder::Encoder {
+class MODULES_EXPORT H264Encoder final : public VideoTrackRecorder::Encoder {
  public:
   struct ISVCEncoderDeleter {
     void operator()(ISVCEncoder* codec);
@@ -30,10 +30,13 @@
                               ScopedISVCEncoderPtr encoder);
 
   H264Encoder(const VideoTrackRecorder::OnEncodedVideoCB& on_encoded_video_cb,
+              VideoTrackRecorder::CodecProfile codec_profile,
               int32_t bits_per_second,
               scoped_refptr<base::SequencedTaskRunner> task_runner);
 
  private:
+  friend class H264EncoderFixture;
+
   // VideoTrackRecorder::Encoder implementation.
   ~H264Encoder() override;
   void EncodeOnEncodingTaskRunner(scoped_refptr<media::VideoFrame> frame,
@@ -41,6 +44,11 @@
 
   void ConfigureEncoderOnEncodingTaskRunner(const gfx::Size& size);
 
+  SEncParamExt GetEncoderOptionForTesting();
+
+  // TODO(inker): Move this field into VideoTrackRecorder::Encoder.
+  const VideoTrackRecorder::CodecProfile codec_profile_;
+
   // |openh264_encoder_| is a special scoped pointer to guarantee proper
   // destruction, also when reconfiguring due to parameters change. Only used on
   // VideoTrackRecorder::Encoder::encoding_thread_.
diff --git a/third_party/blink/renderer/modules/mediarecorder/h264_encoder_unittest.cc b/third_party/blink/renderer/modules/mediarecorder/h264_encoder_unittest.cc
new file mode 100644
index 0000000..1552bc3
--- /dev/null
+++ b/third_party/blink/renderer/modules/mediarecorder/h264_encoder_unittest.cc
@@ -0,0 +1,174 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/modules/mediarecorder/h264_encoder.h"
+
+#include <memory>
+
+#include "base/synchronization/waitable_event.h"
+#include "media/base/video_codecs.h"
+#include "media/base/video_frame.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/blink/renderer/modules/mediarecorder/video_track_recorder.h"
+#include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h"
+#include "third_party/blink/renderer/platform/scheduler/public/thread.h"
+#include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
+#include "third_party/blink/renderer/platform/wtf/functional.h"
+
+namespace blink {
+namespace {
+
+struct TestParam {
+  base::Optional<media::VideoCodecProfile> profile;
+  base::Optional<uint8_t> level;
+  int32_t bitrate;
+};
+
+const int kFrameWidth = 64;
+const int kFrameHeight = 64;
+
+const TestParam kH264EncoderParameterTestParam[] = {
+    {media::VideoCodecProfile::H264PROFILE_BASELINE, 50,
+     kFrameWidth* kFrameHeight * 2},
+    {media::VideoCodecProfile::H264PROFILE_MAIN, 51,
+     kFrameWidth* kFrameHeight * 4},
+    {media::VideoCodecProfile::H264PROFILE_HIGH, 52,
+     kFrameWidth* kFrameHeight * 8},
+    // Test optional input.
+    {base::nullopt, base::nullopt, kFrameWidth* kFrameHeight * 8},
+};
+
+}  // namespace
+
+class H264EncoderFixture : public ::testing::Test {
+ public:
+  H264EncoderFixture(base::Optional<media::VideoCodecProfile> profile,
+                     base::Optional<uint8_t> level,
+                     int32_t bitrate)
+      : profile_(profile),
+        level_(level),
+        bitrate_(bitrate),
+        testing_render_thread_([]() {
+          auto* th = new base::Thread("TestingRenderThread");
+          th->Start();
+          return th;
+        }()),
+        encoder_(base::MakeRefCounted<H264Encoder>(
+            ConvertToBaseRepeatingCallback(
+                CrossThreadBindRepeating(&H264EncoderFixture::OnEncodedVideo,
+                                         CrossThreadUnretained(this))),
+            VideoTrackRecorder::CodecProfile(VideoTrackRecorder::CodecId::H264,
+                                             profile_,
+                                             level_),
+            bitrate_,
+            testing_render_thread_->task_runner())) {}
+
+ protected:
+  void EncodeFrame() {
+    frame_encoded_.Reset();
+    auto video_frame =
+        media::VideoFrame::CreateBlackFrame({kFrameWidth, kFrameHeight});
+    PostCrossThreadTask(
+        *testing_render_thread_->task_runner().get(), FROM_HERE,
+        CrossThreadBindOnce(&VideoTrackRecorder::Encoder::StartFrameEncode,
+                            CrossThreadUnretained(encoder_.get()), video_frame,
+                            std::vector<scoped_refptr<media::VideoFrame>>(),
+                            base::TimeTicks::Now()));
+    frame_encoded_.Wait();
+  }
+
+  std::pair<media::VideoCodecProfile, uint8_t> GetProfileLevelForTesting() {
+    static const HashMap<EProfileIdc, media::VideoCodecProfile>
+        kEProfileIdcToProfile({
+            {PRO_BASELINE, media::H264PROFILE_BASELINE},
+            {PRO_MAIN, media::H264PROFILE_MAIN},
+            {PRO_EXTENDED, media::H264PROFILE_EXTENDED},
+            {PRO_HIGH, media::H264PROFILE_HIGH},
+        });
+
+    static const HashMap<ELevelIdc, uint8_t> kELevelIdcToLevel({
+        {LEVEL_1_0, 10},
+        {LEVEL_1_B, 9},
+        {LEVEL_1_1, 11},
+        {LEVEL_1_2, 12},
+        {LEVEL_1_3, 13},
+        {LEVEL_2_0, 20},
+        {LEVEL_2_1, 21},
+        {LEVEL_2_2, 22},
+        {LEVEL_3_0, 30},
+        {LEVEL_3_1, 31},
+        {LEVEL_3_2, 32},
+        {LEVEL_4_0, 40},
+        {LEVEL_4_1, 41},
+        {LEVEL_4_2, 42},
+        {LEVEL_5_0, 50},
+        {LEVEL_5_1, 51},
+        {LEVEL_5_2, 52},
+    });
+
+    SEncParamExt params = encoder_->GetEncoderOptionForTesting();
+
+    const auto eProfileIdc = params.sSpatialLayers[0].uiProfileIdc;
+    if (!kEProfileIdcToProfile.Contains(eProfileIdc)) {
+      NOTREACHED() << "Failed to convert unknown EProfileIdc: " << eProfileIdc;
+    }
+
+    const auto eLevelIdc = params.sSpatialLayers[0].uiLevelIdc;
+    if (!kELevelIdcToLevel.Contains(eLevelIdc)) {
+      NOTREACHED() << "Failed to convert unknown ELevelIdc: " << eLevelIdc;
+    }
+    return {kEProfileIdcToProfile.find(eProfileIdc)->value,
+            kELevelIdcToLevel.find(eLevelIdc)->value};
+  }
+
+  void OnEncodedVideo(const media::WebmMuxer::VideoParameters& params,
+                      std::string encoded_data,
+                      std::string encoded_alpha,
+                      base::TimeTicks capture_timestamp,
+                      bool is_key_frame) {
+    frame_encoded_.Signal();
+  }
+
+ private:
+  const base::Optional<media::VideoCodecProfile> profile_;
+  const base::Optional<uint8_t> level_;
+  const int32_t bitrate_;
+  // Serves as IO thread pushing/retrieving frames.
+  std::unique_ptr<base::Thread> testing_render_thread_;
+  const scoped_refptr<H264Encoder> encoder_;
+  base::WaitableEvent frame_encoded_;
+
+  DISALLOW_COPY_AND_ASSIGN(H264EncoderFixture);
+};
+
+class H264EncoderParameterTest
+    : public H264EncoderFixture,
+      public ::testing::WithParamInterface<TestParam> {
+ public:
+  H264EncoderParameterTest()
+      : H264EncoderFixture(GetParam().profile,
+                           GetParam().level,
+                           GetParam().bitrate) {}
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(H264EncoderParameterTest);
+};
+
+TEST_P(H264EncoderParameterTest, CheckProfileLevel) {
+  // The encoder will be initialized with specified parameters after encoded
+  // first frame.
+  EncodeFrame();
+
+  auto profileLevel = GetProfileLevelForTesting();
+  if (GetParam().profile)
+    ASSERT_EQ(profileLevel.first, GetParam().profile);
+  if (GetParam().level)
+    ASSERT_EQ(profileLevel.second, GetParam().level);
+}
+
+INSTANTIATE_TEST_SUITE_P(All,
+                         H264EncoderParameterTest,
+                         testing::ValuesIn(kH264EncoderParameterTestParam));
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.cc b/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.cc
index 2852370e..70bf1a9 100644
--- a/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.cc
+++ b/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.cc
@@ -137,6 +137,12 @@
 
 VideoTrackRecorderImpl::CodecProfile::CodecProfile(
     CodecId codec_id,
+    base::Optional<media::VideoCodecProfile> opt_profile,
+    base::Optional<uint8_t> opt_level)
+    : codec_id(codec_id), profile(opt_profile), level(opt_level) {}
+
+VideoTrackRecorderImpl::CodecProfile::CodecProfile(
+    CodecId codec_id,
     media::VideoCodecProfile profile,
     uint8_t level)
     : codec_id(codec_id), profile(profile), level(level) {}
@@ -677,7 +683,8 @@
 #if BUILDFLAG(RTC_USE_H264)
       case CodecId::H264:
         encoder_ = base::MakeRefCounted<H264Encoder>(
-            on_encoded_video_cb, bits_per_second, main_task_runner_);
+            on_encoded_video_cb, codec_profile, bits_per_second,
+            main_task_runner_);
         break;
 #endif
       case CodecId::VP8:
diff --git a/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.h b/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.h
index 4a3626a..06177552 100644
--- a/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.h
+++ b/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.h
@@ -93,6 +93,9 @@
 
     explicit CodecProfile(CodecId codec_id);
     CodecProfile(CodecId codec_id,
+                 base::Optional<media::VideoCodecProfile> opt_profile,
+                 base::Optional<uint8_t> opt_level);
+    CodecProfile(CodecId codec_id,
                  media::VideoCodecProfile profile,
                  uint8_t level);
   };
@@ -138,7 +141,7 @@
   // namely configuration, encoding (which might take some time) and
   // destruction. This task runner can be passed on the creation. If nothing is
   // passed, a new encoding thread is created and used.
-  class Encoder : public WTF::ThreadSafeRefCounted<Encoder> {
+  class MODULES_EXPORT Encoder : public WTF::ThreadSafeRefCounted<Encoder> {
    public:
     Encoder(const VideoTrackRecorder::OnEncodedVideoCB& on_encoded_video_cb,
             int32_t bits_per_second,
diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
index 5ba0131..237a9ef1 100644
--- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
+++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
@@ -259,6 +259,7 @@
 
 PeerConnectionDependencyFactory& PeerConnectionDependencyFactory::From(
     ExecutionContext& context) {
+  DCHECK(!context.IsContextDestroyed());
   auto* supplement =
       Supplement<ExecutionContext>::From<PeerConnectionDependencyFactory>(
           context);
@@ -301,9 +302,12 @@
 
 const scoped_refptr<webrtc::PeerConnectionFactoryInterface>&
 PeerConnectionDependencyFactory::GetPcFactory() {
-  if (!pc_factory_.get())
+  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+  DCHECK(!GetSupplementable()->IsContextDestroyed());
+
+  if (!pc_factory_)
     CreatePeerConnectionFactory();
-  CHECK(pc_factory_.get());
+  CHECK(pc_factory_);
   return pc_factory_;
 }
 
@@ -385,6 +389,9 @@
           CrossThreadUnretained(&start_signaling_event)));
 
   start_signaling_event.Wait();
+  DCHECK(pc_factory_);
+  DCHECK(socket_factory_);
+
   CHECK(GetSignalingThread());
 }
 
@@ -705,6 +712,7 @@
 
 void PeerConnectionDependencyFactory::CleanupPeerConnectionFactory() {
   DVLOG(1) << "PeerConnectionDependencyFactory::CleanupPeerConnectionFactory()";
+  socket_factory_ = nullptr;
   pc_factory_ = nullptr;
   if (network_manager_) {
     base::WaitableEvent event(base::WaitableEvent::ResetPolicy::MANUAL,
@@ -738,7 +746,10 @@
 scoped_refptr<base::SingleThreadTaskRunner>
 PeerConnectionDependencyFactory::GetWebRtcSignalingTaskRunner() {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-  EnsureInitialized();
+  // If the context is already destroyed, we don't want to (re)create
+  // dependencies that were already cleaned-up.
+  if (!GetSupplementable()->IsContextDestroyed())
+    EnsureInitialized();
   return GetChromeSignalingThread().IsRunning()
              ? GetChromeSignalingThread().task_runner()
              : nullptr;
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_swap_chain.cc b/third_party/blink/renderer/modules/webgpu/gpu_swap_chain.cc
index 8353de0..c465c0e 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_swap_chain.cc
+++ b/third_party/blink/renderer/modules/webgpu/gpu_swap_chain.cc
@@ -61,7 +61,7 @@
 
 scoped_refptr<StaticBitmapImage> GPUSwapChain::TransferToStaticBitmapImage() {
   viz::TransferableResource transferable_resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
   if (!swap_buffers_->PrepareTransferableResource(
           nullptr, &transferable_resource, &release_callback)) {
     // If we can't get a mailbox, return an transparent black ImageBitmap.
diff --git a/third_party/blink/renderer/modules/xr/xr_webgl_layer.h b/third_party/blink/renderer/modules/xr/xr_webgl_layer.h
index a9c028a..903e411 100644
--- a/third_party/blink/renderer/modules/xr/xr_webgl_layer.h
+++ b/third_party/blink/renderer/modules/xr/xr_webgl_layer.h
@@ -16,10 +16,6 @@
 #include "third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.h"
 #include "third_party/blink/renderer/platform/wtf/ref_counted.h"
 
-namespace viz {
-class SingleReleaseCallback;
-}
-
 namespace blink {
 
 class ExceptionState;
diff --git a/third_party/blink/renderer/platform/bindings/parkable_string.cc b/third_party/blink/renderer/platform/bindings/parkable_string.cc
index 00fe28e..b3cfec9 100644
--- a/third_party/blink/renderer/platform/bindings/parkable_string.cc
+++ b/third_party/blink/renderer/platform/bindings/parkable_string.cc
@@ -9,6 +9,7 @@
 // https://chromium.googlesource.com/chromium/src/+/HEAD/docs/wmax_tokens.md
 #pragma clang max_tokens_here 750000
 
+#include "base/allocator/partition_allocator/oom.h"
 #include "base/allocator/partition_allocator/partition_alloc.h"
 #include "base/bind.h"
 #include "base/check_op.h"
@@ -583,10 +584,13 @@
   //
   // (1) is data corruption, and (2) is OOM. In all cases, we cannot
   // recover the string we need, nothing else to do than to abort.
-  //
-  // Stability sheriffs: If you see this, this is likely an OOM.
-  CHECK(compression::GzipUncompress(compressed_string_piece,
-                                    uncompressed_string_piece));
+  if (!compression::GzipUncompress(compressed_string_piece,
+                                   uncompressed_string_piece)) {
+    // Since this is almost always OOM, report it as such. We don't have
+    // certainty, but memory corruption should be much rarer, and could make us
+    // crash anywhere else.
+    OOM_CRASH(uncompressed_string_piece.size());
+  }
 
   base::TimeDelta elapsed = timer.Elapsed();
   manager.RecordUnparkingTime(elapsed);
diff --git a/third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.cc b/third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.cc
index 2e8a9c1d..05f3624d 100644
--- a/third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.cc
+++ b/third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.cc
@@ -7,7 +7,7 @@
 #include <memory>
 #include <utility>
 
-#include "components/viz/common/resources/single_release_callback.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "gpu/GLES2/gl2extchromium.h"
 #include "gpu/command_buffer/client/gles2_interface.h"
 #include "gpu/command_buffer/client/raster_interface.h"
@@ -54,7 +54,7 @@
     base::WeakPtr<WebGraphicsContext3DProviderWrapper> context_provider_wrapper,
     base::PlatformThreadRef context_thread_ref,
     scoped_refptr<base::SingleThreadTaskRunner> context_task_runner,
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback) {
+    viz::ReleaseCallback release_callback) {
   return base::AdoptRef(new AcceleratedStaticBitmapImage(
       mailbox, sync_token, shared_image_texture_id, sk_image_info,
       texture_target, is_origin_top_left, ImageOrientationEnum::kDefault,
@@ -73,7 +73,7 @@
     base::WeakPtr<WebGraphicsContext3DProviderWrapper> context_provider_wrapper,
     base::PlatformThreadRef context_thread_ref,
     scoped_refptr<base::SingleThreadTaskRunner> context_task_runner,
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback)
+    viz::ReleaseCallback release_callback)
     : StaticBitmapImage(orientation),
       mailbox_(mailbox),
       sk_image_info_(sk_image_info),
diff --git a/third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h b/third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h
index 9d0c3bc..5dcd822 100644
--- a/third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h
+++ b/third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h
@@ -10,16 +10,13 @@
 #include "base/memory/weak_ptr.h"
 #include "base/single_thread_task_runner.h"
 #include "base/threading/thread_checker.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "third_party/blink/renderer/platform/graphics/mailbox_ref.h"
 #include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
 #include "third_party/blink/renderer/platform/scheduler/public/thread.h"
 
 struct SkImageInfo;
 
-namespace viz {
-class SingleReleaseCallback;
-}  // namespace viz
-
 namespace blink {
 class MailboxTextureBacking;
 class WebGraphicsContext3DProviderWrapper;
@@ -69,7 +66,7 @@
       base::WeakPtr<WebGraphicsContext3DProviderWrapper>,
       base::PlatformThreadRef context_thread_ref,
       scoped_refptr<base::SingleThreadTaskRunner> context_task_runner,
-      std::unique_ptr<viz::SingleReleaseCallback> release_callback);
+      viz::ReleaseCallback release_callback);
 
   bool CurrentFrameKnownToBeOpaque() override;
   IntSize Size() const override;
@@ -141,7 +138,7 @@
       base::WeakPtr<WebGraphicsContext3DProviderWrapper>,
       base::PlatformThreadRef context_thread_ref,
       scoped_refptr<base::SingleThreadTaskRunner> context_task_runner,
-      std::unique_ptr<viz::SingleReleaseCallback> release_callback);
+      viz::ReleaseCallback release_callback);
 
   void CreateImageFromMailboxIfNeeded();
   void InitializeTextureBacking(GLuint shared_image_texture_id);
diff --git a/third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image_test.cc b/third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image_test.cc
index 9c9033c..5569465f 100644
--- a/third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image_test.cc
+++ b/third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image_test.cc
@@ -4,9 +4,10 @@
 
 #include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h"
 
+#include "base/callback_helpers.h"
 #include "base/test/null_task_runner.h"
 #include "base/test/task_environment.h"
-#include "components/viz/common/resources/single_release_callback.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/test/test_gles2_interface.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -49,15 +50,12 @@
 
 scoped_refptr<StaticBitmapImage> CreateBitmap() {
   auto mailbox = gpu::Mailbox::GenerateForSharedImage();
-  auto release_callback = viz::SingleReleaseCallback::Create(
-      base::BindOnce([](const gpu::SyncToken&, bool) {}));
 
   return AcceleratedStaticBitmapImage::CreateFromCanvasMailbox(
       mailbox, GenTestSyncToken(100), 0, SkImageInfo::MakeN32Premul(100, 100),
       GL_TEXTURE_2D, true, SharedGpuContext::ContextProviderWrapper(),
       base::PlatformThread::CurrentRef(),
-      base::MakeRefCounted<base::NullTaskRunner>(),
-      std::move(release_callback));
+      base::MakeRefCounted<base::NullTaskRunner>(), base::DoNothing());
 }
 
 class AcceleratedStaticBitmapImageTest : public Test {
diff --git a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.cc b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.cc
index a6a1b0f95..bc2ad32 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.cc
@@ -590,7 +590,7 @@
 bool Canvas2DLayerBridge::PrepareTransferableResource(
     cc::SharedBitmapIdRegistrar* bitmap_registrar,
     viz::TransferableResource* out_resource,
-    std::unique_ptr<viz::SingleReleaseCallback>* out_release_callback) {
+    viz::ReleaseCallback* out_release_callback) {
   DCHECK(layer_);  // This explodes if FinalizeFrame() was not called.
 
   frames_since_last_commit_ = 0;
@@ -624,8 +624,7 @@
     // If the resource did not change, the release will be handled correctly
     // when the callback from the previous frame is dispatched. But run the
     // |out_release_callback| to release the ref acquired above.
-    (*out_release_callback)->Run(gpu::SyncToken(), false /* is_lost */);
-    *out_release_callback = nullptr;
+    std::move(*out_release_callback).Run(gpu::SyncToken(), false /* is_lost */);
     return false;
   }
 
diff --git a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h
index caed7664..175b8e2 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h
+++ b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h
@@ -83,8 +83,7 @@
   bool PrepareTransferableResource(
       cc::SharedBitmapIdRegistrar* bitmap_registrar,
       viz::TransferableResource* out_resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* out_release_callback)
-      override;
+      viz::ReleaseCallback* out_release_callback) override;
 
   void FinalizeFrame();
   void SetIsInHiddenPage(bool);
diff --git a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge_test.cc b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge_test.cc
index 5a320ee..aef5382 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge_test.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge_test.cc
@@ -35,7 +35,7 @@
 #include "cc/layers/texture_layer.h"
 #include "cc/test/skia_common.h"
 #include "cc/test/stub_decode_cache.h"
-#include "components/viz/common/resources/single_release_callback.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/resources/transferable_resource.h"
 #include "components/viz/test/test_context_provider.h"
 #include "components/viz/test/test_gles2_interface.h"
@@ -200,7 +200,7 @@
   test_context_provider_->TestContextGL()->set_context_lost(true);
 
   viz::TransferableResource resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
   EXPECT_FALSE(bridge->PrepareTransferableResource(nullptr, &resource,
                                                    &release_callback));
 }
@@ -224,7 +224,7 @@
   bridge->Restore();
 
   viz::TransferableResource resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
   EXPECT_FALSE(bridge->PrepareTransferableResource(nullptr, &resource,
                                                    &release_callback));
 }
@@ -237,18 +237,18 @@
         MakeBridge(IntSize(300, 150), RasterMode::kGPU, CanvasColorParams());
     bridge->FinalizeFrame();
     viz::TransferableResource resource;
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+    viz::ReleaseCallback release_callback;
     EXPECT_TRUE(bridge->PrepareTransferableResource(nullptr, &resource,
                                                     &release_callback));
 
     bool lost_resource = true;
-    release_callback->Run(gpu::SyncToken(), lost_resource);
+    std::move(release_callback).Run(gpu::SyncToken(), lost_resource);
   }
 
   // Retry with mailbox released while bridge destruction is in progress.
   {
     viz::TransferableResource resource;
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+    viz::ReleaseCallback release_callback;
 
     {
       std::unique_ptr<Canvas2DLayerBridge> bridge =
@@ -265,13 +265,13 @@
     // Before fixing crbug.com/411864, the following line would cause a memory
     // use after free that sometimes caused a crash in normal builds and
     // crashed consistently with ASAN.
-    release_callback->Run(gpu::SyncToken(), lost_resource);
+    std::move(release_callback).Run(gpu::SyncToken(), lost_resource);
   }
 }
 
 TEST_F(Canvas2DLayerBridgeTest, ReleaseCallbackWithNullContextProviderWrapper) {
   viz::TransferableResource resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
 
   {
     std::unique_ptr<Canvas2DLayerBridge> bridge =
@@ -287,7 +287,7 @@
   // This is the test to make sure that ReleaseMailboxImageResource() handles
   // null context_provider_wrapper properly.
   SharedGpuContext::ContextProviderWrapper();
-  release_callback->Run(gpu::SyncToken(), lost_resource);
+  std::move(release_callback).Run(gpu::SyncToken(), lost_resource);
 }
 
 TEST_F(Canvas2DLayerBridgeTest, RasterModeHint) {
@@ -697,7 +697,7 @@
 
   // Test PrepareTransferableResource() while hibernating
   viz::TransferableResource resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
   EXPECT_FALSE(bridge->PrepareTransferableResource(nullptr, &resource,
                                                    &release_callback));
   EXPECT_TRUE(bridge->IsValid());
@@ -719,7 +719,7 @@
       .gpu_memory_buffer_formats.Add(gfx::BufferFormat::BGRA_8888);
 
   viz::TransferableResource resources[3];
-  std::unique_ptr<viz::SingleReleaseCallback> callbacks[3];
+  viz::ReleaseCallback callbacks[3];
   PaintFlags flags;
 
   std::unique_ptr<Canvas2DLayerBridge> bridge =
@@ -738,7 +738,7 @@
 
   // Now release the first resource and draw again. It should be reused due to
   // recycling.
-  callbacks[0]->Run(gpu::SyncToken(), false);
+  std::move(callbacks[0]).Run(gpu::SyncToken(), false);
   bridge->GetPaintCanvas()->drawLine(0, 0, 2, 2, flags);
   DrawSomething(bridge.get());
   ASSERT_TRUE(bridge->PrepareTransferableResource(nullptr, &resources[2],
@@ -746,8 +746,8 @@
   EXPECT_EQ(resources[0].mailbox_holder.mailbox,
             resources[2].mailbox_holder.mailbox);
 
-  callbacks[1]->Run(gpu::SyncToken(), false);
-  callbacks[2]->Run(gpu::SyncToken(), false);
+  std::move(callbacks[1]).Run(gpu::SyncToken(), false);
+  std::move(callbacks[2]).Run(gpu::SyncToken(), false);
 }
 
 TEST_F(Canvas2DLayerBridgeTest, NoResourceRecyclingWhenPageHidden) {
@@ -758,7 +758,7 @@
       .gpu_memory_buffer_formats.Add(gfx::BufferFormat::BGRA_8888);
 
   viz::TransferableResource resources[2];
-  std::unique_ptr<viz::SingleReleaseCallback> callbacks[2];
+  viz::ReleaseCallback callbacks[2];
   PaintFlags flags;
 
   std::unique_ptr<Canvas2DLayerBridge> bridge =
@@ -776,7 +776,7 @@
 
   // Now release the first resource and mark the page hidden. The recycled
   // resource should be dropped.
-  callbacks[0]->Run(gpu::SyncToken(), false);
+  std::move(callbacks[0]).Run(gpu::SyncToken(), false);
   EXPECT_EQ(test_context_provider_->TestContextGL()->NumTextures(), 2u);
   bridge->SetIsInHiddenPage(true);
   EXPECT_EQ(test_context_provider_->TestContextGL()->NumTextures(), 1u);
@@ -784,7 +784,7 @@
   // Release second frame, this resource is not released because its the current
   // render target for the canvas. It should only be released if the canvas is
   // hibernated.
-  callbacks[1]->Run(gpu::SyncToken(), false);
+  std::move(callbacks[1]).Run(gpu::SyncToken(), false);
   EXPECT_EQ(test_context_provider_->TestContextGL()->NumTextures(), 1u);
 }
 
@@ -796,7 +796,7 @@
       .gpu_memory_buffer_formats.Add(gfx::BufferFormat::BGRA_8888);
 
   viz::TransferableResource resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
 
   std::unique_ptr<Canvas2DLayerBridge> bridge =
       MakeBridge(IntSize(300, 150), RasterMode::kGPU, CanvasColorParams());
@@ -807,9 +807,8 @@
   bridge.reset();
   EXPECT_EQ(test_context_provider_->TestContextGL()->NumTextures(), 1u);
   constexpr bool lost_resource = false;
-  release_callback->Run(gpu::SyncToken(), lost_resource);
+  std::move(release_callback).Run(gpu::SyncToken(), lost_resource);
   EXPECT_EQ(test_context_provider_->TestContextGL()->NumTextures(), 0u);
-  release_callback = nullptr;
 }
 
 TEST_F(Canvas2DLayerBridgeTest, EnsureCCImageCacheUse) {
@@ -945,16 +944,16 @@
   ASSERT_TRUE(bridge->layer_for_testing());
 
   viz::TransferableResource resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
   EXPECT_TRUE(bridge->PrepareTransferableResource(nullptr, &resource,
                                                   &release_callback));
   bridge->layer_for_testing()->SetTransferableResource(
       resource, std::move(release_callback));
 
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback2;
+  viz::ReleaseCallback release_callback2;
   EXPECT_FALSE(bridge->PrepareTransferableResource(nullptr, &resource,
                                                    &release_callback2));
-  EXPECT_EQ(release_callback2, nullptr);
+  EXPECT_FALSE(release_callback2);
 }
 class CustomFakeCanvasResourceHost : public FakeCanvasResourceHost {
  public:
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource.cc b/third_party/blink/renderer/platform/graphics/canvas_resource.cc
index 1246bf9..0e31b95ce 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource.cc
@@ -12,7 +12,6 @@
 #include "build/build_config.h"
 #include "components/viz/common/resources/bitmap_allocation.h"
 #include "components/viz/common/resources/resource_format_utils.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "components/viz/common/resources/transferable_resource.h"
 #include "gpu/GLES2/gl2extchromium.h"
 #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h"
@@ -122,14 +121,13 @@
 
 bool CanvasResource::PrepareTransferableResource(
     viz::TransferableResource* out_resource,
-    std::unique_ptr<viz::SingleReleaseCallback>* out_callback,
+    viz::ReleaseCallback* out_callback,
     MailboxSyncMode sync_mode) {
   DCHECK(IsValid());
 
   DCHECK(out_callback);
-  auto func =
+  *out_callback =
       WTF::Bind(&ReleaseFrameResources, provider_, base::WrapRefCounted(this));
-  *out_callback = viz::SingleReleaseCallback::Create(std::move(func));
 
   if (!out_resource)
     return true;
@@ -624,10 +622,10 @@
   // Note that the code in CanvasResourceProvider::RecycleResource also uses the
   // ref-count on the resource as a proxy for a read lock to allow recycling the
   // resource once all refs have been released.
-  auto release_callback = viz::SingleReleaseCallback::Create(
+  auto release_callback =
       base::BindOnce(&OnBitmapImageDestroyed,
                      scoped_refptr<CanvasResourceRasterSharedImage>(this),
-                     has_read_ref_on_texture));
+                     has_read_ref_on_texture);
 
   scoped_refptr<StaticBitmapImage> image;
 
@@ -952,10 +950,10 @@
   // Note that the code in CanvasResourceProvider::RecycleResource also uses the
   // ref-count on the resource as a proxy for a read lock to allow recycling the
   // resource once all refs have been released.
-  auto release_callback = viz::SingleReleaseCallback::Create(
+  auto release_callback =
       base::BindOnce(&OnBitmapImageDestroyed,
                      scoped_refptr<CanvasResourceSkiaDawnSharedImage>(this),
-                     has_read_ref_on_texture));
+                     has_read_ref_on_texture);
 
   scoped_refptr<StaticBitmapImage> image;
 
@@ -1036,7 +1034,7 @@
 //==============================================================================
 scoped_refptr<ExternalCanvasResource> ExternalCanvasResource::Create(
     const gpu::Mailbox& mailbox,
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback,
+    viz::ReleaseCallback release_callback,
     gpu::SyncToken sync_token,
     const IntSize& size,
     GLenum texture_target,
@@ -1077,12 +1075,12 @@
 
   // The |release_callback| keeps a ref on this resource to ensure the backing
   // shared image is kept alive until the lifetime of the image.
-  auto release_callback = viz::SingleReleaseCallback::Create(base::BindOnce(
+  auto release_callback = base::BindOnce(
       [](scoped_refptr<ExternalCanvasResource> resource,
          const gpu::SyncToken& sync_token, bool is_lost) {
         // Do nothing but hold onto the refptr.
       },
-      base::RetainedRef(this)));
+      base::RetainedRef(this));
 
   return AcceleratedStaticBitmapImage::CreateFromCanvasMailbox(
       mailbox_, GetSyncToken(), /*shared_image_texture_id=*/0u,
@@ -1093,7 +1091,7 @@
 
 void ExternalCanvasResource::TearDown() {
   if (release_callback_)
-    release_callback_->Run(GetSyncToken(), resource_is_lost_);
+    std::move(release_callback_).Run(GetSyncToken(), resource_is_lost_);
   Abandon();
 }
 
@@ -1133,7 +1131,7 @@
 
 ExternalCanvasResource::ExternalCanvasResource(
     const gpu::Mailbox& mailbox,
-    std::unique_ptr<viz::SingleReleaseCallback> out_callback,
+    viz::ReleaseCallback out_callback,
     gpu::SyncToken sync_token,
     const IntSize& size,
     GLenum texture_target,
@@ -1193,11 +1191,11 @@
 
   // The |release_callback| keeps a ref on this resource to ensure the backing
   // shared image is kept alive until the lifetime of the image.
-  auto release_callback = viz::SingleReleaseCallback::Create(base::BindOnce(
+  auto release_callback = base::BindOnce(
       [](scoped_refptr<CanvasResourceSwapChain>, const gpu::SyncToken&, bool) {
         // Do nothing but hold onto the refptr.
       },
-      base::RetainedRef(this)));
+      base::RetainedRef(this));
 
   return AcceleratedStaticBitmapImage::CreateFromCanvasMailbox(
       back_buffer_mailbox_, GetSyncToken(), shared_texture_id, image_info,
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource.h b/third_party/blink/renderer/platform/graphics/canvas_resource.h
index cb836ed7..fc20dfc 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource.h
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource.h
@@ -6,6 +6,7 @@
 #include "base/memory/shared_memory_mapping.h"
 #include "base/memory/weak_ptr.h"
 #include "base/notreached.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/resources/shared_bitmap.h"
 #include "gpu/command_buffer/client/gles2_interface.h"
 #include "gpu/command_buffer/common/mailbox.h"
@@ -40,7 +41,6 @@
 
 namespace viz {
 
-class SingleReleaseCallback;
 struct TransferableResource;
 
 }  // namespace viz
@@ -114,7 +114,7 @@
   // Provides a TransferableResource representation of this resource to share it
   // with the compositor.
   bool PrepareTransferableResource(viz::TransferableResource*,
-                                   std::unique_ptr<viz::SingleReleaseCallback>*,
+                                   viz::ReleaseCallback*,
                                    MailboxSyncMode);
 
   // Issues a wait for this sync token on the context used by this resource for
@@ -558,7 +558,7 @@
  public:
   static scoped_refptr<ExternalCanvasResource> Create(
       const gpu::Mailbox& mailbox,
-      std::unique_ptr<viz::SingleReleaseCallback> release_callback,
+      viz::ReleaseCallback release_callback,
       gpu::SyncToken sync_token,
       const IntSize&,
       GLenum texture_target,
@@ -594,25 +594,24 @@
   base::WeakPtr<WebGraphicsContext3DProviderWrapper> ContextProviderWrapper()
       const override;
 
-  ExternalCanvasResource(
-      const gpu::Mailbox& mailbox,
-      std::unique_ptr<viz::SingleReleaseCallback> out_callback,
-      gpu::SyncToken sync_token,
-      const IntSize&,
-      GLenum texture_target,
-      const CanvasResourceParams&,
-      base::WeakPtr<WebGraphicsContext3DProviderWrapper>,
-      base::WeakPtr<CanvasResourceProvider>,
-      SkFilterQuality,
-      bool is_origin_top_left,
-      bool is_overlay_candidate);
+  ExternalCanvasResource(const gpu::Mailbox& mailbox,
+                         viz::ReleaseCallback out_callback,
+                         gpu::SyncToken sync_token,
+                         const IntSize&,
+                         GLenum texture_target,
+                         const CanvasResourceParams&,
+                         base::WeakPtr<WebGraphicsContext3DProviderWrapper>,
+                         base::WeakPtr<CanvasResourceProvider>,
+                         SkFilterQuality,
+                         bool is_origin_top_left,
+                         bool is_overlay_candidate);
 
   const base::WeakPtr<WebGraphicsContext3DProviderWrapper>
       context_provider_wrapper_;
   const IntSize size_;
   const gpu::Mailbox mailbox_;
   const GLenum texture_target_;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback_;
+  viz::ReleaseCallback release_callback_;
   gpu::SyncToken sync_token_;
 
   const bool is_origin_top_left_;
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.cc b/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.cc
index 2b67437..4efffeb5 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.cc
@@ -13,8 +13,8 @@
 #include "components/power_scheduler/power_mode_voter.h"
 #include "components/viz/common/quads/compositor_frame.h"
 #include "components/viz/common/quads/texture_draw_quad.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/resources/resource_format.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "services/viz/public/mojom/compositing/frame_timing_details.mojom-blink.h"
 #include "services/viz/public/mojom/hit_test/hit_test_region_list.mojom-blink.h"
 #include "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h"
@@ -42,13 +42,13 @@
   FrameResource() = default;
   ~FrameResource() {
     if (release_callback)
-      release_callback->Run(sync_token, is_lost);
+      std::move(release_callback).Run(sync_token, is_lost);
   }
 
   // TODO(junov):  What does this do?
   bool spare_lock = true;
 
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
   gpu::SyncToken sync_token;
   bool is_lost = false;
 };
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_provider_test.cc b/third_party/blink/renderer/platform/graphics/canvas_resource_provider_test.cc
index d33fa4ae..38f96e1 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource_provider_test.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource_provider_test.cc
@@ -4,7 +4,7 @@
 
 #include "third_party/blink/renderer/platform/graphics/canvas_resource_provider.h"
 
-#include "components/viz/common/resources/single_release_callback.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/test/test_context_provider.h"
 #include "components/viz/test/test_gles2_interface.h"
 #include "components/viz/test/test_gpu_memory_buffer_manager.h"
@@ -203,12 +203,12 @@
 
   // Resource recycled.
   viz::TransferableResource transferable_resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
   ASSERT_TRUE(resource->PrepareTransferableResource(
       &transferable_resource, &release_callback, kUnverifiedSyncToken));
   auto* resource_ptr = resource.get();
   resource = nullptr;
-  release_callback->Run(sync_token, false);
+  std::move(release_callback).Run(sync_token, false);
 
   provider->Canvas()->clear(SK_ColorBLACK);
   auto resource_again = provider->ProduceCanvasResource();
@@ -403,10 +403,11 @@
   gpu::Mailbox mailbox = gpu::Mailbox::Generate();
   scoped_refptr<ExternalCanvasResource> resource =
       ExternalCanvasResource::Create(
-          mailbox, nullptr, gpu::SyncToken(), kSize, GL_TEXTURE_2D,
-          kColorParams, SharedGpuContext::ContextProviderWrapper(),
-          provider->CreateWeakPtr(), kMedium_SkFilterQuality,
-          true /*is_origin_top_left*/, true /*is_overlay_candidate*/);
+          mailbox, viz::ReleaseCallback(), gpu::SyncToken(), kSize,
+          GL_TEXTURE_2D, kColorParams,
+          SharedGpuContext::ContextProviderWrapper(), provider->CreateWeakPtr(),
+          kMedium_SkFilterQuality, true /*is_origin_top_left*/,
+          true /*is_overlay_candidate*/);
 
   // NewOrRecycledResource() would return nullptr before an ImportResource().
   EXPECT_TRUE(provider->ImportResource(resource));
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_test.cc b/third_party/blink/renderer/platform/graphics/canvas_resource_test.cc
index c0e34a8d1..0ab2d595 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource_test.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource_test.cc
@@ -5,7 +5,7 @@
 #include "third_party/blink/renderer/platform/graphics/canvas_resource.h"
 
 #include "base/run_loop.h"
-#include "components/viz/common/resources/single_release_callback.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/resources/transferable_resource.h"
 #include "components/viz/test/test_gpu_memory_buffer_manager.h"
 #include "gpu/GLES2/gl2extchromium.h"
@@ -30,14 +30,14 @@
                                          kLow_SkFilterQuality);
   EXPECT_TRUE(!!canvas_resource);
   viz::TransferableResource resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
   bool success = canvas_resource->PrepareTransferableResource(
       &resource, &release_callback, kUnverifiedSyncToken);
 
   EXPECT_TRUE(success);
   EXPECT_TRUE(resource.is_software);
 
-  release_callback->Run(gpu::SyncToken(), false);
+  std::move(release_callback).Run(gpu::SyncToken(), false);
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc
index 2f72d5c..2f93e8cf 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc
+++ b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc
@@ -338,7 +338,7 @@
 bool DrawingBuffer::PrepareTransferableResource(
     cc::SharedBitmapIdRegistrar* bitmap_registrar,
     viz::TransferableResource* out_resource,
-    std::unique_ptr<viz::SingleReleaseCallback>* out_release_callback) {
+    viz::ReleaseCallback* out_release_callback) {
   ScopedStateRestorer scoped_state_restorer(this);
   bool force_gpu_result = false;
   return PrepareTransferableResourceInternal(
@@ -348,7 +348,7 @@
 bool DrawingBuffer::PrepareTransferableResourceInternal(
     cc::SharedBitmapIdRegistrar* bitmap_registrar,
     viz::TransferableResource* out_resource,
-    std::unique_ptr<viz::SingleReleaseCallback>* out_release_callback,
+    viz::ReleaseCallback* out_release_callback,
     bool force_gpu_result) {
   DCHECK(state_restorer_);
   if (destruction_in_progress_) {
@@ -390,7 +390,7 @@
 bool DrawingBuffer::FinishPrepareTransferableResourceSoftware(
     cc::SharedBitmapIdRegistrar* bitmap_registrar,
     viz::TransferableResource* out_resource,
-    std::unique_ptr<viz::SingleReleaseCallback>* out_release_callback) {
+    viz::ReleaseCallback* out_release_callback) {
   DCHECK(state_restorer_);
   RegisteredBitmap registered = CreateOrRecycleBitmap(bitmap_registrar);
 
@@ -419,9 +419,9 @@
   // This holds a ref on the DrawingBuffer that will keep it alive until the
   // mailbox is released (and while the release callback is running). It also
   // owns the SharedBitmap.
-  auto func = base::BindOnce(&DrawingBuffer::MailboxReleasedSoftware,
-                             weak_factory_.GetWeakPtr(), std::move(registered));
-  *out_release_callback = viz::SingleReleaseCallback::Create(std::move(func));
+  *out_release_callback =
+      base::BindOnce(&DrawingBuffer::MailboxReleasedSoftware,
+                     weak_factory_.GetWeakPtr(), std::move(registered));
 
   contents_changed_ = false;
   ResetBuffersToAutoClear();
@@ -430,7 +430,7 @@
 
 bool DrawingBuffer::FinishPrepareTransferableResourceGpu(
     viz::TransferableResource* out_resource,
-    std::unique_ptr<viz::SingleReleaseCallback>* out_release_callback) {
+    viz::ReleaseCallback* out_release_callback) {
   DCHECK(state_restorer_);
   if (webgl_version_ > kWebGL1) {
     state_restorer_->SetPixelUnpackBufferBindingDirty();
@@ -524,7 +524,7 @@
     // mailbox is released (and while the release callback is running).
     auto func = base::BindOnce(&DrawingBuffer::NotifyMailboxReleasedGpu,
                                color_buffer_for_mailbox);
-    *out_release_callback = viz::SingleReleaseCallback::Create(std::move(func));
+    *out_release_callback = std::move(func);
   }
 
   // Point |m_frontColorBuffer| to the buffer that we are now presenting.
@@ -593,7 +593,7 @@
   ScopedStateRestorer scoped_state_restorer(this);
 
   viz::TransferableResource transferable_resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
   constexpr bool force_gpu_result = true;
   if (!PrepareTransferableResourceInternal(nullptr, &transferable_resource,
                                            &release_callback,
@@ -693,10 +693,9 @@
   }
 
   return ExternalCanvasResource::Create(
-      canvas_resource_buffer->mailbox, /*release_callback=*/nullptr,
-      gpu::SyncToken(), canvas_resource_buffer->size, texture_target_,
-      resource_params, context_provider_->GetWeakPtr(), resource_provider,
-      kLow_SkFilterQuality,
+      canvas_resource_buffer->mailbox, viz::ReleaseCallback(), gpu::SyncToken(),
+      canvas_resource_buffer->size, texture_target_, resource_params,
+      context_provider_->GetWeakPtr(), resource_provider, kLow_SkFilterQuality,
       /*is_origin_top_left=*/opengl_flip_y_extension_,
       /*is_overlay_candidate=*/true);
 }
@@ -708,7 +707,7 @@
   // Using PrepareTransferableResourceInternal, with force_gpu_result as we
   // will use this ExportCanvasResource only for gpu_composited content.
   viz::TransferableResource out_resource;
-  std::unique_ptr<viz::SingleReleaseCallback> out_release_callback;
+  viz::ReleaseCallback out_release_callback;
   const bool force_gpu_result = true;
   if (!PrepareTransferableResourceInternal(
           nullptr, &out_resource, &out_release_callback, force_gpu_result))
diff --git a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h
index 79ed06f..40067042 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h
+++ b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h
@@ -236,8 +236,7 @@
   bool PrepareTransferableResource(
       cc::SharedBitmapIdRegistrar* bitmap_registrar,
       viz::TransferableResource* out_resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* out_release_callback)
-      override;
+      viz::ReleaseCallback* out_release_callback) override;
 
   // Returns a StaticBitmapImage backed by a texture containing the current
   // contents of the front buffer. This is done without any pixel copies. The
@@ -445,17 +444,17 @@
   bool PrepareTransferableResourceInternal(
       cc::SharedBitmapIdRegistrar* bitmap_registrar,
       viz::TransferableResource* out_resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* out_release_callback,
+      viz::ReleaseCallback* out_release_callback,
       bool force_gpu_result);
 
   // Helper functions to be called only by PrepareTransferableResourceInternal.
   bool FinishPrepareTransferableResourceGpu(
       viz::TransferableResource* out_resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* out_release_callback);
+      viz::ReleaseCallback* out_release_callback);
   bool FinishPrepareTransferableResourceSoftware(
       cc::SharedBitmapIdRegistrar* bitmap_registrar,
       viz::TransferableResource* out_resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* out_release_callback);
+      viz::ReleaseCallback* out_release_callback);
 
   // Callbacks for mailboxes given to the compositor from
   // FinishPrepareTransferableResource{Gpu,Software}.
diff --git a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_software_rendering_test.cc b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_software_rendering_test.cc
index 67669f6a..34393773 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_software_rendering_test.cc
+++ b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_software_rendering_test.cc
@@ -5,7 +5,7 @@
 #include "third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h"
 
 #include "cc/resources/shared_bitmap_id_registrar.h"
-#include "components/viz/common/resources/single_release_callback.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/resources/transferable_resource.h"
 #include "gpu/command_buffer/client/gles2_interface_stub.h"
 #include "gpu/config/gpu_feature_info.h"
@@ -51,9 +51,9 @@
 
 TEST_F(DrawingBufferSoftwareCompositingTest, BitmapRecycling) {
   viz::TransferableResource resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback1;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback2;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback3;
+  viz::ReleaseCallback release_callback1;
+  viz::ReleaseCallback release_callback2;
+  viz::ReleaseCallback release_callback3;
   IntSize initial_size(kInitialWidth, kInitialHeight);
   IntSize alternate_size(kInitialWidth, kAlternateHeight);
 
@@ -63,18 +63,18 @@
       &test_shared_bitmap_id_registrar_, &resource,
       &release_callback1);  // create a bitmap.
   EXPECT_EQ(0, drawing_buffer_->RecycledBitmapCount());
-  release_callback1->Run(
-      gpu::SyncToken(),
-      false /* lostResource */);  // release bitmap to the recycling queue
+  std::move(release_callback1)
+      .Run(gpu::SyncToken(),
+           false /* lostResource */);  // release bitmap to the recycling queue
   EXPECT_EQ(1, drawing_buffer_->RecycledBitmapCount());
   drawing_buffer_->MarkContentsChanged();
   drawing_buffer_->PrepareTransferableResource(
       &test_shared_bitmap_id_registrar_, &resource,
       &release_callback2);  // recycle a bitmap.
   EXPECT_EQ(0, drawing_buffer_->RecycledBitmapCount());
-  release_callback2->Run(
-      gpu::SyncToken(),
-      false /* lostResource */);  // release bitmap to the recycling queue
+  std::move(release_callback2)
+      .Run(gpu::SyncToken(),
+           false /* lostResource */);  // release bitmap to the recycling queue
   EXPECT_EQ(1, drawing_buffer_->RecycledBitmapCount());
   drawing_buffer_->Resize(alternate_size);
   drawing_buffer_->MarkContentsChanged();
@@ -83,7 +83,7 @@
       &test_shared_bitmap_id_registrar_, &resource,
       &release_callback3);  // cause recycling queue to be purged due to resize
   EXPECT_EQ(0, drawing_buffer_->RecycledBitmapCount());
-  release_callback3->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback3).Run(gpu::SyncToken(), false /* lostResource */);
   EXPECT_EQ(1, drawing_buffer_->RecycledBitmapCount());
 
   drawing_buffer_->BeginDestruction();
@@ -92,7 +92,7 @@
 TEST_F(DrawingBufferSoftwareCompositingTest, FramebufferBinding) {
   GLES2InterfaceForTests* gl_ = drawing_buffer_->ContextGLForTests();
   viz::TransferableResource resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
   IntSize initial_size(kInitialWidth, kInitialHeight);
   GLint drawBinding = 0, readBinding = 0;
 
@@ -109,7 +109,7 @@
   gl_->GetIntegerv(GL_READ_FRAMEBUFFER_BINDING, &readBinding);
   EXPECT_EQ(static_cast<GLint>(draw_framebuffer_binding), drawBinding);
   EXPECT_EQ(static_cast<GLint>(read_framebuffer_binding), readBinding);
-  release_callback->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback).Run(gpu::SyncToken(), false /* lostResource */);
 
   drawing_buffer_->BeginDestruction();
 }
diff --git a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test.cc b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test.cc
index 2edb284..7d562aae 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test.cc
+++ b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test.cc
@@ -34,7 +34,7 @@
 
 #include "base/memory/scoped_refptr.h"
 #include "base/stl_util.h"
-#include "components/viz/common/resources/single_release_callback.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/resources/transferable_resource.h"
 #include "components/viz/test/test_gpu_memory_buffer_manager.h"
 #include "gpu/command_buffer/client/gles2_interface_stub.h"
@@ -154,7 +154,7 @@
 
   VerifyStateWasRestored();
   viz::TransferableResource resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
 
   IntSize initial_size(kInitialWidth, kInitialHeight);
   IntSize alternate_size(kInitialWidth, kAlternateHeight);
@@ -169,7 +169,7 @@
   // Resize to 100x50.
   drawing_buffer_->Resize(alternate_size);
   VerifyStateWasRestored();
-  release_callback->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback).Run(gpu::SyncToken(), false /* lostResource */);
   VerifyStateWasRestored();
 
   // Produce a resource at this size.
@@ -183,7 +183,7 @@
   drawing_buffer_->Resize(initial_size);
   VerifyStateWasRestored();
   SetAndSaveRestoreState(true);
-  release_callback->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback).Run(gpu::SyncToken(), false /* lostResource */);
   VerifyStateWasRestored();
 
   // Prepare another resource and verify that it's the correct size.
@@ -194,13 +194,13 @@
   VerifyStateWasRestored();
 
   // Prepare one final resource and verify that it's the correct size.
-  release_callback->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback).Run(gpu::SyncToken(), false /* lostResource */);
   EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
   EXPECT_TRUE(drawing_buffer_->PrepareTransferableResource(nullptr, &resource,
                                                            &release_callback));
   VerifyStateWasRestored();
   EXPECT_EQ(static_cast<gfx::Size>(initial_size), sii->MostRecentSize());
-  release_callback->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback).Run(gpu::SyncToken(), false /* lostResource */);
   drawing_buffer_->BeginDestruction();
 }
 
@@ -208,11 +208,11 @@
   auto* sii = drawing_buffer_->SharedImageInterfaceForTests();
 
   viz::TransferableResource resource1;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback1;
+  viz::ReleaseCallback release_callback1;
   viz::TransferableResource resource2;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback2;
+  viz::ReleaseCallback release_callback2;
   viz::TransferableResource resource3;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback3;
+  viz::ReleaseCallback release_callback3;
 
   // Produce resources.
   EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
@@ -234,14 +234,14 @@
   EXPECT_EQ(sii->shared_image_count(), 4u);
 
   EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
-  release_callback1->Run(gpu::SyncToken(), true /* lostResource */);
+  std::move(release_callback1).Run(gpu::SyncToken(), true /* lostResource */);
   EXPECT_EQ(sii->shared_image_count(), 3u);
 
-  release_callback2->Run(gpu::SyncToken(), true /* lostResource */);
+  std::move(release_callback2).Run(gpu::SyncToken(), true /* lostResource */);
   EXPECT_EQ(sii->shared_image_count(), 2u);
 
   // The resource is not marked lost so it's recycled after the callback.
-  release_callback3->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback3).Run(gpu::SyncToken(), false /* lostResource */);
   EXPECT_EQ(sii->shared_image_count(), 2u);
 
   drawing_buffer_->BeginDestruction();
@@ -250,8 +250,7 @@
 TEST_F(DrawingBufferTest, VerifyCachedRecycledResourcesAreKept) {
   const size_t kNumResources = DrawingBuffer::kDefaultColorBufferCacheLimit + 1;
   std::vector<viz::TransferableResource> resources(kNumResources);
-  std::vector<std::unique_ptr<viz::SingleReleaseCallback>> release_callbacks(
-      kNumResources);
+  std::vector<viz::ReleaseCallback> release_callbacks(kNumResources);
 
   // Produce resources.
   for (size_t i = 0; i < kNumResources; ++i) {
@@ -263,16 +262,16 @@
   // Release resources.
   for (auto& release_callback : release_callbacks) {
     drawing_buffer_->MarkContentsChanged();
-    release_callback->Run(gpu::SyncToken(), false /* lostResource */);
+    std::move(release_callback).Run(gpu::SyncToken(), false /* lostResource */);
   }
 
-  std::vector<std::unique_ptr<viz::SingleReleaseCallback>>
-      recycled_release_callbacks(DrawingBuffer::kDefaultColorBufferCacheLimit);
+  std::vector<viz::ReleaseCallback> recycled_release_callbacks(
+      DrawingBuffer::kDefaultColorBufferCacheLimit);
 
   // The first recycled resource must be from the cache
   for (size_t i = 0; i < DrawingBuffer::kDefaultColorBufferCacheLimit; ++i) {
     viz::TransferableResource recycled_resource;
-    std::unique_ptr<viz::SingleReleaseCallback> recycled_release_callback;
+    viz::ReleaseCallback recycled_release_callback;
     drawing_buffer_->MarkContentsChanged();
     EXPECT_TRUE(drawing_buffer_->PrepareTransferableResource(
         nullptr, &recycled_resource, &recycled_release_callbacks[i]));
@@ -290,7 +289,7 @@
 
   // The next recycled resource must be a new resource.
   viz::TransferableResource next_recycled_resource;
-  std::unique_ptr<viz::SingleReleaseCallback> next_recycled_release_callback;
+  viz::ReleaseCallback next_recycled_release_callback;
   drawing_buffer_->MarkContentsChanged();
   EXPECT_TRUE(drawing_buffer_->PrepareTransferableResource(
       nullptr, &next_recycled_resource, &next_recycled_release_callback));
@@ -303,7 +302,7 @@
 
   // Cleanup
   for (auto& release_cb : recycled_release_callbacks) {
-    release_cb->Run(gpu::SyncToken(), false /* lostResource */);
+    std::move(release_cb).Run(gpu::SyncToken(), false /* lostResource */);
   }
   drawing_buffer_->BeginDestruction();
 }
@@ -311,7 +310,7 @@
 TEST_F(DrawingBufferTest, verifyInsertAndWaitSyncTokenCorrectly) {
   GLES2InterfaceForTests* gl_ = drawing_buffer_->ContextGLForTests();
   viz::TransferableResource resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
 
   // Produce resources.
   EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
@@ -324,7 +323,7 @@
   gl_->GenSyncTokenCHROMIUM(wait_sync_token.GetData());
   EXPECT_CALL(*gl_, WaitSyncTokenCHROMIUMMock(SyncTokenEq(wait_sync_token)))
       .Times(0);
-  release_callback->Run(wait_sync_token, false /* lostResource */);
+  std::move(release_callback).Run(wait_sync_token, false /* lostResource */);
   testing::Mock::VerifyAndClearExpectations(gl_);
 
   // The returned buffer will be recycled in PrepareTransferrableResource. Make
@@ -342,7 +341,7 @@
   gl_->GenSyncTokenCHROMIUM(wait_sync_token.GetData());
   EXPECT_CALL(*gl_, WaitSyncTokenCHROMIUMMock(SyncTokenEq(wait_sync_token)))
       .Times(0);
-  release_callback->Run(wait_sync_token, false /* lostResource */);
+  std::move(release_callback).Run(wait_sync_token, false /* lostResource */);
   drawing_buffer_->BeginDestruction();
   testing::Mock::VerifyAndClearExpectations(gl_);
 }
@@ -389,7 +388,7 @@
       drawing_buffer_->SharedImageInterfaceForTests();
 
   viz::TransferableResource resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
 
   IntSize initial_size(kInitialWidth, kInitialHeight);
   IntSize alternate_size(kInitialWidth, kAlternateHeight);
@@ -432,7 +431,7 @@
   testing::Mock::VerifyAndClearExpectations(gl_);
 
   // Return the exported resource. Now it should get destroyed too.
-  release_callback->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback).Run(gpu::SyncToken(), false /* lostResource */);
   VerifyStateWasRestored();
   EXPECT_EQ(1u, sii->shared_image_count());
   EXPECT_FALSE(sii->CheckSharedImageExists(mailbox1));
@@ -470,7 +469,7 @@
   testing::Mock::VerifyAndClearExpectations(gl_);
 
   // Return the exported resource. Now it will be destroyed too.
-  release_callback->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback).Run(gpu::SyncToken(), false /* lostResource */);
   VerifyStateWasRestored();
   EXPECT_EQ(1u, sii->shared_image_count());
   EXPECT_FALSE(sii->CheckSharedImageExists(mailbox3));
@@ -495,14 +494,14 @@
   // Prepare one final resource and verify that it's the correct size. We should
   // recycle the previously exported resource and avoid allocating a new
   // SharedImage.
-  release_callback->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback).Run(gpu::SyncToken(), false /* lostResource */);
   EXPECT_TRUE(drawing_buffer_->MarkContentsChanged());
   EXPECT_TRUE(drawing_buffer_->PrepareTransferableResource(nullptr, &resource,
                                                            &release_callback));
   EXPECT_EQ(static_cast<gfx::Size>(initial_size), sii->MostRecentSize());
   EXPECT_TRUE(resource.is_overlay_candidate);
   EXPECT_EQ(static_cast<gfx::Size>(initial_size), resource.size);
-  release_callback->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback).Run(gpu::SyncToken(), false /* lostResource */);
   EXPECT_EQ(2u, sii->shared_image_count());
   EXPECT_TRUE(sii->CheckSharedImageExists(mailbox5));
   EXPECT_TRUE(sii->CheckSharedImageExists(mailbox6));
@@ -521,11 +520,11 @@
       drawing_buffer_->SharedImageInterfaceForTests();
 
   viz::TransferableResource resource1;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback1;
+  viz::ReleaseCallback release_callback1;
   viz::TransferableResource resource2;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback2;
+  viz::ReleaseCallback release_callback2;
   viz::TransferableResource resource3;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback3;
+  viz::ReleaseCallback release_callback3;
 
   // Request a resource. A SharedImage should already be created. Everything
   // works as expected.
@@ -567,9 +566,9 @@
   testing::Mock::VerifyAndClearExpectations(gl_);
   VerifyStateWasRestored();
 
-  release_callback1->Run(gpu::SyncToken(), false /* lostResource */);
-  release_callback2->Run(gpu::SyncToken(), false /* lostResource */);
-  release_callback3->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback1).Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback2).Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback3).Run(gpu::SyncToken(), false /* lostResource */);
 
   drawing_buffer_->BeginDestruction();
   EXPECT_FALSE(sii->CheckSharedImageExists(mailbox1));
@@ -732,7 +731,7 @@
 TEST_F(DrawingBufferTest, VerifySetIsHiddenProperlyAffectsMailboxes) {
   GLES2InterfaceForTests* gl_ = drawing_buffer_->ContextGLForTests();
   viz::TransferableResource resource;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
 
   // Produce resources.
   EXPECT_FALSE(drawing_buffer_->MarkContentsChanged());
@@ -745,7 +744,7 @@
   // m_drawingBuffer deletes resource immediately when hidden.
   EXPECT_CALL(*gl_, WaitSyncTokenCHROMIUMMock(SyncTokenEq(wait_sync_token)))
       .Times(0);
-  release_callback->Run(wait_sync_token, false /* lostResource */);
+  std::move(release_callback).Run(wait_sync_token, false /* lostResource */);
   testing::Mock::VerifyAndClearExpectations(gl_);
 
   drawing_buffer_->BeginDestruction();
diff --git a/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.cc b/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.cc
index 7dac640..3e904cedc 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.cc
+++ b/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.cc
@@ -124,7 +124,7 @@
 bool ImageLayerBridge::PrepareTransferableResource(
     cc::SharedBitmapIdRegistrar* bitmap_registrar,
     viz::TransferableResource* out_resource,
-    std::unique_ptr<viz::SingleReleaseCallback>* out_release_callback) {
+    viz::ReleaseCallback* out_release_callback) {
   if (disposed_)
     return false;
 
@@ -185,7 +185,7 @@
     auto func =
         WTF::Bind(&ImageLayerBridge::ResourceReleasedGpu,
                   WrapWeakPersistent(this), std::move(image_for_compositor));
-    *out_release_callback = viz::SingleReleaseCallback::Create(std::move(func));
+    *out_release_callback = std::move(func);
   } else {
     // Readback if needed and retain the readback in image_ to prevent future
     // readbacks
@@ -223,7 +223,7 @@
     }
     auto func = WTF::Bind(&ImageLayerBridge::ResourceReleasedSoftware,
                           WrapWeakPersistent(this), std::move(registered));
-    *out_release_callback = viz::SingleReleaseCallback::Create(std::move(func));
+    *out_release_callback = std::move(func);
   }
 
   return true;
diff --git a/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.h b/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.h
index 9ca6afb..51180a6 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.h
+++ b/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.h
@@ -43,8 +43,7 @@
   bool PrepareTransferableResource(
       cc::SharedBitmapIdRegistrar* bitmap_registrar,
       viz::TransferableResource* out_resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* out_release_callback)
-      override;
+      viz::ReleaseCallback* out_release_callback) override;
 
   scoped_refptr<StaticBitmapImage> GetImage() { return image_; }
 
diff --git a/third_party/blink/renderer/platform/graphics/gpu/webgpu_image_bitmap_handler_test.cc b/third_party/blink/renderer/platform/graphics/gpu/webgpu_image_bitmap_handler_test.cc
index 7e32260..c5dc1bd 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/webgpu_image_bitmap_handler_test.cc
+++ b/third_party/blink/renderer/platform/graphics/gpu/webgpu_image_bitmap_handler_test.cc
@@ -3,6 +3,8 @@
 // found in the LICENSE file.
 
 #include "third_party/blink/renderer/platform/graphics/gpu/webgpu_image_bitmap_handler.h"
+
+#include "base/callback_helpers.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/test/null_task_runner.h"
 #include "base/test/task_environment.h"
@@ -34,14 +36,11 @@
 
 scoped_refptr<StaticBitmapImage> CreateBitmap() {
   auto mailbox = gpu::Mailbox::GenerateForSharedImage();
-  auto release_callback = viz::SingleReleaseCallback::Create(
-      base::BindOnce([](const gpu::SyncToken&, bool) {}));
   return AcceleratedStaticBitmapImage::CreateFromCanvasMailbox(
       mailbox, GenTestSyncToken(100), 0, SkImageInfo::MakeN32Premul(100, 100),
       GL_TEXTURE_2D, true, SharedGpuContext::ContextProviderWrapper(),
       base::PlatformThread::CurrentRef(),
-      base::MakeRefCounted<base::NullTaskRunner>(),
-      std::move(release_callback));
+      base::MakeRefCounted<base::NullTaskRunner>(), base::DoNothing());
 }
 
 bool GPUUploadingPathSupported() {
diff --git a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.cc b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.cc
index 323bff3..85f167c7 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.cc
+++ b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.cc
@@ -146,7 +146,7 @@
 bool WebGPUSwapBufferProvider::PrepareTransferableResource(
     cc::SharedBitmapIdRegistrar* bitmap_registrar,
     viz::TransferableResource* out_resource,
-    std::unique_ptr<viz::SingleReleaseCallback>* out_release_callback) {
+    viz::ReleaseCallback* out_release_callback) {
   DCHECK(!neutered_);
   if (!current_swap_buffer_ || neutered_) {
     return false;
@@ -188,10 +188,9 @@
 
   // This holds a ref on the SwapBuffers that will keep it alive until the
   // mailbox is released (and while the release callback is running).
-  auto func = WTF::Bind(&WebGPUSwapBufferProvider::MailboxReleased,
-                        scoped_refptr<WebGPUSwapBufferProvider>(this),
-                        current_swap_buffer_);
-  *out_release_callback = viz::SingleReleaseCallback::Create(std::move(func));
+  *out_release_callback = WTF::Bind(
+      &WebGPUSwapBufferProvider::MailboxReleased,
+      scoped_refptr<WebGPUSwapBufferProvider>(this), current_swap_buffer_);
 
   current_swap_buffer_ = nullptr;
   wire_texture_id_ = 0;
diff --git a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.h b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.h
index ed297db..936f55b 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.h
+++ b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.h
@@ -52,8 +52,7 @@
   bool PrepareTransferableResource(
       cc::SharedBitmapIdRegistrar* bitmap_registrar,
       viz::TransferableResource* out_resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* out_release_callback)
-      override;
+      viz::ReleaseCallback* out_release_callback) override;
 
  private:
   // Holds resources and synchronization for one of the swapchain images.
diff --git a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider_test.cc b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider_test.cc
index 48d46ec5..8665c3f2 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider_test.cc
+++ b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider_test.cc
@@ -122,17 +122,17 @@
   viz::TransferableResource resource1;
   gpu::webgpu::ReservedTexture reservation1 = {
       reinterpret_cast<WGPUTexture>(&resource1), 1, 1};
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback1;
+  viz::ReleaseCallback release_callback1;
 
   viz::TransferableResource resource2;
   gpu::webgpu::ReservedTexture reservation2 = {
       reinterpret_cast<WGPUTexture>(&resource2), 2, 2};
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback2;
+  viz::ReleaseCallback release_callback2;
 
   viz::TransferableResource resource3;
   gpu::webgpu::ReservedTexture reservation3 = {
       reinterpret_cast<WGPUTexture>(&resource3), 3, 3};
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback3;
+  viz::ReleaseCallback release_callback3;
 
   // Produce resources.
   EXPECT_CALL(*webgpu_, ReserveTexture(fake_device_))
@@ -156,13 +156,13 @@
   // Release resources one by one, the provider should only be freed when the
   // last one is called.
   provider_ = nullptr;
-  release_callback1->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback1).Run(gpu::SyncToken(), false /* lostResource */);
   ASSERT_EQ(provider_alive_, true);
 
-  release_callback2->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback2).Run(gpu::SyncToken(), false /* lostResource */);
   ASSERT_EQ(provider_alive_, true);
 
-  release_callback3->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback3).Run(gpu::SyncToken(), false /* lostResource */);
   ASSERT_EQ(provider_alive_, false);
 }
 
@@ -173,7 +173,7 @@
   viz::TransferableResource resource;
   gpu::webgpu::ReservedTexture reservation = {
       reinterpret_cast<WGPUTexture>(&resource), 1, 1};
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
 
   // Produce one resource of size kSize.
   EXPECT_CALL(*webgpu_, ReserveTexture(fake_device_))
@@ -182,7 +182,7 @@
   EXPECT_TRUE(provider_->PrepareTransferableResource(nullptr, &resource,
                                                      &release_callback));
   EXPECT_EQ(static_cast<gfx::Size>(kSize), sii_->MostRecentSize());
-  release_callback->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback).Run(gpu::SyncToken(), false /* lostResource */);
 
   // Produce one resource of size kOtherSize.
   EXPECT_CALL(*webgpu_, ReserveTexture(fake_device_))
@@ -191,7 +191,7 @@
   EXPECT_TRUE(provider_->PrepareTransferableResource(nullptr, &resource,
                                                      &release_callback));
   EXPECT_EQ(static_cast<gfx::Size>(kOtherSize), sii_->MostRecentSize());
-  release_callback->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback).Run(gpu::SyncToken(), false /* lostResource */);
 
   // Produce one resource of size kSize again.
   EXPECT_CALL(*webgpu_, ReserveTexture(fake_device_))
@@ -200,7 +200,7 @@
   EXPECT_TRUE(provider_->PrepareTransferableResource(nullptr, &resource,
                                                      &release_callback));
   EXPECT_EQ(static_cast<gfx::Size>(kSize), sii_->MostRecentSize());
-  release_callback->Run(gpu::SyncToken(), false /* lostResource */);
+  std::move(release_callback).Run(gpu::SyncToken(), false /* lostResource */);
 }
 
 TEST_F(WebGPUSwapBufferProviderTest, VerifyInsertAndWaitSyncTokenCorrectly) {
@@ -209,7 +209,7 @@
   viz::TransferableResource resource;
   gpu::webgpu::ReservedTexture reservation = {
       reinterpret_cast<WGPUTexture>(&resource), 1, 1};
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback;
+  viz::ReleaseCallback release_callback;
 
   // Produce the first resource, check that WebGPU will wait for the creation of
   // the shared image
@@ -230,8 +230,7 @@
   // destruction
   gpu::SyncToken release_token;
   webgpu_->GenSyncTokenCHROMIUM(release_token.GetData());
-  release_callback->Run(release_token, false /* lostResource */);
-  release_callback = nullptr;
+  std::move(release_callback).Run(release_token, false /* lostResource */);
   EXPECT_EQ(sii_->MostRecentDestroyToken(), release_token);
 }
 
diff --git a/third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.cc b/third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.cc
index 7771ffdb..b4e99eb 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.cc
+++ b/third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.cc
@@ -610,11 +610,8 @@
 
   // This holds a ref on the XRWebGLDrawingBuffer that will keep it alive
   // until the mailbox is released (and while the callback is running).
-  auto func =
+  viz::ReleaseCallback release_callback =
       base::BindOnce(&XRWebGLDrawingBuffer::NotifyMailboxReleased, buffer);
-
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback =
-      viz::SingleReleaseCallback::Create(std::move(func));
   const SkImageInfo sk_image_info =
       SkImageInfo::MakeN32Premul(size_.Width(), size_.Height());
 
diff --git a/third_party/blink/renderer/platform/graphics/mailbox_ref.cc b/third_party/blink/renderer/platform/graphics/mailbox_ref.cc
index 38dbfd51..899af120 100644
--- a/third_party/blink/renderer/platform/graphics/mailbox_ref.cc
+++ b/third_party/blink/renderer/platform/graphics/mailbox_ref.cc
@@ -4,7 +4,6 @@
 
 #include "third_party/blink/renderer/platform/graphics/mailbox_ref.h"
 
-#include "components/viz/common/resources/single_release_callback.h"
 #include "gpu/command_buffer/client/raster_interface.h"
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/public/platform/web_graphics_context_3d_provider.h"
@@ -13,21 +12,12 @@
 #include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
 
 namespace blink {
-namespace {
-
-void ReleaseCallbackOnContextThread(
-    std::unique_ptr<viz::SingleReleaseCallback> callback,
-    const gpu::SyncToken sync_token) {
-  callback->Run(sync_token, /* is_lost = */ false);
-}
-
-}  // namespace
 
 MailboxRef::MailboxRef(
     const gpu::SyncToken& sync_token,
     base::PlatformThreadRef context_thread_ref,
     scoped_refptr<base::SingleThreadTaskRunner> context_task_runner,
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback)
+    viz::ReleaseCallback release_callback)
     : sync_token_(sync_token),
       context_thread_ref_(context_thread_ref),
       context_task_runner_(std::move(context_task_runner)),
@@ -35,11 +25,11 @@
 
 MailboxRef::~MailboxRef() {
   if (context_thread_ref_ == base::PlatformThread::CurrentRef()) {
-    ReleaseCallbackOnContextThread(std::move(release_callback_), sync_token_);
+    std::move(release_callback_).Run(sync_token_, /*is_lost=*/false);
   } else {
     context_task_runner_->PostTask(
-        FROM_HERE, base::BindOnce(&ReleaseCallbackOnContextThread,
-                                  std::move(release_callback_), sync_token_));
+        FROM_HERE, base::BindOnce(std::move(release_callback_), sync_token_,
+                                  /*is_lost=*/false));
   }
 }
 
diff --git a/third_party/blink/renderer/platform/graphics/mailbox_ref.h b/third_party/blink/renderer/platform/graphics/mailbox_ref.h
index d4b9a375..6d8bfac7 100644
--- a/third_party/blink/renderer/platform/graphics/mailbox_ref.h
+++ b/third_party/blink/renderer/platform/graphics/mailbox_ref.h
@@ -10,14 +10,11 @@
 #include "base/memory/weak_ptr.h"
 #include "base/single_thread_task_runner.h"
 #include "base/threading/thread_checker.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "gpu/command_buffer/common/sync_token.h"
 #include "third_party/blink/renderer/platform/scheduler/public/thread.h"
 #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h"
 
-namespace viz {
-class SingleReleaseCallback;
-}  // namespace viz
-
 namespace blink {
 class WebGraphicsContext3DProviderWrapper;
 
@@ -26,7 +23,7 @@
   MailboxRef(const gpu::SyncToken& sync_token,
              base::PlatformThreadRef context_thread_ref,
              scoped_refptr<base::SingleThreadTaskRunner> context_task_runner,
-             std::unique_ptr<viz::SingleReleaseCallback> release_callback);
+             viz::ReleaseCallback release_callback);
   ~MailboxRef();
 
   bool is_cross_thread() const {
@@ -40,7 +37,7 @@
   gpu::SyncToken sync_token_;
   const base::PlatformThreadRef context_thread_ref_;
   const scoped_refptr<base::SingleThreadTaskRunner> context_task_runner_;
-  std::unique_ptr<viz::SingleReleaseCallback> release_callback_;
+  viz::ReleaseCallback release_callback_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/video_frame_image_util.cc b/third_party/blink/renderer/platform/graphics/video_frame_image_util.cc
index 64fcb89..6778809c 100644
--- a/third_party/blink/renderer/platform/graphics/video_frame_image_util.cc
+++ b/third_party/blink/renderer/platform/graphics/video_frame_image_util.cc
@@ -6,7 +6,7 @@
 
 #include "build/build_config.h"
 #include "components/viz/common/gpu/raster_context_provider.h"
-#include "components/viz/common/resources/single_release_callback.h"
+#include "components/viz/common/resources/release_callback.h"
 #include "gpu/command_buffer/client/raster_interface.h"
 #include "gpu/config/gpu_feature_info.h"
 #include "media/base/video_frame.h"
@@ -157,7 +157,7 @@
         kN32_SkColorType, kUnpremul_SkAlphaType, std::move(sk_color_space));
 
     // Hold a ref by storing it in the release callback.
-    auto release_callback = viz::SingleReleaseCallback::Create(WTF::Bind(
+    auto release_callback = WTF::Bind(
         [](scoped_refptr<media::VideoFrame> frame,
            base::WeakPtr<WebGraphicsContext3DProviderWrapper> context_provider,
            const gpu::SyncToken& sync_token, bool is_lost) {
@@ -167,7 +167,7 @@
           media::WaitAndReplaceSyncTokenClient client(ri);
           frame->UpdateReleaseSyncToken(&client);
         },
-        frame, SharedGpuContext::ContextProviderWrapper()));
+        frame, SharedGpuContext::ContextProviderWrapper());
 
     return AcceleratedStaticBitmapImage::CreateFromCanvasMailbox(
         frame->mailbox_holder(0).mailbox, frame->mailbox_holder(0).sync_token,
diff --git a/third_party/blink/renderer/platform/heap/BUILD.gn b/third_party/blink/renderer/platform/heap/BUILD.gn
index e9f07f1..652ba77 100644
--- a/third_party/blink/renderer/platform/heap/BUILD.gn
+++ b/third_party/blink/renderer/platform/heap/BUILD.gn
@@ -279,6 +279,7 @@
     sources += [
       "impl/test/card_table_test.cc",
       "impl/test/gc_info_test.cc",
+      "impl/test/heap_internals_test.cc",
       "impl/test/heap_stats_collector_test.cc",
       "impl/test/heap_thread_test.cc",
       "impl/test/incremental_marking_internals_test.cc",
diff --git a/third_party/blink/renderer/platform/heap/impl/test/heap_internals_test.cc b/third_party/blink/renderer/platform/heap/impl/test/heap_internals_test.cc
new file mode 100644
index 0000000..e11b282a
--- /dev/null
+++ b/third_party/blink/renderer/platform/heap/impl/test/heap_internals_test.cc
@@ -0,0 +1,2134 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/test/scoped_feature_list.h"
+#include "build/build_config.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/blink/public/common/features.h"
+#include "third_party/blink/renderer/platform/heap/handle.h"
+#include "third_party/blink/renderer/platform/heap/heap_stats_collector.h"
+#include "third_party/blink/renderer/platform/heap/heap_test_objects.h"
+#include "third_party/blink/renderer/platform/heap/heap_test_utilities.h"
+#include "third_party/blink/renderer/platform/heap/self_keep_alive.h"
+#include "third_party/blink/renderer/platform/wtf/size_assertions.h"
+
+namespace blink {
+
+namespace {
+class HeapInternalsTest : public TestSupportingGC {};
+}  // namespace
+
+namespace {
+
+class IntWrapper : public GarbageCollected<IntWrapper> {
+ public:
+  virtual ~IntWrapper() {
+    destructor_calls_.fetch_add(1, std::memory_order_relaxed);
+  }
+
+  static std::atomic_int destructor_calls_;
+  void Trace(Visitor* visitor) const {}
+
+  int Value() const { return x_; }
+
+  bool operator==(const IntWrapper& other) const {
+    return other.Value() == Value();
+  }
+
+  unsigned GetHash() { return IntHash<int>::GetHash(x_); }
+
+  explicit IntWrapper(int x) : x_(x) {}
+
+  IntWrapper() = delete;
+
+ private:
+  int x_;
+};
+std::atomic_int IntWrapper::destructor_calls_{0};
+
+struct SameSizeAsPersistent {
+  void* pointers[2];
+#if DCHECK_IS_ON()
+  void* pointers_dcheck_[2];
+#endif
+#if BUILDFLAG(RAW_HEAP_SNAPSHOTS)
+  PersistentLocation location;
+#endif  // BUILDFLAG(RAW_HEAP_SNAPSHOTS)
+};
+ASSERT_SIZE(Persistent<IntWrapper>, SameSizeAsPersistent);
+
+}  // namespace
+
+class TestGCScope {
+  STACK_ALLOCATED();
+
+ public:
+  explicit TestGCScope(BlinkGC::StackState state) {
+    DCHECK(ThreadState::Current()->CheckThread());
+    ThreadState::Current()->Heap().stats_collector()->NotifyMarkingStarted(
+        BlinkGC::CollectionType::kMajor, BlinkGC::GCReason::kForcedGCForTesting,
+        true /* is_forced_gc */);
+    ThreadState::Current()->AtomicPauseMarkPrologue(
+        BlinkGC::CollectionType::kMajor, state, BlinkGC::kAtomicMarking,
+        BlinkGC::GCReason::kForcedGCForTesting);
+  }
+  ~TestGCScope() {
+    ThreadState::Current()->AtomicPauseMarkEpilogue(BlinkGC::kAtomicMarking);
+    ThreadState::Current()->AtomicPauseSweepAndCompact(
+        BlinkGC::CollectionType::kMajor, BlinkGC::kAtomicMarking,
+        BlinkGC::kEagerSweeping);
+    ThreadState::Current()->AtomicPauseEpilogue();
+    ThreadState::Current()->CompleteSweep();
+  }
+};
+
+namespace {
+class SimpleObject : public GarbageCollected<SimpleObject> {
+ public:
+  SimpleObject() = default;
+  virtual void Trace(Visitor* visitor) const {}
+  char GetPayload(int i) { return payload[i]; }
+  // This virtual method is unused but it is here to make sure
+  // that this object has a vtable. This object is used
+  // as the super class for objects that also have garbage
+  // collected mixins and having a virtual here makes sure
+  // that adjustment is needed both for marking and for isAlive
+  // checks.
+  virtual void VirtualMethod() {}
+
+ protected:
+  char payload[64];
+};
+
+class LargeHeapObject final : public GarbageCollected<LargeHeapObject> {
+ public:
+  LargeHeapObject() { int_wrapper_ = MakeGarbageCollected<IntWrapper>(23); }
+  ~LargeHeapObject() { destructor_calls_++; }
+
+  char Get(size_t i) { return data_[i]; }
+  void Set(size_t i, char c) { data_[i] = c; }
+  size_t length() { return kLength; }
+  void Trace(Visitor* visitor) const { visitor->Trace(int_wrapper_); }
+  static int destructor_calls_;
+
+ private:
+  static const size_t kLength = 1024 * 1024;
+  Member<IntWrapper> int_wrapper_;
+  char data_[kLength];
+};
+int LargeHeapObject::destructor_calls_ = 0;
+
+void ExpectObjectMarkedAndUnmark(MarkingWorklist* worklist, void* expected) {
+  MarkingItem item;
+  CHECK(worklist->Pop(0, &item));
+  CHECK_EQ(expected, item.base_object_payload);
+  HeapObjectHeader* header =
+      HeapObjectHeader::FromPayload(item.base_object_payload);
+  CHECK(header->IsMarked());
+  header->Unmark();
+  CHECK(worklist->IsGlobalEmpty());
+}
+}  // namespace
+
+TEST_F(HeapInternalsTest, CheckAndMarkPointer) {
+  // This test ensures that conservative marking primitives can use any address
+  // contained within an object to mark the corresponding object.
+
+  ThreadHeap& heap = ThreadState::Current()->Heap();
+  ClearOutOldGarbage();
+
+  Vector<Address> object_addresses;
+  Vector<Address> end_addresses;
+  for (int i = 0; i < 10; i++) {
+    auto* object = MakeGarbageCollected<SimpleObject>();
+    Address object_address = reinterpret_cast<Address>(object);
+    object_addresses.push_back(object_address);
+    end_addresses.push_back(object_address + sizeof(SimpleObject) - 1);
+  }
+  Address large_object_address =
+      reinterpret_cast<Address>(MakeGarbageCollected<LargeHeapObject>());
+  Address large_object_end_address =
+      large_object_address + sizeof(LargeHeapObject) - 1;
+
+  {
+    TestGCScope scope(BlinkGC::kHeapPointersOnStack);
+    MarkingVisitor visitor(ThreadState::Current(),
+                           MarkingVisitor::kGlobalMarking);
+    // Record marking speed as counter generation requires valid marking timings
+    // for heaps >1MB.
+    ThreadHeapStatsCollector::Scope stats_scope(
+        heap.stats_collector(),
+        ThreadHeapStatsCollector::kAtomicPauseMarkTransitiveClosure);
+
+    // Conservative marker should find the interesting objects by using anything
+    // between object start and end.
+    MarkingWorklist* worklist = heap.GetMarkingWorklist();
+    CHECK(worklist->IsGlobalEmpty());
+    for (wtf_size_t i = 0; i < object_addresses.size(); i++) {
+      heap.CheckAndMarkPointer(&visitor, object_addresses[i]);
+      ExpectObjectMarkedAndUnmark(worklist, object_addresses[i]);
+      heap.CheckAndMarkPointer(&visitor, end_addresses[i]);
+      ExpectObjectMarkedAndUnmark(worklist, object_addresses[i]);
+    }
+    heap.CheckAndMarkPointer(&visitor, large_object_address);
+    ExpectObjectMarkedAndUnmark(worklist, large_object_address);
+    heap.CheckAndMarkPointer(&visitor, large_object_end_address);
+    ExpectObjectMarkedAndUnmark(worklist, large_object_address);
+  }
+
+  // This forces a GC without stack scanning which results in the objects
+  // being collected. This will also rebuild the above mentioned freelists,
+  // however we don't rely on that below since we don't have any allocations.
+  ClearOutOldGarbage();
+
+  {
+    TestGCScope scope(BlinkGC::kHeapPointersOnStack);
+    MarkingVisitor visitor(ThreadState::Current(),
+                           MarkingVisitor::kGlobalMarking);
+    // Record marking speed as counter generation requires valid marking timings
+    // for heaps >1MB.
+    ThreadHeapStatsCollector::Scope stats_scope(
+        heap.stats_collector(),
+        ThreadHeapStatsCollector::kAtomicPauseMarkTransitiveClosure);
+
+    // After collecting all interesting objects the conservative marker should
+    // not find them anymore.
+    MarkingWorklist* worklist = heap.GetMarkingWorklist();
+    CHECK(worklist->IsGlobalEmpty());
+    for (wtf_size_t i = 0; i < object_addresses.size(); i++) {
+      heap.CheckAndMarkPointer(&visitor, object_addresses[i]);
+      CHECK(worklist->IsGlobalEmpty());
+      heap.CheckAndMarkPointer(&visitor, end_addresses[i]);
+      CHECK(worklist->IsGlobalEmpty());
+    }
+    heap.CheckAndMarkPointer(&visitor, large_object_address);
+    CHECK(worklist->IsGlobalEmpty());
+    heap.CheckAndMarkPointer(&visitor, large_object_end_address);
+    CHECK(worklist->IsGlobalEmpty());
+  }
+}
+
+TEST_F(HeapInternalsTest, LazySweepingLargeObjectPages) {
+  // Disable concurrent sweeping to check lazy sweeping on allocation.
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndDisableFeature(
+      blink::features::kBlinkHeapConcurrentSweeping);
+
+  ClearOutOldGarbage();
+
+  // Create free lists that can be reused for IntWrappers created in
+  // MakeGarbageCollected<LargeHeapObject>().
+  Persistent<IntWrapper> p1 = MakeGarbageCollected<IntWrapper>(1);
+  for (int i = 0; i < 100; i++) {
+    MakeGarbageCollected<IntWrapper>(i);
+  }
+  Persistent<IntWrapper> p2 = MakeGarbageCollected<IntWrapper>(2);
+  PreciselyCollectGarbage();
+  PreciselyCollectGarbage();
+
+  LargeHeapObject::destructor_calls_ = 0;
+  EXPECT_EQ(0, LargeHeapObject::destructor_calls_);
+  for (int i = 0; i < 10; i++)
+    MakeGarbageCollected<LargeHeapObject>();
+  ThreadState::Current()->CollectGarbageForTesting(
+      BlinkGC::CollectionType::kMajor, BlinkGC::kNoHeapPointersOnStack,
+      BlinkGC::kAtomicMarking, BlinkGC::kConcurrentAndLazySweeping,
+      BlinkGC::GCReason::kForcedGCForTesting);
+  EXPECT_EQ(0, LargeHeapObject::destructor_calls_);
+  for (int i = 0; i < 10; i++) {
+    MakeGarbageCollected<LargeHeapObject>();
+    EXPECT_EQ(i + 1, LargeHeapObject::destructor_calls_);
+  }
+  MakeGarbageCollected<LargeHeapObject>();
+  MakeGarbageCollected<LargeHeapObject>();
+  EXPECT_EQ(10, LargeHeapObject::destructor_calls_);
+  ThreadState::Current()->CollectGarbageForTesting(
+      BlinkGC::CollectionType::kMajor, BlinkGC::kNoHeapPointersOnStack,
+      BlinkGC::kAtomicMarking, BlinkGC::kConcurrentAndLazySweeping,
+      BlinkGC::GCReason::kForcedGCForTesting);
+  EXPECT_EQ(10, LargeHeapObject::destructor_calls_);
+  PreciselyCollectGarbage();
+  EXPECT_EQ(22, LargeHeapObject::destructor_calls_);
+}
+
+namespace {
+class Mixin : public GarbageCollectedMixin {
+ public:
+  void Trace(Visitor* visitor) const override {}
+
+  virtual char GetPayload(int i) { return padding_[i]; }
+
+ protected:
+  int padding_[8];
+};
+
+class UseMixin : public SimpleObject, public Mixin {
+ public:
+  UseMixin() {
+    // Verify that WTF::IsGarbageCollectedType<> works as expected for mixins.
+    static_assert(WTF::IsGarbageCollectedType<UseMixin>::value,
+                  "IsGarbageCollectedType<> sanity check failed for GC mixin.");
+    trace_count_ = 0;
+  }
+
+  static int trace_count_;
+  void Trace(Visitor* visitor) const override {
+    SimpleObject::Trace(visitor);
+    Mixin::Trace(visitor);
+    ++trace_count_;
+  }
+};
+int UseMixin::trace_count_ = 0;
+}  // namespace
+
+TEST_F(HeapInternalsTest, NeedsAdjustPointer) {
+  // class Mixin : public GarbageCollectedMixin {};
+  static_assert(NeedsAdjustPointer<Mixin>::value,
+                "A Mixin pointer needs adjustment");
+  static_assert(NeedsAdjustPointer<const Mixin>::value,
+                "A const Mixin pointer needs adjustment");
+
+  // class SimpleObject : public GarbageCollected<SimpleObject> {};
+  static_assert(!NeedsAdjustPointer<SimpleObject>::value,
+                "A SimpleObject pointer does not need adjustment");
+  static_assert(!NeedsAdjustPointer<const SimpleObject>::value,
+                "A const SimpleObject pointer does not need adjustment");
+
+  // class UseMixin : public SimpleObject, public Mixin {};
+  static_assert(!NeedsAdjustPointer<UseMixin>::value,
+                "A UseMixin pointer does not need adjustment");
+  static_assert(!NeedsAdjustPointer<const UseMixin>::value,
+                "A const UseMixin pointer does not need adjustment");
+}
+
+namespace {
+class DeepEagerly final : public GarbageCollected<DeepEagerly> {
+ public:
+  explicit DeepEagerly(DeepEagerly* next) : next_(next) {}
+
+  void Trace(Visitor* visitor) const {
+    int calls = ++s_trace_calls_;
+    if (s_trace_lazy_ <= 2)
+      visitor->Trace(next_);
+    if (s_trace_calls_ == calls)
+      s_trace_lazy_++;
+  }
+
+  Member<DeepEagerly> next_;
+
+  static int s_trace_calls_;
+  static int s_trace_lazy_;
+};
+int DeepEagerly::s_trace_calls_ = 0;
+int DeepEagerly::s_trace_lazy_ = 0;
+}  // namespace
+
+TEST_F(HeapInternalsTest, TraceDeepEagerly) {
+// The allocation & GC overhead is considerable for this test,
+// straining debug builds and lower-end targets too much to be
+// worth running.
+#if !DCHECK_IS_ON() && !defined(OS_ANDROID)
+  DeepEagerly* obj = nullptr;
+  for (int i = 0; i < 10000000; i++)
+    obj = MakeGarbageCollected<DeepEagerly>(obj);
+
+  Persistent<DeepEagerly> persistent(obj);
+  PreciselyCollectGarbage();
+
+  // Verify that the DeepEagerly chain isn't completely unravelled
+  // by performing eager trace() calls, but the explicit mark
+  // stack is switched once some nesting limit is exceeded.
+  EXPECT_GT(DeepEagerly::s_trace_lazy_, 2);
+#endif
+}
+
+#if defined(ADDRESS_SANITIZER)
+TEST_F(HeapInternalsTest, SuccessfulUnsanitizedAccessToObjectHeader) {
+  auto* ptr = MakeGarbageCollected<IntWrapper>(1);
+  HeapObjectHeader* header = HeapObjectHeader::FromPayload(ptr);
+  auto* low = reinterpret_cast<uint16_t*>(header);
+  volatile uint16_t half = internal::AsUnsanitizedAtomic(low)->load();
+  internal::AsUnsanitizedAtomic(low)->store(half);
+}
+
+TEST(HeapInternalsDeathTest, DieOnPoisonedObjectHeaderAccess) {
+  auto* ptr = MakeGarbageCollected<IntWrapper>(1);
+  HeapObjectHeader* header = HeapObjectHeader::FromPayload(ptr);
+  auto* low = reinterpret_cast<uint16_t*>(header);
+  auto access = [low] {
+    volatile uint16_t half = WTF::AsAtomicPtr(low)->load();
+    WTF::AsAtomicPtr(low)->store(half);
+  };
+  EXPECT_DEATH(access(), "");
+}
+#endif  // ADDRESS_SANITIZER
+
+namespace {
+class LargeMixin : public GarbageCollected<LargeMixin>, public Mixin {
+ protected:
+  char data[65536];
+};
+}  // namespace
+
+TEST(HeapInternalsDeathTest, LargeGarbageCollectedMixin) {
+  EXPECT_DEATH(MakeGarbageCollected<LargeMixin>(AdditionalBytes(1)), "");
+}
+
+namespace {
+class PreFinalizerAllocationForbidden
+    : public GarbageCollected<PreFinalizerAllocationForbidden> {
+  USING_PRE_FINALIZER(PreFinalizerAllocationForbidden, Dispose);
+
+ public:
+  void Dispose() {
+    EXPECT_FALSE(ThreadState::Current()->IsAllocationAllowed());
+#if DCHECK_IS_ON()
+    EXPECT_DEATH(MakeGarbageCollected<IntWrapper>(1), "");
+#endif  // DCHECK_IS_ON()
+  }
+
+  void Trace(Visitor* visitor) const {}
+};
+}  // namespace
+
+TEST(HeapInternalsDeathTest, PreFinalizerAllocationForbidden) {
+  MakeGarbageCollected<PreFinalizerAllocationForbidden>();
+  TestSupportingGC::PreciselyCollectGarbage();
+}
+
+namespace {
+class Bar : public GarbageCollected<Bar> {
+ public:
+  Bar() : magic_(kMagic) { live_++; }
+
+  virtual ~Bar() {
+    EXPECT_TRUE(magic_ == kMagic);
+    magic_ = 0;
+    live_--;
+  }
+  bool HasBeenFinalized() const { return !magic_; }
+
+  virtual void Trace(Visitor* visitor) const {}
+  static unsigned live_;
+
+ protected:
+  static const int kMagic = 1337;
+  int magic_;
+};
+
+unsigned Bar::live_ = 0;
+
+class Bars final : public Bar {
+ public:
+  Bars() {
+    for (auto& bar : bars_) {
+      bar = MakeGarbageCollected<Bar>();
+      width_++;
+    }
+  }
+
+  void Trace(Visitor* visitor) const override {
+    Bar::Trace(visitor);
+    for (unsigned i = 0; i < width_; i++)
+      visitor->Trace(bars_[i]);
+  }
+
+  unsigned GetWidth() const { return width_; }
+
+  static const unsigned kWidth = 7500;
+
+ private:
+  unsigned width_ = 0;
+  Member<Bar> bars_[kWidth];
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, WideTest) {
+  ClearOutOldGarbage();
+  Bar::live_ = 0;
+  {
+    auto* bars = MakeGarbageCollected<Bars>();
+    unsigned width = Bars::kWidth;
+    EXPECT_EQ(width + 1, Bar::live_);
+    ConservativelyCollectGarbage();
+    EXPECT_EQ(width + 1, Bar::live_);
+    // Use bars here to make sure that it will be on the stack
+    // for the conservative stack scan to find.
+    EXPECT_EQ(width, bars->GetWidth());
+  }
+  EXPECT_EQ(Bars::kWidth + 1, Bar::live_);
+  PreciselyCollectGarbage();
+  EXPECT_EQ(0u, Bar::live_);
+}
+
+namespace {
+// The accounting for memory includes the memory used by rounding up object
+// sizes. This is done in a different way on 32 bit and 64 bit, so we have to
+// have some slack in the tests.
+template <typename T>
+void CheckWithSlack(T expected, T actual, int slack) {
+  EXPECT_LE(expected, actual);
+  EXPECT_GE((intptr_t)expected + slack, (intptr_t)actual);
+}
+}  // namespace
+
+TEST_F(HeapInternalsTest, LargeHeapObjects) {
+  ThreadHeap& heap = ThreadState::Current()->Heap();
+  ClearOutOldGarbage();
+  size_t initial_object_payload_size = heap.ObjectPayloadSizeForTesting();
+  size_t initial_allocated_space =
+      heap.stats_collector()->allocated_space_bytes();
+  IntWrapper::destructor_calls_ = 0;
+  LargeHeapObject::destructor_calls_ = 0;
+  {
+    int slack =
+        8;  // LargeHeapObject points to an IntWrapper that is also allocated.
+    Persistent<LargeHeapObject> object =
+        MakeGarbageCollected<LargeHeapObject>();
+#if DCHECK_IS_ON()
+    DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(object));
+    DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(
+        reinterpret_cast<char*>(object.Get()) + sizeof(LargeHeapObject) - 1));
+#endif
+    ClearOutOldGarbage();
+    size_t after_allocation = heap.stats_collector()->allocated_space_bytes();
+    {
+      object->Set(0, 'a');
+      EXPECT_EQ('a', object->Get(0));
+      object->Set(object->length() - 1, 'b');
+      EXPECT_EQ('b', object->Get(object->length() - 1));
+      size_t expected_large_heap_object_payload_size =
+          ThreadHeap::AllocationSizeFromSize(sizeof(LargeHeapObject)) -
+          sizeof(HeapObjectHeader);
+      size_t expected_object_payload_size =
+          expected_large_heap_object_payload_size + sizeof(IntWrapper);
+      size_t actual_object_payload_size =
+          heap.ObjectPayloadSizeForTesting() - initial_object_payload_size;
+      CheckWithSlack(expected_object_payload_size, actual_object_payload_size,
+                     slack);
+      // There is probably space for the IntWrapper in a heap page without
+      // allocating extra pages. However, the IntWrapper allocation might cause
+      // the addition of a heap page.
+      size_t large_object_allocation_size =
+          sizeof(LargeObjectPage) + expected_large_heap_object_payload_size;
+      size_t allocated_space_lower_bound =
+          initial_allocated_space + large_object_allocation_size;
+      size_t allocated_space_upper_bound =
+          allocated_space_lower_bound + slack + kBlinkPageSize;
+      EXPECT_LE(allocated_space_lower_bound, after_allocation);
+      EXPECT_LE(after_allocation, allocated_space_upper_bound);
+      EXPECT_EQ(0, IntWrapper::destructor_calls_);
+      EXPECT_EQ(0, LargeHeapObject::destructor_calls_);
+      for (int i = 0; i < 10; i++)
+        object = MakeGarbageCollected<LargeHeapObject>();
+    }
+    ClearOutOldGarbage();
+    EXPECT_EQ(after_allocation,
+              heap.stats_collector()->allocated_space_bytes());
+    EXPECT_EQ(10, IntWrapper::destructor_calls_);
+    EXPECT_EQ(10, LargeHeapObject::destructor_calls_);
+  }
+  ClearOutOldGarbage();
+  EXPECT_TRUE(initial_object_payload_size ==
+              heap.ObjectPayloadSizeForTesting());
+  EXPECT_EQ(initial_allocated_space,
+            heap.stats_collector()->allocated_space_bytes());
+  EXPECT_EQ(11, IntWrapper::destructor_calls_);
+  EXPECT_EQ(11, LargeHeapObject::destructor_calls_);
+  PreciselyCollectGarbage();
+}
+
+namespace {
+class MixinA : public GarbageCollectedMixin {
+ public:
+  MixinA() : obj_(MakeGarbageCollected<IntWrapper>(100)) {}
+  void Trace(Visitor* visitor) const override {
+    trace_count_++;
+    visitor->Trace(obj_);
+  }
+
+  static int trace_count_;
+
+  Member<IntWrapper> obj_;
+};
+
+int MixinA::trace_count_ = 0;
+
+class MixinB : public GarbageCollectedMixin {
+ public:
+  MixinB() : obj_(MakeGarbageCollected<IntWrapper>(101)) {}
+  void Trace(Visitor* visitor) const override { visitor->Trace(obj_); }
+  Member<IntWrapper> obj_;
+};
+
+class MultipleMixins : public GarbageCollected<MultipleMixins>,
+                       public MixinA,
+                       public MixinB {
+ public:
+  MultipleMixins() : obj_(MakeGarbageCollected<IntWrapper>(102)) {}
+  void Trace(Visitor* visitor) const override {
+    visitor->Trace(obj_);
+    MixinA::Trace(visitor);
+    MixinB::Trace(visitor);
+  }
+  Member<IntWrapper> obj_;
+};
+
+static const bool kIsMixinTrue = IsGarbageCollectedMixin<MultipleMixins>::value;
+static const bool kIsMixinFalse = IsGarbageCollectedMixin<IntWrapper>::value;
+}  // namespace
+
+TEST_F(HeapInternalsTest, MultipleMixins) {
+  EXPECT_TRUE(kIsMixinTrue);
+  EXPECT_FALSE(kIsMixinFalse);
+
+  ClearOutOldGarbage();
+  IntWrapper::destructor_calls_ = 0;
+  MultipleMixins* obj = MakeGarbageCollected<MultipleMixins>();
+  {
+    Persistent<MixinA> a = obj;
+    PreciselyCollectGarbage();
+    EXPECT_EQ(0, IntWrapper::destructor_calls_);
+  }
+  {
+    Persistent<MixinB> b = obj;
+    PreciselyCollectGarbage();
+    EXPECT_EQ(0, IntWrapper::destructor_calls_);
+  }
+  PreciselyCollectGarbage();
+  EXPECT_EQ(3, IntWrapper::destructor_calls_);
+}
+
+namespace {
+class DerivedMultipleMixins : public MultipleMixins {
+ public:
+  DerivedMultipleMixins() : obj_(MakeGarbageCollected<IntWrapper>(103)) {}
+
+  void Trace(Visitor* visitor) const override {
+    trace_called_++;
+    visitor->Trace(obj_);
+    MultipleMixins::Trace(visitor);
+  }
+
+  static int trace_called_;
+
+ private:
+  Member<IntWrapper> obj_;
+};
+int DerivedMultipleMixins::trace_called_ = 0;
+}  // namespace
+
+TEST_F(HeapInternalsTest, DerivedMultipleMixins) {
+  ClearOutOldGarbage();
+  IntWrapper::destructor_calls_ = 0;
+  DerivedMultipleMixins::trace_called_ = 0;
+
+  DerivedMultipleMixins* obj = MakeGarbageCollected<DerivedMultipleMixins>();
+  {
+    Persistent<MixinA> a = obj;
+    PreciselyCollectGarbage();
+    EXPECT_EQ(0, IntWrapper::destructor_calls_);
+    EXPECT_LT(0, DerivedMultipleMixins::trace_called_);
+  }
+  {
+    Persistent<MixinB> b = obj;
+    PreciselyCollectGarbage();
+    EXPECT_EQ(0, IntWrapper::destructor_calls_);
+    EXPECT_LT(0, DerivedMultipleMixins::trace_called_);
+  }
+  PreciselyCollectGarbage();
+  EXPECT_EQ(4, IntWrapper::destructor_calls_);
+}
+
+namespace {
+static bool AllocateAndReturnBool() {
+  TestSupportingGC::ConservativelyCollectGarbage();
+  return true;
+}
+
+class AllocInSuperConstructorArgumentSuper
+    : public GarbageCollected<AllocInSuperConstructorArgumentSuper> {
+ public:
+  explicit AllocInSuperConstructorArgumentSuper(bool value) : value_(value) {}
+  virtual ~AllocInSuperConstructorArgumentSuper() = default;
+  virtual void Trace(Visitor* visitor) const {}
+  bool Value() { return value_; }
+
+ private:
+  bool value_;
+};
+
+class AllocInSuperConstructorArgument
+    : public AllocInSuperConstructorArgumentSuper {
+ public:
+  AllocInSuperConstructorArgument()
+      : AllocInSuperConstructorArgumentSuper(AllocateAndReturnBool()) {}
+};
+}  // namespace
+
+// Regression test for crbug.com/404511. Tests conservative marking of
+// an object with an uninitialized vtable.
+TEST_F(HeapInternalsTest, AllocationInSuperConstructorArgument) {
+  AllocInSuperConstructorArgument* object =
+      MakeGarbageCollected<AllocInSuperConstructorArgument>();
+  EXPECT_TRUE(object);
+  ThreadState::Current()->CollectAllGarbageForTesting();
+}
+
+namespace {
+class TestMixinAllocationA : public GarbageCollected<TestMixinAllocationA>,
+                             public GarbageCollectedMixin {
+ public:
+  TestMixinAllocationA() = default;
+
+  void Trace(Visitor* visitor) const override {}
+};
+
+class TestMixinAllocationB : public TestMixinAllocationA {
+ public:
+  TestMixinAllocationB()
+      // Construct object during a mixin construction.
+      : a_(MakeGarbageCollected<TestMixinAllocationA>()) {}
+
+  void Trace(Visitor* visitor) const override {
+    visitor->Trace(a_);
+    TestMixinAllocationA::Trace(visitor);
+  }
+
+ private:
+  Member<TestMixinAllocationA> a_;
+};
+
+class TestMixinAllocationC final : public TestMixinAllocationB {
+ public:
+  TestMixinAllocationC() { DCHECK(!ThreadState::Current()->IsGCForbidden()); }
+
+  void Trace(Visitor* visitor) const override {
+    TestMixinAllocationB::Trace(visitor);
+  }
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, NestedMixinConstruction) {
+  TestMixinAllocationC* object = MakeGarbageCollected<TestMixinAllocationC>();
+  EXPECT_TRUE(object);
+}
+
+TEST_F(HeapInternalsTest, IsHeapObjectAliveForConstPointer) {
+  // See http://crbug.com/661363.
+  auto* object = MakeGarbageCollected<SimpleObject>();
+  HeapObjectHeader* header = HeapObjectHeader::FromPayload(object);
+  LivenessBroker broker = internal::LivenessBrokerFactory::Create();
+  EXPECT_TRUE(header->TryMark());
+  EXPECT_TRUE(broker.IsHeapObjectAlive(object));
+  const SimpleObject* const_object = const_cast<const SimpleObject*>(object);
+  EXPECT_TRUE(broker.IsHeapObjectAlive(const_object));
+}
+
+namespace {
+// This test class served a more important role while Blink
+// was transitioned over to using Oilpan. That required classes
+// that were hybrid, both ref-counted and on the Oilpan heap
+// (the RefCountedGarbageCollected<> class providing just that.)
+//
+// There's no current need for having a ref-counted veneer on
+// top of a GCed class, but we preserve it here to exercise the
+// implementation technique that it used -- keeping an internal
+// "keep alive" persistent reference that is set & cleared across
+// ref-counting operations.
+//
+class RefCountedAndGarbageCollected final
+    : public GarbageCollected<RefCountedAndGarbageCollected> {
+ public:
+  RefCountedAndGarbageCollected() : keep_alive_(PERSISTENT_FROM_HERE) {}
+  ~RefCountedAndGarbageCollected() { ++destructor_calls_; }
+
+  void AddRef() {
+    if (UNLIKELY(!ref_count_)) {
+#if DCHECK_IS_ON()
+      DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(
+          reinterpret_cast<Address>(this)));
+#endif
+      keep_alive_ = this;
+    }
+    ++ref_count_;
+  }
+
+  void Release() {
+    DCHECK_GT(ref_count_, 0);
+    if (!--ref_count_)
+      keep_alive_.Clear();
+  }
+
+  void Trace(Visitor* visitor) const {}
+
+  static int destructor_calls_;
+
+ private:
+  int ref_count_ = 0;
+  SelfKeepAlive<RefCountedAndGarbageCollected> keep_alive_;
+};
+int RefCountedAndGarbageCollected::destructor_calls_ = 0;
+
+class SuperClass;
+
+class PointsBack final : public GarbageCollected<PointsBack> {
+ public:
+  PointsBack() : back_pointer_(nullptr) { ++alive_count_; }
+  ~PointsBack() { --alive_count_; }
+
+  void SetBackPointer(SuperClass* back_pointer) {
+    back_pointer_ = back_pointer;
+  }
+
+  SuperClass* BackPointer() const { return back_pointer_; }
+
+  void Trace(Visitor* visitor) const { visitor->Trace(back_pointer_); }
+
+  static int alive_count_;
+
+ private:
+  WeakMember<SuperClass> back_pointer_;
+};
+int PointsBack::alive_count_ = 0;
+
+class SuperClass : public GarbageCollected<SuperClass> {
+ public:
+  explicit SuperClass(PointsBack* points_back) : points_back_(points_back) {
+    points_back_->SetBackPointer(this);
+    ++alive_count_;
+  }
+  virtual ~SuperClass() { --alive_count_; }
+
+  void DoStuff(SuperClass* target,
+               PointsBack* points_back,
+               int super_class_count) {
+    TestSupportingGC::ConservativelyCollectGarbage();
+    EXPECT_EQ(points_back, target->GetPointsBack());
+    EXPECT_EQ(super_class_count, SuperClass::alive_count_);
+  }
+
+  virtual void Trace(Visitor* visitor) const { visitor->Trace(points_back_); }
+
+  PointsBack* GetPointsBack() const { return points_back_.Get(); }
+
+  static int alive_count_;
+
+ private:
+  Member<PointsBack> points_back_;
+};
+
+int SuperClass::alive_count_ = 0;
+class SubData final : public GarbageCollected<SubData> {
+ public:
+  SubData() { ++alive_count_; }
+  ~SubData() { --alive_count_; }
+
+  void Trace(Visitor* visitor) const {}
+
+  static int alive_count_;
+};
+int SubData::alive_count_ = 0;
+
+class SubClass : public SuperClass {
+ public:
+  explicit SubClass(PointsBack* points_back)
+      : SuperClass(points_back), data_(MakeGarbageCollected<SubData>()) {
+    ++alive_count_;
+  }
+  ~SubClass() override { --alive_count_; }
+
+  void Trace(Visitor* visitor) const override {
+    visitor->Trace(data_);
+    SuperClass::Trace(visitor);
+  }
+
+  static int alive_count_;
+
+ private:
+  Member<SubData> data_;
+};
+int SubClass::alive_count_ = 0;
+}  // namespace
+
+TEST_F(HeapInternalsTest, Transition) {
+  {
+    RefCountedAndGarbageCollected::destructor_calls_ = 0;
+    Persistent<RefCountedAndGarbageCollected> ref_counted =
+        MakeGarbageCollected<RefCountedAndGarbageCollected>();
+    PreciselyCollectGarbage();
+    EXPECT_EQ(0, RefCountedAndGarbageCollected::destructor_calls_);
+  }
+  PreciselyCollectGarbage();
+  EXPECT_EQ(1, RefCountedAndGarbageCollected::destructor_calls_);
+  RefCountedAndGarbageCollected::destructor_calls_ = 0;
+
+  Persistent<PointsBack> points_back1 = MakeGarbageCollected<PointsBack>();
+  Persistent<PointsBack> points_back2 = MakeGarbageCollected<PointsBack>();
+  Persistent<SuperClass> super_class =
+      MakeGarbageCollected<SuperClass>(points_back1);
+  Persistent<SubClass> sub_class = MakeGarbageCollected<SubClass>(points_back2);
+  EXPECT_EQ(2, PointsBack::alive_count_);
+  EXPECT_EQ(2, SuperClass::alive_count_);
+  EXPECT_EQ(1, SubClass::alive_count_);
+  EXPECT_EQ(1, SubData::alive_count_);
+
+  PreciselyCollectGarbage();
+  EXPECT_EQ(0, RefCountedAndGarbageCollected::destructor_calls_);
+  EXPECT_EQ(2, PointsBack::alive_count_);
+  EXPECT_EQ(2, SuperClass::alive_count_);
+  EXPECT_EQ(1, SubClass::alive_count_);
+  EXPECT_EQ(1, SubData::alive_count_);
+
+  super_class->DoStuff(super_class.Release(), points_back1.Get(), 2);
+  PreciselyCollectGarbage();
+  EXPECT_EQ(2, PointsBack::alive_count_);
+  EXPECT_EQ(1, SuperClass::alive_count_);
+  EXPECT_EQ(1, SubClass::alive_count_);
+  EXPECT_EQ(1, SubData::alive_count_);
+  EXPECT_EQ(nullptr, points_back1->BackPointer());
+
+  points_back1.Release();
+  PreciselyCollectGarbage();
+  EXPECT_EQ(1, PointsBack::alive_count_);
+  EXPECT_EQ(1, SuperClass::alive_count_);
+  EXPECT_EQ(1, SubClass::alive_count_);
+  EXPECT_EQ(1, SubData::alive_count_);
+
+  sub_class->DoStuff(sub_class.Release(), points_back2.Get(), 1);
+  PreciselyCollectGarbage();
+  EXPECT_EQ(1, PointsBack::alive_count_);
+  EXPECT_EQ(0, SuperClass::alive_count_);
+  EXPECT_EQ(0, SubClass::alive_count_);
+  EXPECT_EQ(0, SubData::alive_count_);
+  EXPECT_EQ(nullptr, points_back2->BackPointer());
+
+  points_back2.Release();
+  PreciselyCollectGarbage();
+  EXPECT_EQ(0, PointsBack::alive_count_);
+  EXPECT_EQ(0, SuperClass::alive_count_);
+  EXPECT_EQ(0, SubClass::alive_count_);
+  EXPECT_EQ(0, SubData::alive_count_);
+
+  EXPECT_TRUE(super_class == sub_class);
+}
+
+namespace {
+class DynamicallySizedObject : public GarbageCollected<DynamicallySizedObject> {
+ public:
+  static DynamicallySizedObject* Create(size_t size) {
+    return MakeGarbageCollected<DynamicallySizedObject>(
+        AdditionalBytes(size - sizeof(DynamicallySizedObject)));
+  }
+
+  uint8_t Get(int i) { return *(reinterpret_cast<uint8_t*>(this) + i); }
+
+  void Trace(Visitor* visitor) const {}
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, BasicFunctionality) {
+  ThreadHeap& heap = ThreadState::Current()->Heap();
+  ClearOutOldGarbage();
+  size_t initial_object_payload_size = heap.ObjectPayloadSizeForTesting();
+  {
+    wtf_size_t slack = 0;
+
+    // When the test starts there may already have been leaked some memory
+    // on the heap, so we establish a base line.
+    size_t base_level = initial_object_payload_size;
+    bool test_pages_allocated = !base_level;
+    if (test_pages_allocated)
+      EXPECT_EQ(0ul, heap.stats_collector()->allocated_space_bytes());
+
+    // This allocates objects on the general heap which should add a page of
+    // memory.
+    DynamicallySizedObject* alloc32 = DynamicallySizedObject::Create(32);
+    slack += 4;
+    memset(alloc32, 40, 32);
+    DynamicallySizedObject* alloc64 = DynamicallySizedObject::Create(64);
+    slack += 4;
+    memset(alloc64, 27, 64);
+
+    size_t total = 96;
+
+    CheckWithSlack(base_level + total, heap.ObjectPayloadSizeForTesting(),
+                   slack);
+    if (test_pages_allocated) {
+      EXPECT_EQ(kBlinkPageSize * 2,
+                heap.stats_collector()->allocated_space_bytes());
+    }
+
+    EXPECT_EQ(alloc32->Get(0), 40);
+    EXPECT_EQ(alloc32->Get(31), 40);
+    EXPECT_EQ(alloc64->Get(0), 27);
+    EXPECT_EQ(alloc64->Get(63), 27);
+
+    ConservativelyCollectGarbage();
+
+    EXPECT_EQ(alloc32->Get(0), 40);
+    EXPECT_EQ(alloc32->Get(31), 40);
+    EXPECT_EQ(alloc64->Get(0), 27);
+    EXPECT_EQ(alloc64->Get(63), 27);
+  }
+
+  ClearOutOldGarbage();
+  size_t total = 0;
+  wtf_size_t slack = 0;
+  size_t base_level = heap.ObjectPayloadSizeForTesting();
+  bool test_pages_allocated = !base_level;
+  if (test_pages_allocated)
+    EXPECT_EQ(0ul, heap.stats_collector()->allocated_space_bytes());
+
+  size_t big = 1008;
+  Persistent<DynamicallySizedObject> big_area =
+      DynamicallySizedObject::Create(big);
+  total += big;
+  slack += 4;
+
+  size_t persistent_count = 0;
+  const size_t kNumPersistents = 100000;
+  Persistent<DynamicallySizedObject>* persistents[kNumPersistents];
+
+  for (int i = 0; i < 1000; i++) {
+    size_t size = 128 + i * 8;
+    total += size;
+    persistents[persistent_count++] = new Persistent<DynamicallySizedObject>(
+        DynamicallySizedObject::Create(size));
+    slack += 4;
+    // The allocations in the loop may trigger GC with lazy sweeping.
+    if (ThreadState::Current()->IsSweepingInProgress())
+      ThreadState::Current()->CompleteSweep();
+    CheckWithSlack(base_level + total, heap.ObjectPayloadSizeForTesting(),
+                   slack);
+    if (test_pages_allocated) {
+      EXPECT_EQ(0ul, heap.stats_collector()->allocated_space_bytes() &
+                         (kBlinkPageSize - 1));
+    }
+  }
+
+  {
+    DynamicallySizedObject* alloc32b(DynamicallySizedObject::Create(32));
+    slack += 4;
+    memset(alloc32b, 40, 32);
+    DynamicallySizedObject* alloc64b(DynamicallySizedObject::Create(64));
+    slack += 4;
+    memset(alloc64b, 27, 64);
+    EXPECT_TRUE(alloc32b != alloc64b);
+
+    total += 96;
+    CheckWithSlack(base_level + total, heap.ObjectPayloadSizeForTesting(),
+                   slack);
+    if (test_pages_allocated) {
+      EXPECT_EQ(0ul, heap.stats_collector()->allocated_space_bytes() &
+                         (kBlinkPageSize - 1));
+    }
+  }
+
+  ClearOutOldGarbage();
+  total -= 96;
+  slack -= 8;
+  if (test_pages_allocated) {
+    EXPECT_EQ(0ul, heap.stats_collector()->allocated_space_bytes() &
+                       (kBlinkPageSize - 1));
+  }
+
+  // Clear the persistent, so that the big area will be garbage collected.
+  big_area.Release();
+  ClearOutOldGarbage();
+
+  total -= big;
+  slack -= 4;
+  CheckWithSlack(base_level + total, heap.ObjectPayloadSizeForTesting(), slack);
+  if (test_pages_allocated) {
+    EXPECT_EQ(0ul, heap.stats_collector()->allocated_space_bytes() &
+                       (kBlinkPageSize - 1));
+  }
+
+  CheckWithSlack(base_level + total, heap.ObjectPayloadSizeForTesting(), slack);
+  if (test_pages_allocated) {
+    EXPECT_EQ(0ul, heap.stats_collector()->allocated_space_bytes() &
+                       (kBlinkPageSize - 1));
+  }
+
+  for (size_t i = 0; i < persistent_count; i++) {
+    delete persistents[i];
+    persistents[i] = nullptr;
+  }
+}
+
+namespace {
+class HeapAllocatedArray : public GarbageCollected<HeapAllocatedArray> {
+ public:
+  HeapAllocatedArray() {
+    for (int i = 0; i < kArraySize; ++i) {
+      array_[i] = i % 128;
+    }
+  }
+
+  int8_t at(size_t i) { return array_[i]; }
+  void Trace(Visitor* visitor) const {}
+
+ private:
+  static const int kArraySize = 1000;
+  int8_t array_[kArraySize];
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, SimpleAllocation) {
+  ThreadHeap& heap = ThreadState::Current()->Heap();
+  ClearOutOldGarbage();
+  EXPECT_EQ(0ul, heap.ObjectPayloadSizeForTesting());
+
+  // Allocate an object in the heap.
+  HeapAllocatedArray* array = MakeGarbageCollected<HeapAllocatedArray>();
+  EXPECT_TRUE(heap.ObjectPayloadSizeForTesting() >= sizeof(HeapAllocatedArray));
+
+  // Sanity check of the contents in the heap.
+  EXPECT_EQ(0, array->at(0));
+  EXPECT_EQ(42, array->at(42));
+  EXPECT_EQ(0, array->at(128));
+  EXPECT_EQ(999 % 128, array->at(999));
+}
+
+namespace {
+class TraceCounter final : public GarbageCollected<TraceCounter> {
+ public:
+  void Trace(Visitor* visitor) const { trace_count_++; }
+  int TraceCount() const { return trace_count_; }
+
+ private:
+  mutable int trace_count_ = 0;
+};
+
+class ClassWithMember : public GarbageCollected<ClassWithMember> {
+ public:
+  ClassWithMember() : trace_counter_(MakeGarbageCollected<TraceCounter>()) {}
+
+  void Trace(Visitor* visitor) const { visitor->Trace(trace_counter_); }
+  int TraceCount() const { return trace_counter_->TraceCount(); }
+
+ private:
+  Member<TraceCounter> trace_counter_;
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, SimplePersistent) {
+  Persistent<TraceCounter> trace_counter = MakeGarbageCollected<TraceCounter>();
+  EXPECT_EQ(0, trace_counter->TraceCount());
+  PreciselyCollectGarbage();
+  int saved_trace_count = trace_counter->TraceCount();
+  EXPECT_LT(0, saved_trace_count);
+
+  Persistent<ClassWithMember> class_with_member =
+      MakeGarbageCollected<ClassWithMember>();
+  EXPECT_EQ(0, class_with_member->TraceCount());
+  PreciselyCollectGarbage();
+  EXPECT_LT(0, class_with_member->TraceCount());
+  EXPECT_LT(saved_trace_count, trace_counter->TraceCount());
+}
+
+namespace {
+class SimpleFinalizedObject final
+    : public GarbageCollected<SimpleFinalizedObject> {
+ public:
+  SimpleFinalizedObject() = default;
+  ~SimpleFinalizedObject() { ++destructor_calls_; }
+
+  static int destructor_calls_;
+
+  void Trace(Visitor* visitor) const {}
+};
+int SimpleFinalizedObject::destructor_calls_ = 0;
+}  // namespace
+
+TEST_F(HeapInternalsTest, SimpleFinalization) {
+  ClearOutOldGarbage();
+  {
+    SimpleFinalizedObject::destructor_calls_ = 0;
+    Persistent<SimpleFinalizedObject> finalized =
+        MakeGarbageCollected<SimpleFinalizedObject>();
+    EXPECT_EQ(0, SimpleFinalizedObject::destructor_calls_);
+    PreciselyCollectGarbage();
+    EXPECT_EQ(0, SimpleFinalizedObject::destructor_calls_);
+  }
+
+  PreciselyCollectGarbage();
+  EXPECT_EQ(1, SimpleFinalizedObject::destructor_calls_);
+}
+
+#if DCHECK_IS_ON() || defined(LEAK_SANITIZER) || defined(ADDRESS_SANITIZER)
+TEST_F(HeapInternalsTest, FreelistReuse) {
+  ClearOutOldGarbage();
+
+  for (int i = 0; i < 100; i++)
+    MakeGarbageCollected<IntWrapper>(i);
+  IntWrapper* p1 = MakeGarbageCollected<IntWrapper>(100);
+  PreciselyCollectGarbage();
+  // In non-production builds, we delay reusing freed memory for at least
+  // one GC cycle.
+  for (int i = 0; i < 100; i++) {
+    IntWrapper* p2 = MakeGarbageCollected<IntWrapper>(i);
+    EXPECT_NE(p1, p2);
+  }
+
+  PreciselyCollectGarbage();
+  PreciselyCollectGarbage();
+  // Now the freed memory in the first GC should be reused.
+  bool reused_memory_found = false;
+  for (int i = 0; i < 10000; i++) {
+    IntWrapper* p2 = MakeGarbageCollected<IntWrapper>(i);
+    if (p1 == p2) {
+      reused_memory_found = true;
+      break;
+    }
+  }
+  EXPECT_TRUE(reused_memory_found);
+}
+#endif
+
+TEST_F(HeapInternalsTest, LazySweepingPages) {
+  ClearOutOldGarbage();
+
+  SimpleFinalizedObject::destructor_calls_ = 0;
+  EXPECT_EQ(0, SimpleFinalizedObject::destructor_calls_);
+  for (int i = 0; i < 1000; i++)
+    MakeGarbageCollected<SimpleFinalizedObject>();
+  ThreadState::Current()->CollectGarbageForTesting(
+      BlinkGC::CollectionType::kMajor, BlinkGC::kNoHeapPointersOnStack,
+      BlinkGC::kAtomicMarking, BlinkGC::kConcurrentAndLazySweeping,
+      BlinkGC::GCReason::kForcedGCForTesting);
+  EXPECT_EQ(0, SimpleFinalizedObject::destructor_calls_);
+  for (int i = 0; i < 10000; i++)
+    MakeGarbageCollected<SimpleFinalizedObject>();
+  EXPECT_EQ(1000, SimpleFinalizedObject::destructor_calls_);
+  PreciselyCollectGarbage();
+  EXPECT_EQ(11000, SimpleFinalizedObject::destructor_calls_);
+}
+
+namespace {
+class HeapTestSuperClass : public GarbageCollected<HeapTestSuperClass> {
+ public:
+  HeapTestSuperClass() = default;
+  virtual ~HeapTestSuperClass() { ++destructor_calls_; }
+
+  static int destructor_calls_;
+  void Trace(Visitor* visitor) const {}
+};
+int HeapTestSuperClass::destructor_calls_ = 0;
+
+class HeapTestOtherSuperClass {
+ public:
+  int payload;
+};
+
+class HeapTestSubClass : public HeapTestSuperClass,
+                         public HeapTestOtherSuperClass {
+  static constexpr size_t kClassMagic = 0xABCDDBCA;
+
+ public:
+  HeapTestSubClass() : magic_(kClassMagic) {}
+  ~HeapTestSubClass() override {
+    EXPECT_EQ(kClassMagic, magic_);
+    ++destructor_calls_;
+  }
+
+  static int destructor_calls_;
+
+ private:
+  const size_t magic_;
+};
+int HeapTestSubClass::destructor_calls_ = 0;
+constexpr size_t HeapTestSubClass::kClassMagic;
+}  // namespace
+
+TEST_F(HeapInternalsTest, Finalization) {
+  {
+    HeapTestSubClass::destructor_calls_ = 0;
+    HeapTestSuperClass::destructor_calls_ = 0;
+    auto* t1 = MakeGarbageCollected<HeapTestSubClass>();
+    auto* t2 = MakeGarbageCollected<HeapTestSubClass>();
+    auto* t3 = MakeGarbageCollected<HeapTestSuperClass>();
+    // FIXME(oilpan): Ignore unused variables.
+    (void)t1;
+    (void)t2;
+    (void)t3;
+  }
+  // Nothing is marked so the GC should free everything and call
+  // the finalizer on all three objects.
+  PreciselyCollectGarbage();
+  EXPECT_EQ(2, HeapTestSubClass::destructor_calls_);
+  EXPECT_EQ(3, HeapTestSuperClass::destructor_calls_);
+  // Destructors not called again when GCing again.
+  PreciselyCollectGarbage();
+  EXPECT_EQ(2, HeapTestSubClass::destructor_calls_);
+  EXPECT_EQ(3, HeapTestSuperClass::destructor_calls_);
+}
+
+namespace {
+class IntNode : public GarbageCollected<IntNode> {
+ public:
+  template <typename T>
+  static void* AllocateObject(size_t size) {
+    ThreadState* state = ThreadState::Current();
+    const char* type_name = WTF_HEAP_PROFILER_TYPE_NAME(IntNode);
+    return state->Heap().AllocateOnArenaIndex(
+        state, size, BlinkGC::kNodeArenaIndex,
+        GCInfoTrait<GCInfoFoldedType<IntNode>>::Index(), type_name);
+  }
+
+  explicit IntNode(int i) : value_(i) {}
+
+  static IntNode* Create(int i) { return MakeGarbageCollected<IntNode>(i); }
+
+  void Trace(Visitor* visitor) const {}
+
+  int Value() { return value_; }
+
+ private:
+  int value_;
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, TypedArenaSanity) {
+  // We use TraceCounter for allocating an object on the general heap.
+  Persistent<TraceCounter> general_heap_object =
+      MakeGarbageCollected<TraceCounter>();
+  Persistent<IntNode> typed_heap_object = IntNode::Create(0);
+  EXPECT_NE(PageFromObject(general_heap_object.Get()),
+            PageFromObject(typed_heap_object.Get()));
+}
+
+TEST_F(HeapInternalsTest, NoAllocation) {
+  ThreadState* state = ThreadState::Current();
+  EXPECT_TRUE(state->IsAllocationAllowed());
+  {
+    // Disallow allocation
+    ThreadState::NoAllocationScope no_allocation_scope(state);
+    EXPECT_FALSE(state->IsAllocationAllowed());
+  }
+  EXPECT_TRUE(state->IsAllocationAllowed());
+}
+
+namespace {
+class Baz : public GarbageCollected<Baz> {
+ public:
+  explicit Baz(Bar* bar) : bar_(bar) {}
+
+  void Trace(Visitor* visitor) const { visitor->Trace(bar_); }
+
+  void Clear() { bar_.Release(); }
+
+  // willFinalize is called by FinalizationObserver.
+  void WillFinalize() { EXPECT_TRUE(!bar_->HasBeenFinalized()); }
+
+ private:
+  Member<Bar> bar_;
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, Members) {
+  ClearOutOldGarbage();
+  Bar::live_ = 0;
+  {
+    Persistent<Baz> h1;
+    Persistent<Baz> h2;
+    {
+      h1 = MakeGarbageCollected<Baz>(MakeGarbageCollected<Bar>());
+      PreciselyCollectGarbage();
+      EXPECT_EQ(1u, Bar::live_);
+      h2 = MakeGarbageCollected<Baz>(MakeGarbageCollected<Bar>());
+      PreciselyCollectGarbage();
+      EXPECT_EQ(2u, Bar::live_);
+    }
+    PreciselyCollectGarbage();
+    EXPECT_EQ(2u, Bar::live_);
+    h1->Clear();
+    PreciselyCollectGarbage();
+    EXPECT_EQ(1u, Bar::live_);
+  }
+  PreciselyCollectGarbage();
+  EXPECT_EQ(0u, Bar::live_);
+}
+
+namespace {
+class Foo final : public Bar {
+ public:
+  explicit Foo(Bar* bar) : bar_(bar), points_to_foo_(false) {}
+
+  explicit Foo(Foo* foo) : bar_(foo), points_to_foo_(true) {}
+
+  void Trace(Visitor* visitor) const override {
+    Bar::Trace(visitor);
+    if (points_to_foo_)
+      visitor->Trace(static_cast<const Foo*>(bar_.Get()));
+    else
+      visitor->Trace(bar_);
+  }
+
+ private:
+  const Member<Bar> bar_;
+  const bool points_to_foo_;
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, MarkTest) {
+  ClearOutOldGarbage();
+  {
+    Bar::live_ = 0;
+    Persistent<Bar> bar = MakeGarbageCollected<Bar>();
+#if DCHECK_IS_ON()
+    DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(bar));
+#endif
+    EXPECT_EQ(1u, Bar::live_);
+    {
+      auto* foo = MakeGarbageCollected<Foo>(bar);
+#if DCHECK_IS_ON()
+      DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(foo));
+#endif
+      EXPECT_EQ(2u, Bar::live_);
+      EXPECT_TRUE(reinterpret_cast<Address>(foo) !=
+                  reinterpret_cast<Address>(bar.Get()));
+      ConservativelyCollectGarbage();
+      EXPECT_TRUE(foo != bar);  // To make sure foo is kept alive.
+      EXPECT_EQ(2u, Bar::live_);
+    }
+    PreciselyCollectGarbage();
+    EXPECT_EQ(1u, Bar::live_);
+  }
+  PreciselyCollectGarbage();
+  EXPECT_EQ(0u, Bar::live_);
+}
+
+TEST_F(HeapInternalsTest, DeepTest) {
+  ClearOutOldGarbage();
+  const unsigned kDepth = 100000;
+  Bar::live_ = 0;
+  {
+    auto* bar = MakeGarbageCollected<Bar>();
+#if DCHECK_IS_ON()
+    DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(bar));
+#endif
+    auto* foo = MakeGarbageCollected<Foo>(bar);
+#if DCHECK_IS_ON()
+    DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(foo));
+#endif
+    EXPECT_EQ(2u, Bar::live_);
+    for (unsigned i = 0; i < kDepth; i++) {
+      auto* foo2 = MakeGarbageCollected<Foo>(foo);
+      foo = foo2;
+#if DCHECK_IS_ON()
+      DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(foo));
+#endif
+    }
+    EXPECT_EQ(kDepth + 2, Bar::live_);
+    ConservativelyCollectGarbage();
+    EXPECT_TRUE(foo != bar);  // To make sure foo and bar are kept alive.
+    EXPECT_EQ(kDepth + 2, Bar::live_);
+  }
+  PreciselyCollectGarbage();
+  EXPECT_EQ(0u, Bar::live_);
+}
+
+namespace {
+class ConstructorAllocation : public GarbageCollected<ConstructorAllocation> {
+ public:
+  ConstructorAllocation() {
+    int_wrapper_ = MakeGarbageCollected<IntWrapper>(42);
+  }
+
+  void Trace(Visitor* visitor) const { visitor->Trace(int_wrapper_); }
+
+ private:
+  Member<IntWrapper> int_wrapper_;
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, NestedAllocation) {
+  ThreadHeap& heap = ThreadState::Current()->Heap();
+  ClearOutOldGarbage();
+  size_t initial_object_payload_size = heap.ObjectPayloadSizeForTesting();
+  {
+    Persistent<ConstructorAllocation> constructor_allocation =
+        MakeGarbageCollected<ConstructorAllocation>();
+  }
+  ClearOutOldGarbage();
+  size_t after_free = heap.ObjectPayloadSizeForTesting();
+  EXPECT_TRUE(initial_object_payload_size == after_free);
+}
+
+namespace {
+class Weak final : public Bar {
+ public:
+  Weak(Bar* strong_bar, Bar* weak_bar)
+      : strong_bar_(strong_bar), weak_bar_(weak_bar) {}
+
+  void Trace(Visitor* visitor) const override {
+    Bar::Trace(visitor);
+    visitor->Trace(strong_bar_);
+    visitor->template RegisterWeakCallbackMethod<Weak, &Weak::ZapWeakMembers>(
+        this);
+  }
+
+  void ZapWeakMembers(const LivenessBroker& info) {
+    if (!info.IsHeapObjectAlive(weak_bar_))
+      weak_bar_ = nullptr;
+  }
+
+  bool StrongIsThere() { return !!strong_bar_; }
+  bool WeakIsThere() { return !!weak_bar_; }
+
+ private:
+  Member<Bar> strong_bar_;
+  UntracedMember<Bar> weak_bar_;
+};
+
+class WithWeakMember final : public Bar {
+ public:
+  WithWeakMember(Bar* strong_bar, Bar* weak_bar)
+      : strong_bar_(strong_bar), weak_bar_(weak_bar) {}
+
+  void Trace(Visitor* visitor) const override {
+    Bar::Trace(visitor);
+    visitor->Trace(strong_bar_);
+    visitor->Trace(weak_bar_);
+  }
+
+  bool StrongIsThere() { return !!strong_bar_; }
+  bool WeakIsThere() { return !!weak_bar_; }
+
+ private:
+  Member<Bar> strong_bar_;
+  WeakMember<Bar> weak_bar_;
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, WeakMembers) {
+  ClearOutOldGarbage();
+  Bar::live_ = 0;
+  {
+    Persistent<Bar> h1 = MakeGarbageCollected<Bar>();
+    Persistent<Weak> h4;
+    Persistent<WithWeakMember> h5;
+    PreciselyCollectGarbage();
+    ASSERT_EQ(1u, Bar::live_);  // h1 is live.
+    {
+      auto* h2 = MakeGarbageCollected<Bar>();
+      auto* h3 = MakeGarbageCollected<Bar>();
+      h4 = MakeGarbageCollected<Weak>(h2, h3);
+      h5 = MakeGarbageCollected<WithWeakMember>(h2, h3);
+      ConservativelyCollectGarbage();
+      EXPECT_EQ(5u, Bar::live_);  // The on-stack pointer keeps h3 alive.
+      EXPECT_FALSE(h3->HasBeenFinalized());
+      EXPECT_TRUE(h4->StrongIsThere());
+      EXPECT_TRUE(h4->WeakIsThere());
+      EXPECT_TRUE(h5->StrongIsThere());
+      EXPECT_TRUE(h5->WeakIsThere());
+    }
+    // h3 is collected, weak pointers from h4 and h5 don't keep it alive.
+    PreciselyCollectGarbage();
+    EXPECT_EQ(4u, Bar::live_);
+    EXPECT_TRUE(h4->StrongIsThere());
+    EXPECT_FALSE(h4->WeakIsThere());  // h3 is gone from weak pointer.
+    EXPECT_TRUE(h5->StrongIsThere());
+    EXPECT_FALSE(h5->WeakIsThere());  // h3 is gone from weak pointer.
+    h1.Release();                     // Zero out h1.
+    PreciselyCollectGarbage();
+    EXPECT_EQ(3u, Bar::live_);         // Only h4, h5 and h2 are left.
+    EXPECT_TRUE(h4->StrongIsThere());  // h2 is still pointed to from h4.
+    EXPECT_TRUE(h5->StrongIsThere());  // h2 is still pointed to from h5.
+  }
+  // h4 and h5 have gone out of scope now and they were keeping h2 alive.
+  PreciselyCollectGarbage();
+  EXPECT_EQ(0u, Bar::live_);  // All gone.
+}
+
+namespace {
+class Observable final : public GarbageCollected<Observable> {
+  USING_PRE_FINALIZER(Observable, WillFinalize);
+
+ public:
+  explicit Observable(Bar* bar) : bar_(bar), was_destructed_(false) {}
+  ~Observable() { was_destructed_ = true; }
+  void Trace(Visitor* visitor) const { visitor->Trace(bar_); }
+
+  // willFinalize is called by FinalizationObserver. willFinalize can touch
+  // other on-heap objects.
+  void WillFinalize() {
+    EXPECT_FALSE(was_destructed_);
+    EXPECT_FALSE(bar_->HasBeenFinalized());
+    will_finalize_was_called_ = true;
+  }
+  static bool will_finalize_was_called_;
+
+ private:
+  Member<Bar> bar_;
+  bool was_destructed_;
+};
+bool Observable::will_finalize_was_called_ = false;
+
+template <typename T>
+class FinalizationObserver : public GarbageCollected<FinalizationObserver<T>> {
+ public:
+  explicit FinalizationObserver(T* data)
+      : data_(data), did_call_will_finalize_(false) {}
+
+  bool DidCallWillFinalize() const { return did_call_will_finalize_; }
+
+  void Trace(Visitor* visitor) const {
+    visitor->template RegisterWeakCallbackMethod<
+        FinalizationObserver<T>, &FinalizationObserver<T>::ZapWeakMembers>(
+        this);
+  }
+
+  void ZapWeakMembers(const LivenessBroker& info) {
+    if (data_ && !info.IsHeapObjectAlive(data_)) {
+      data_->WillFinalize();
+      data_ = nullptr;
+      did_call_will_finalize_ = true;
+    }
+  }
+
+ private:
+  UntracedMember<T> data_;
+  bool did_call_will_finalize_;
+};
+
+class FinalizationObserverWithHashMap {
+ public:
+  typedef HeapHashMap<WeakMember<Observable>,
+                      std::unique_ptr<FinalizationObserverWithHashMap>>
+      ObserverMap;
+
+  explicit FinalizationObserverWithHashMap(Observable* target)
+      : target_(target) {}
+  ~FinalizationObserverWithHashMap() {
+    target_->WillFinalize();
+    did_call_will_finalize_ = true;
+  }
+
+  static ObserverMap& Observe(Observable* target) {
+    ObserverMap& map = Observers();
+    ObserverMap::AddResult result = map.insert(target, nullptr);
+    if (result.is_new_entry) {
+      result.stored_value->value =
+          std::make_unique<FinalizationObserverWithHashMap>(target);
+    } else {
+      DCHECK(result.stored_value->value);
+    }
+    return map;
+  }
+
+  static void ClearObservers() {
+    delete observer_map_;
+    observer_map_ = nullptr;
+  }
+
+  static bool did_call_will_finalize_;
+
+ private:
+  static ObserverMap& Observers() {
+    if (!observer_map_) {
+      observer_map_ =
+          new Persistent<ObserverMap>(MakeGarbageCollected<ObserverMap>());
+    }
+    return **observer_map_;
+  }
+
+  UntracedMember<Observable> target_;
+  static Persistent<ObserverMap>* observer_map_;
+};
+bool FinalizationObserverWithHashMap::did_call_will_finalize_ = false;
+Persistent<FinalizationObserverWithHashMap::ObserverMap>*
+    FinalizationObserverWithHashMap::observer_map_;
+}  // namespace
+
+TEST_F(HeapInternalsTest, FinalizationObserver) {
+  Persistent<FinalizationObserver<Observable>> o;
+  {
+    auto* foo = MakeGarbageCollected<Observable>(MakeGarbageCollected<Bar>());
+    // |o| observes |foo|.
+    o = MakeGarbageCollected<FinalizationObserver<Observable>>(foo);
+  }
+  // FinalizationObserver doesn't have a strong reference to |foo|. So |foo|
+  // and its member will be collected.
+  PreciselyCollectGarbage();
+  EXPECT_EQ(0u, Bar::live_);
+  EXPECT_TRUE(o->DidCallWillFinalize());
+
+  FinalizationObserverWithHashMap::did_call_will_finalize_ = false;
+  auto* foo = MakeGarbageCollected<Observable>(MakeGarbageCollected<Bar>());
+  FinalizationObserverWithHashMap::ObserverMap& map =
+      FinalizationObserverWithHashMap::Observe(foo);
+  EXPECT_EQ(1u, map.size());
+  foo = nullptr;
+  // FinalizationObserverWithHashMap doesn't have a strong reference to
+  // |foo|. So |foo| and its member will be collected.
+  PreciselyCollectGarbage();
+  EXPECT_EQ(0u, Bar::live_);
+  EXPECT_EQ(0u, map.size());
+  EXPECT_TRUE(FinalizationObserverWithHashMap::did_call_will_finalize_);
+
+  FinalizationObserverWithHashMap::ClearObservers();
+}
+
+TEST_F(HeapInternalsTest, PreFinalizer) {
+  Observable::will_finalize_was_called_ = false;
+  { MakeGarbageCollected<Observable>(MakeGarbageCollected<Bar>()); }
+  PreciselyCollectGarbage();
+  EXPECT_TRUE(Observable::will_finalize_was_called_);
+}
+
+namespace {
+class ObservableWithPreFinalizer final
+    : public GarbageCollected<ObservableWithPreFinalizer> {
+  USING_PRE_FINALIZER(ObservableWithPreFinalizer, Dispose);
+
+ public:
+  ~ObservableWithPreFinalizer() { was_destructed_ = true; }
+  void Trace(Visitor* visitor) const {}
+  void Dispose() {
+    EXPECT_FALSE(was_destructed_);
+    dispose_was_called_ = true;
+  }
+  static bool dispose_was_called_;
+
+ protected:
+  bool was_destructed_ = false;
+};
+bool ObservableWithPreFinalizer::dispose_was_called_ = false;
+}  // namespace
+
+TEST_F(HeapInternalsTest, PreFinalizerUnregistersItself) {
+  ObservableWithPreFinalizer::dispose_was_called_ = false;
+  MakeGarbageCollected<ObservableWithPreFinalizer>();
+  PreciselyCollectGarbage();
+  EXPECT_TRUE(ObservableWithPreFinalizer::dispose_was_called_);
+  // Don't crash, and assertions don't fail.
+}
+
+namespace {
+bool g_dispose_was_called_for_pre_finalizer_base = false;
+bool g_dispose_was_called_for_pre_finalizer_mixin = false;
+bool g_dispose_was_called_for_pre_finalizer_sub_class = false;
+
+class PreFinalizerBase : public GarbageCollected<PreFinalizerBase> {
+  USING_PRE_FINALIZER(PreFinalizerBase, Dispose);
+
+ public:
+  virtual ~PreFinalizerBase() { was_destructed_ = true; }
+  virtual void Trace(Visitor* visitor) const {}
+  void Dispose() {
+    EXPECT_FALSE(g_dispose_was_called_for_pre_finalizer_base);
+    EXPECT_TRUE(g_dispose_was_called_for_pre_finalizer_sub_class);
+    EXPECT_TRUE(g_dispose_was_called_for_pre_finalizer_mixin);
+    EXPECT_FALSE(was_destructed_);
+    g_dispose_was_called_for_pre_finalizer_base = true;
+  }
+
+ protected:
+  bool was_destructed_ = false;
+};
+
+class PreFinalizerMixin : public GarbageCollectedMixin {
+  USING_PRE_FINALIZER(PreFinalizerMixin, Dispose);
+
+ public:
+  ~PreFinalizerMixin() { was_destructed_ = true; }
+  void Trace(Visitor* visitor) const override {}
+  void Dispose() {
+    EXPECT_FALSE(g_dispose_was_called_for_pre_finalizer_base);
+    EXPECT_TRUE(g_dispose_was_called_for_pre_finalizer_sub_class);
+    EXPECT_FALSE(g_dispose_was_called_for_pre_finalizer_mixin);
+    EXPECT_FALSE(was_destructed_);
+    g_dispose_was_called_for_pre_finalizer_mixin = true;
+  }
+
+ protected:
+  bool was_destructed_ = false;
+};
+
+class PreFinalizerSubClass : public PreFinalizerBase, public PreFinalizerMixin {
+  USING_PRE_FINALIZER(PreFinalizerSubClass, Dispose);
+
+ public:
+  ~PreFinalizerSubClass() override { was_destructed_ = true; }
+  void Trace(Visitor* visitor) const override {
+    PreFinalizerBase::Trace(visitor);
+    PreFinalizerMixin::Trace(visitor);
+  }
+  void Dispose() {
+    EXPECT_FALSE(g_dispose_was_called_for_pre_finalizer_base);
+    EXPECT_FALSE(g_dispose_was_called_for_pre_finalizer_sub_class);
+    EXPECT_FALSE(g_dispose_was_called_for_pre_finalizer_mixin);
+    EXPECT_FALSE(was_destructed_);
+    g_dispose_was_called_for_pre_finalizer_sub_class = true;
+  }
+
+ protected:
+  bool was_destructed_ = false;
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, NestedPreFinalizer) {
+  g_dispose_was_called_for_pre_finalizer_base = false;
+  g_dispose_was_called_for_pre_finalizer_sub_class = false;
+  g_dispose_was_called_for_pre_finalizer_mixin = false;
+  MakeGarbageCollected<PreFinalizerSubClass>();
+  PreciselyCollectGarbage();
+  EXPECT_TRUE(g_dispose_was_called_for_pre_finalizer_base);
+  EXPECT_TRUE(g_dispose_was_called_for_pre_finalizer_sub_class);
+  EXPECT_TRUE(g_dispose_was_called_for_pre_finalizer_mixin);
+  // Don't crash, and assertions don't fail.
+}
+
+TEST_F(HeapInternalsTest, Comparisons) {
+  Persistent<Bar> bar_persistent = MakeGarbageCollected<Bar>();
+  Persistent<Foo> foo_persistent = MakeGarbageCollected<Foo>(bar_persistent);
+  EXPECT_TRUE(bar_persistent != foo_persistent);
+  bar_persistent = foo_persistent;
+  EXPECT_TRUE(bar_persistent == foo_persistent);
+}
+
+namespace {
+class DisableHeapVerificationScope {
+ public:
+  explicit DisableHeapVerificationScope(const char*) {
+    ThreadState::Current()->EnterNoHeapVerificationScopeForTesting();
+  }
+  ~DisableHeapVerificationScope() {
+    ThreadState::Current()->LeaveNoHeapVerificationScopeForTesting();
+  }
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, GarbageCollectedMixin) {
+  ClearOutOldGarbage();
+
+  Persistent<UseMixin> usemixin = MakeGarbageCollected<UseMixin>();
+  EXPECT_EQ(0, UseMixin::trace_count_);
+  {
+    DisableHeapVerificationScope scope(
+        "Avoid tracing UseMixin during verification");
+    PreciselyCollectGarbage();
+  }
+  EXPECT_EQ(1, UseMixin::trace_count_);
+
+  Persistent<Mixin> mixin = usemixin;
+  usemixin = nullptr;
+  {
+    DisableHeapVerificationScope scope(
+        "Avoid tracing UseMixin during verification");
+    PreciselyCollectGarbage();
+  }
+  EXPECT_EQ(2, UseMixin::trace_count_);
+
+  Persistent<HeapHashSet<WeakMember<Mixin>>> weak_map =
+      MakeGarbageCollected<HeapHashSet<WeakMember<Mixin>>>();
+  weak_map->insert(MakeGarbageCollected<UseMixin>());
+  PreciselyCollectGarbage();
+  EXPECT_EQ(0u, weak_map->size());
+}
+
+namespace {
+class OneKiloByteObject final : public GarbageCollected<OneKiloByteObject> {
+ public:
+  ~OneKiloByteObject() { destructor_calls_++; }
+  char* Data() { return data_; }
+  void Trace(Visitor* visitor) const {}
+  static int destructor_calls_;
+
+ private:
+  static const size_t kLength = 1024;
+  char data_[kLength];
+};
+int OneKiloByteObject::destructor_calls_ = 0;
+
+class FinalizationAllocator final
+    : public GarbageCollected<FinalizationAllocator> {
+ public:
+  explicit FinalizationAllocator(Persistent<IntWrapper>* wrapper) {
+    wrapper_ = wrapper;
+  }
+
+  ~FinalizationAllocator() {
+    for (int i = 0; i < 10; ++i)
+      *wrapper_ = MakeGarbageCollected<IntWrapper>(42);
+    for (int i = 0; i < 512; ++i)
+      MakeGarbageCollected<OneKiloByteObject>();
+    for (int i = 0; i < 32; ++i)
+      MakeGarbageCollected<LargeHeapObject>();
+  }
+
+  void Trace(Visitor* visitor) const {}
+
+ private:
+  static Persistent<IntWrapper>* wrapper_;
+};
+
+Persistent<IntWrapper>* FinalizationAllocator::wrapper_;
+}  // namespace
+
+TEST_F(HeapInternalsTest, AllocationDuringFinalization) {
+  ClearOutOldGarbage();
+  IntWrapper::destructor_calls_ = 0;
+  OneKiloByteObject::destructor_calls_ = 0;
+  LargeHeapObject::destructor_calls_ = 0;
+
+  Persistent<IntWrapper> wrapper;
+  MakeGarbageCollected<FinalizationAllocator>(&wrapper);
+
+  PreciselyCollectGarbage();
+  EXPECT_EQ(0, IntWrapper::destructor_calls_);
+  EXPECT_EQ(0, OneKiloByteObject::destructor_calls_);
+  EXPECT_EQ(0, LargeHeapObject::destructor_calls_);
+  // Check that the wrapper allocated during finalization is not
+  // swept away and zapped later in the same sweeping phase.
+  EXPECT_EQ(42, wrapper->Value());
+
+  wrapper.Clear();
+  PreciselyCollectGarbage();
+  // The 42 IntWrappers were the ones allocated in ~FinalizationAllocator
+  // and the ones allocated in LargeHeapObject.
+  EXPECT_EQ(42, IntWrapper::destructor_calls_);
+  EXPECT_EQ(512, OneKiloByteObject::destructor_calls_);
+  EXPECT_EQ(32, LargeHeapObject::destructor_calls_);
+}
+
+namespace {
+class MixinInstanceWithoutTrace
+    : public GarbageCollected<MixinInstanceWithoutTrace>,
+      public MixinA {
+ public:
+  MixinInstanceWithoutTrace() = default;
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, MixinInstanceWithoutTrace) {
+  // Verify that a mixin instance without any traceable
+  // references inherits the mixin's trace implementation.
+  ClearOutOldGarbage();
+  MixinA::trace_count_ = 0;
+  MixinInstanceWithoutTrace* obj =
+      MakeGarbageCollected<MixinInstanceWithoutTrace>();
+  int saved_trace_count = 0;
+  {
+    Persistent<MixinA> a = obj;
+    PreciselyCollectGarbage();
+    saved_trace_count = MixinA::trace_count_;
+    EXPECT_LT(0, saved_trace_count);
+  }
+  {
+    Persistent<MixinInstanceWithoutTrace> b = obj;
+    PreciselyCollectGarbage();
+    EXPECT_LT(saved_trace_count, MixinA::trace_count_);
+    saved_trace_count = MixinA::trace_count_;
+  }
+  PreciselyCollectGarbage();
+  // Oilpan might still call trace on dead objects for various reasons which is
+  // valid before sweeping started.
+  EXPECT_LE(saved_trace_count, MixinA::trace_count_);
+}
+
+namespace {
+class PartObjectWithVirtualMethod {
+ public:
+  virtual void Trace(Visitor* visitor) const {}
+};
+
+class ObjectWithVirtualPartObject
+    : public GarbageCollected<ObjectWithVirtualPartObject> {
+ public:
+  ObjectWithVirtualPartObject() : dummy_(AllocateAndReturnBool()) {}
+  void Trace(Visitor* visitor) const { visitor->Trace(part_); }
+
+ private:
+  bool dummy_;
+  PartObjectWithVirtualMethod part_;
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, PartObjectWithVirtualMethod) {
+  ObjectWithVirtualPartObject* object =
+      MakeGarbageCollected<ObjectWithVirtualPartObject>();
+  EXPECT_TRUE(object);
+}
+
+namespace {
+class NonNodeAllocatingNodeInDestructor final
+    : public GarbageCollected<NonNodeAllocatingNodeInDestructor> {
+ public:
+  ~NonNodeAllocatingNodeInDestructor() {
+    node_ = new Persistent<IntNode>(IntNode::Create(10));
+  }
+
+  void Trace(Visitor* visitor) const {}
+
+  static Persistent<IntNode>* node_;
+};
+
+Persistent<IntNode>* NonNodeAllocatingNodeInDestructor::node_ = nullptr;
+}  // namespace
+
+TEST_F(HeapInternalsTest, NonNodeAllocatingNodeInDestructor) {
+  MakeGarbageCollected<NonNodeAllocatingNodeInDestructor>();
+  PreciselyCollectGarbage();
+  EXPECT_EQ(10, (*NonNodeAllocatingNodeInDestructor::node_)->Value());
+  delete NonNodeAllocatingNodeInDestructor::node_;
+  NonNodeAllocatingNodeInDestructor::node_ = nullptr;
+}
+
+namespace {
+class WeakPersistentHolder final {
+ public:
+  explicit WeakPersistentHolder(IntWrapper* object) : object_(object) {}
+  IntWrapper* Object() const { return object_; }
+
+ private:
+  WeakPersistent<IntWrapper> object_;
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, WeakPersistent) {
+  Persistent<IntWrapper> object = MakeGarbageCollected<IntWrapper>(20);
+  std::unique_ptr<WeakPersistentHolder> holder =
+      std::make_unique<WeakPersistentHolder>(object);
+  PreciselyCollectGarbage();
+  EXPECT_TRUE(holder->Object());
+  object = nullptr;
+  PreciselyCollectGarbage();
+  EXPECT_FALSE(holder->Object());
+}
+
+namespace {
+class WithWeakConstObject final : public GarbageCollected<WithWeakConstObject> {
+ public:
+  explicit WithWeakConstObject(const IntWrapper* int_wrapper)
+      : wrapper_(int_wrapper) {}
+
+  void Trace(Visitor* visitor) const { visitor->Trace(wrapper_); }
+
+  const IntWrapper* Value() const { return wrapper_; }
+
+ private:
+  WeakMember<const IntWrapper> wrapper_;
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, TestWeakConstObject) {
+  Persistent<WithWeakConstObject> weak_wrapper;
+  {
+    const auto* wrapper = MakeGarbageCollected<IntWrapper>(42);
+    weak_wrapper = MakeGarbageCollected<WithWeakConstObject>(wrapper);
+    ConservativelyCollectGarbage();
+    EXPECT_EQ(wrapper, weak_wrapper->Value());
+    // Stub out any stack reference.
+    wrapper = nullptr;
+  }
+  PreciselyCollectGarbage();
+  EXPECT_EQ(nullptr, weak_wrapper->Value());
+}
+
+namespace {
+class EmptyMixin : public GarbageCollectedMixin {};
+class UseMixinFromLeftmostInherited : public UseMixin, public EmptyMixin {
+ public:
+  ~UseMixinFromLeftmostInherited() = default;
+};
+}  // namespace
+
+TEST_F(HeapInternalsTest, IsGarbageCollected) {
+  // Static sanity checks covering the correct operation of
+  // IsGarbageCollectedType<>.
+
+  static_assert(WTF::IsGarbageCollectedType<SimpleObject>::value,
+                "GarbageCollected<>");
+  static_assert(WTF::IsGarbageCollectedType<const SimpleObject>::value,
+                "const GarbageCollected<>");
+  static_assert(WTF::IsGarbageCollectedType<IntWrapper>::value,
+                "GarbageCollected<>");
+  static_assert(WTF::IsGarbageCollectedType<GarbageCollectedMixin>::value,
+                "GarbageCollectedMixin");
+  static_assert(WTF::IsGarbageCollectedType<const GarbageCollectedMixin>::value,
+                "const GarbageCollectedMixin");
+  static_assert(WTF::IsGarbageCollectedType<UseMixin>::value,
+                "GarbageCollectedMixin instance");
+  static_assert(WTF::IsGarbageCollectedType<const UseMixin>::value,
+                "const GarbageCollectedMixin instance");
+  static_assert(
+      WTF::IsGarbageCollectedType<UseMixinFromLeftmostInherited>::value,
+      "GarbageCollectedMixin derived instance");
+  static_assert(WTF::IsGarbageCollectedType<MultipleMixins>::value,
+                "GarbageCollectedMixin");
+
+  static_assert(
+      WTF::IsGarbageCollectedType<HeapHashSet<Member<IntWrapper>>>::value,
+      "HeapHashSet");
+  static_assert(
+      WTF::IsGarbageCollectedType<HeapLinkedHashSet<Member<IntWrapper>>>::value,
+      "HeapLinkedHashSet");
+  static_assert(
+      WTF::IsGarbageCollectedType<HeapListHashSet<Member<IntWrapper>>>::value,
+      "HeapListHashSet");
+  static_assert(WTF::IsGarbageCollectedType<
+                    HeapHashCountedSet<Member<IntWrapper>>>::value,
+                "HeapHashCountedSet");
+  static_assert(
+      WTF::IsGarbageCollectedType<HeapHashMap<int, Member<IntWrapper>>>::value,
+      "HeapHashMap");
+  static_assert(
+      WTF::IsGarbageCollectedType<HeapVector<Member<IntWrapper>>>::value,
+      "HeapVector");
+  static_assert(
+      WTF::IsGarbageCollectedType<HeapDeque<Member<IntWrapper>>>::value,
+      "HeapDeque");
+}
+
+TEST_F(HeapInternalsTest, GarbageCollectedInConstruction) {
+  using O = ObjectWithCallbackBeforeInitializer<IntWrapper>;
+  MakeGarbageCollected<O>(base::BindOnce([](O* thiz) {
+    CHECK(HeapObjectHeader::FromPayload(thiz)->IsInConstruction());
+  }));
+}
+
+TEST_F(HeapInternalsTest, GarbageCollectedMixinInConstruction) {
+  using O = ObjectWithMixinWithCallbackBeforeInitializer<IntWrapper>;
+  MakeGarbageCollected<O>(base::BindOnce([](O::Mixin* thiz) {
+    const HeapObjectHeader* const header =
+        HeapObjectHeader::FromInnerAddress(reinterpret_cast<Address>(thiz));
+    CHECK(header->IsInConstruction());
+  }));
+}
+
+TEST_F(HeapInternalsTest, PersistentAssignsDeletedValue) {
+  // Regression test: https://crbug.com/982313
+
+  Persistent<IntWrapper> deleted(WTF::kHashTableDeletedValue);
+  Persistent<IntWrapper> pre_initialized(MakeGarbageCollected<IntWrapper>(1));
+  pre_initialized = deleted;
+  PreciselyCollectGarbage();
+}
+
+namespace {
+class GCBase : public GarbageCollected<GCBase> {
+ public:
+  virtual void Trace(Visitor*) const {}
+};
+
+class GCDerived final : public GCBase {
+ public:
+  static int destructor_called;
+  void Trace(Visitor* visitor) const override { GCBase::Trace(visitor); }
+  ~GCDerived() { ++destructor_called; }
+};
+int GCDerived::destructor_called = 0;
+}  // namespace
+
+TEST_F(HeapInternalsTest, CallMostDerivedFinalizer) {
+  MakeGarbageCollected<GCDerived>();
+  PreciselyCollectGarbage();
+  EXPECT_EQ(1, GCDerived::destructor_called);
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/platform/heap/impl/thread_state.cc b/third_party/blink/renderer/platform/heap/impl/thread_state.cc
index cfb5442..eee311d6 100644
--- a/third_party/blink/renderer/platform/heap/impl/thread_state.cc
+++ b/third_party/blink/renderer/platform/heap/impl/thread_state.cc
@@ -45,9 +45,12 @@
 #include "third_party/blink/public/common/features.h"
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/renderer/platform/bindings/active_script_wrappable_base.h"
+#include "third_party/blink/renderer/platform/bindings/dom_wrapper_world.h"
 #include "third_party/blink/renderer/platform/bindings/runtime_call_stats.h"
 #include "third_party/blink/renderer/platform/bindings/script_forbidden_scope.h"
+#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
 #include "third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h"
+#include "third_party/blink/renderer/platform/bindings/wrapper_type_info.h"
 #include "third_party/blink/renderer/platform/heap/blink_gc.h"
 #include "third_party/blink/renderer/platform/heap/blink_gc_memory_dump_provider.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
@@ -220,6 +223,68 @@
   delete state;
 }
 
+namespace {
+
+// See platform/heap/v8_wrapper/thread_state.cc version for details.
+class BlinkRootsHandler final : public v8::EmbedderRootsHandler {
+ public:
+  explicit BlinkRootsHandler(ThreadState& thread_state)
+      : thread_state_(thread_state) {}
+  ~BlinkRootsHandler() final = default;
+
+  bool IsRoot(const v8::TracedReference<v8::Value>& handle) final {
+    const uint16_t class_id = handle.WrapperClassId();
+    // Stand-alone reference or kCustomWrappableId. Keep as root as
+    // we don't know better.
+    if (class_id != WrapperTypeInfo::kNodeClassId &&
+        class_id != WrapperTypeInfo::kObjectClassId)
+      return true;
+
+    const v8::TracedReference<v8::Object>& traced =
+        handle.template As<v8::Object>();
+    if (ToWrapperTypeInfo(traced)->IsActiveScriptWrappable() &&
+        ToScriptWrappable(traced)->HasPendingActivity()) {
+      return true;
+    }
+
+    if (ToScriptWrappable(traced)->HasEventListeners()) {
+      return true;
+    }
+
+    return false;
+  }
+
+  bool IsRoot(const v8::TracedGlobal<v8::Value>& handle) final {
+    CHECK(false) << "Blink does not use v8::TracedGlobal.";
+    return false;
+  }
+
+  void ResetRoot(const v8::TracedReference<v8::Value>& handle) final {
+    const uint16_t class_id = handle.WrapperClassId();
+    // Only consider handles that have not been treated as roots, see
+    // IsRootForNonTracingGCInternal.
+    if (class_id != WrapperTypeInfo::kNodeClassId &&
+        class_id != WrapperTypeInfo::kObjectClassId)
+      return;
+
+    // Clearing the wrapper below adjusts the DOM wrapper store which may
+    // re-allocate its backing. We have to avoid report memory to V8 as that may
+    // trigger GC during GC.
+    ThreadState::GCForbiddenScope no_gc(&thread_state_);
+    const v8::TracedReference<v8::Object>& traced = handle.As<v8::Object>();
+    bool success = DOMWrapperWorld::UnsetSpecificWrapperIfSet(
+        ToScriptWrappable(traced), traced);
+    // Since V8 found a handle, Blink needs to find it as well when trying to
+    // remove it.
+    CHECK(success);
+  }
+
+ private:
+  ThreadState& thread_state_;
+};
+
+}  // namespace
+
 void ThreadState::AttachToIsolate(
     v8::Isolate* isolate,
     V8BuildEmbedderGraphCallback v8_build_embedder_graph) {
@@ -232,6 +297,8 @@
   if (v8::HeapProfiler* profiler = isolate->GetHeapProfiler()) {
     profiler->AddBuildEmbedderGraphCallback(v8_build_embedder_graph, nullptr);
   }
+  embedder_roots_handler_ = std::make_unique<BlinkRootsHandler>(*this);
+  isolate_->SetEmbedderRootsHandler(embedder_roots_handler_.get());
 }
 
 void ThreadState::DetachFromIsolate() {
@@ -245,6 +312,7 @@
       profiler->RemoveBuildEmbedderGraphCallback(v8_build_embedder_graph_,
                                                  nullptr);
     }
+    isolate_->SetEmbedderRootsHandler(nullptr);
   }
   isolate_ = nullptr;
   v8_build_embedder_graph_ = nullptr;
diff --git a/third_party/blink/renderer/platform/heap/impl/thread_state.h b/third_party/blink/renderer/platform/heap/impl/thread_state.h
index 1a2054c1..d325e8f 100644
--- a/third_party/blink/renderer/platform/heap/impl/thread_state.h
+++ b/third_party/blink/renderer/platform/heap/impl/thread_state.h
@@ -613,6 +613,7 @@
   v8::Isolate* isolate_ = nullptr;
   V8BuildEmbedderGraphCallback v8_build_embedder_graph_ = nullptr;
   std::unique_ptr<UnifiedHeapController> unified_heap_controller_;
+  std::unique_ptr<v8::EmbedderRootsHandler> embedder_roots_handler_;
 
 #if defined(ADDRESS_SANITIZER)
   void* asan_fake_stack_;
diff --git a/third_party/blink/renderer/platform/heap/impl/unified_heap_controller.cc b/third_party/blink/renderer/platform/heap/impl/unified_heap_controller.cc
index 6e697d3d..a554849c 100644
--- a/third_party/blink/renderer/platform/heap/impl/unified_heap_controller.cc
+++ b/third_party/blink/renderer/platform/heap/impl/unified_heap_controller.cc
@@ -160,67 +160,6 @@
   return is_tracing_done_;
 }
 
-bool UnifiedHeapController::IsRootForNonTracingGC(
-    const v8::TracedReference<v8::Value>& handle) {
-  if (thread_state()->IsIncrementalMarking()) {
-    // We have a non-tracing GC while unified GC is in progress. Treat all
-    // objects as roots to avoid stale pointers in the marking worklists.
-    return true;
-  }
-  const uint16_t class_id = handle.WrapperClassId();
-  // Stand-alone reference or kCustomWrappableId. Keep as root as
-  // we don't know better.
-  if (class_id != WrapperTypeInfo::kNodeClassId &&
-      class_id != WrapperTypeInfo::kObjectClassId)
-    return true;
-
-  const v8::TracedReference<v8::Object>& traced =
-      handle.template As<v8::Object>();
-  if (ToWrapperTypeInfo(traced)->IsActiveScriptWrappable() &&
-      ToScriptWrappable(traced)->HasPendingActivity()) {
-    return true;
-  }
-
-  if (ToScriptWrappable(traced)->HasEventListeners()) {
-    return true;
-  }
-
-  return false;
-}
-
-void UnifiedHeapController::ResetHandleInNonTracingGC(
-    const v8::TracedReference<v8::Value>& handle) {
-  const uint16_t class_id = handle.WrapperClassId();
-  // Only consider handles that have not been treated as roots, see
-  // IsRootForNonTracingGCInternal.
-  if (class_id != WrapperTypeInfo::kNodeClassId &&
-      class_id != WrapperTypeInfo::kObjectClassId)
-    return;
-
-  // We should not reset any handles during an already running tracing
-  // collection. Resetting a handle could re-allocate a backing or trigger
-  // potential in place rehashing. Both operations may trigger write barriers by
-  // moving references. Such references may already be dead but not yet cleared
-  // which would result in reporting dead objects to V8.
-  DCHECK(!thread_state()->IsIncrementalMarking());
-  // Clearing the wrapper below adjusts the DOM wrapper store which may
-  // re-allocate its backing. We have to avoid report memory to V8 as that may
-  // trigger GC during GC.
-  ThreadState::GCForbiddenScope gc_forbidden(thread_state());
-  const v8::TracedReference<v8::Object>& traced = handle.As<v8::Object>();
-  bool success = DOMWrapperWorld::UnsetSpecificWrapperIfSet(
-      ToScriptWrappable(traced), traced);
-  // Since V8 found a handle, Blink needs to find it as well when trying to
-  // remove it.
-  CHECK(success);
-}
-
-bool UnifiedHeapController::IsRootForNonTracingGC(
-    const v8::TracedGlobal<v8::Value>& handle) {
-  CHECK(false) << "Blink does not use v8::TracedGlobal.";
-  return false;
-}
-
 void UnifiedHeapController::ReportBufferedAllocatedSizeIfPossible() {
   // Avoid reporting to V8 in the following conditions as that may trigger GC
   // finalizations where not allowed.
diff --git a/third_party/blink/renderer/platform/heap/impl/unified_heap_controller.h b/third_party/blink/renderer/platform/heap/impl/unified_heap_controller.h
index c42283c..d8cdbc91 100644
--- a/third_party/blink/renderer/platform/heap/impl/unified_heap_controller.h
+++ b/third_party/blink/renderer/platform/heap/impl/unified_heap_controller.h
@@ -45,9 +45,6 @@
   void RegisterV8References(const std::vector<std::pair<void*, void*>>&) final;
   bool AdvanceTracing(double) final;
   bool IsTracingDone() final;
-  bool IsRootForNonTracingGC(const v8::TracedReference<v8::Value>&) final;
-  bool IsRootForNonTracingGC(const v8::TracedGlobal<v8::Value>&) final;
-  void ResetHandleInNonTracingGC(const v8::TracedReference<v8::Value>&) final;
 
   ThreadState* thread_state() const { return thread_state_; }
 
diff --git a/third_party/blink/renderer/platform/heap/test/heap_test.cc b/third_party/blink/renderer/platform/heap/test/heap_test.cc
index 885c9b2..5d647d32 100644
--- a/third_party/blink/renderer/platform/heap/test/heap_test.cc
+++ b/third_party/blink/renderer/platform/heap/test/heap_test.cc
@@ -28,43 +28,21 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <algorithm>
-#include <atomic>
-#include <memory>
-#include <utility>
-
-#include "base/atomic_ref_count.h"
-#include "base/bind.h"
-#include "base/location.h"
-#include "base/memory/ptr_util.h"
-#include "base/synchronization/waitable_event.h"
 #include "base/test/bind.h"
 #include "base/test/scoped_feature_list.h"
-#include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/common/features.h"
 #include "third_party/blink/public/platform/platform.h"
-#include "third_party/blink/renderer/platform/bindings/buildflags.h"
 #include "third_party/blink/renderer/platform/bindings/script_forbidden_scope.h"
-#include "third_party/blink/renderer/platform/heap/collection_support/heap_linked_stack.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
-#include "third_party/blink/renderer/platform/heap/heap.h"
-#include "third_party/blink/renderer/platform/heap/heap_stats_collector.h"
 #include "third_party/blink/renderer/platform/heap/heap_test_objects.h"
 #include "third_party/blink/renderer/platform/heap/heap_test_utilities.h"
-#include "third_party/blink/renderer/platform/heap/impl/marking_visitor.h"
 #include "third_party/blink/renderer/platform/heap/self_keep_alive.h"
-#include "third_party/blink/renderer/platform/heap/thread_state.h"
-#include "third_party/blink/renderer/platform/heap/thread_state_scopes.h"
-#include "third_party/blink/renderer/platform/heap/visitor.h"
 #include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h"
 #include "third_party/blink/renderer/platform/scheduler/public/thread.h"
 #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h"
-#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
 #include "third_party/blink/renderer/platform/wtf/hash_traits.h"
-#include "third_party/blink/renderer/platform/wtf/linked_hash_set.h"
-#include "third_party/blink/renderer/platform/wtf/size_assertions.h"
 
 namespace blink {
 
@@ -95,7 +73,6 @@
   IntWrapper() = delete;
   int x_;
 };
-
 std::atomic_int IntWrapper::destructor_calls_{0};
 
 struct IntWrapperHash {
@@ -117,270 +94,227 @@
 static_assert(WTF::IsTraceable<HeapHashMap<int, IntWrapper>>::value,
               "HeapHashMap<int, IntWrapper> must be traceable.");
 
-class KeyWithCopyingMoveConstructor final {
-  DISALLOW_NEW();
-
- public:
-  struct Hash final {
-    STATIC_ONLY(Hash);
-
-   public:
-    static unsigned GetHash(const KeyWithCopyingMoveConstructor& key) {
-      return key.hash_;
-    }
-
-    static bool Equal(const KeyWithCopyingMoveConstructor& x,
-                      const KeyWithCopyingMoveConstructor& y) {
-      return x.hash_ == y.hash_;
-    }
-
-    static constexpr bool safe_to_compare_to_empty_or_deleted = true;
-  };
-
-  KeyWithCopyingMoveConstructor() = default;
-  KeyWithCopyingMoveConstructor(WTF::HashTableDeletedValueType) : hash_(-1) {}
-  ~KeyWithCopyingMoveConstructor() = default;
-  KeyWithCopyingMoveConstructor(unsigned hash, const String& string)
-      : hash_(hash), string_(string) {
-    DCHECK_NE(hash_, 0);
-    DCHECK_NE(hash_, -1);
-  }
-  KeyWithCopyingMoveConstructor(const KeyWithCopyingMoveConstructor&) = default;
-  // The move constructor delegates to the copy constructor intentionally.
-  KeyWithCopyingMoveConstructor(KeyWithCopyingMoveConstructor&& x)
-      : KeyWithCopyingMoveConstructor(x) {}
-  KeyWithCopyingMoveConstructor& operator=(
-      const KeyWithCopyingMoveConstructor&) = default;
-  bool operator==(const KeyWithCopyingMoveConstructor& x) const {
-    return hash_ == x.hash_;
-  }
-
-  bool IsHashTableDeletedValue() const { return hash_ == -1; }
-
- private:
-  int hash_ = 0;
-  String string_;
-};
-
-struct SameSizeAsPersistent {
-  void* pointers[2];
-#if DCHECK_IS_ON()
-  void* pointers_dcheck_[2];
-#endif
-#if BUILDFLAG(RAW_HEAP_SNAPSHOTS)
-  PersistentLocation location;
-#endif  // BUILDFLAG(RAW_HEAP_SNAPSHOTS)
-};
-
-ASSERT_SIZE(Persistent<IntWrapper>, SameSizeAsPersistent);
-
-class ThreadMarker {
-  DISALLOW_NEW();
-
- public:
-  ThreadMarker()
-      : creating_thread_(reinterpret_cast<ThreadState*>(0)), num_(0) {}
-  ThreadMarker(unsigned i)
-      : creating_thread_(ThreadState::Current()), num_(i) {}
-  ThreadMarker(WTF::HashTableDeletedValueType deleted)
-      : creating_thread_(reinterpret_cast<ThreadState*>(-1)), num_(0) {}
-  ~ThreadMarker() {
-    EXPECT_TRUE((creating_thread_ == ThreadState::Current()) ||
-                (creating_thread_ == reinterpret_cast<ThreadState*>(0)) ||
-                (creating_thread_ == reinterpret_cast<ThreadState*>(-1)));
-  }
-  bool IsHashTableDeletedValue() const {
-    return creating_thread_ == reinterpret_cast<ThreadState*>(-1);
-  }
-  bool operator==(const ThreadMarker& other) const {
-    return other.creating_thread_ == creating_thread_ && other.num_ == num_;
-  }
-  ThreadState* creating_thread_;
-  unsigned num_;
-};
-
-struct ThreadMarkerHash {
-  static unsigned GetHash(const ThreadMarker& key) {
-    return static_cast<unsigned>(
-        reinterpret_cast<uintptr_t>(key.creating_thread_) + key.num_);
-  }
-
-  static bool Equal(const ThreadMarker& a, const ThreadMarker& b) {
-    return a == b;
-  }
-
-  static const bool safe_to_compare_to_empty_or_deleted = false;
-};
-
 }  // namespace
 
-}  // namespace blink
+#if DCHECK_IS_ON()
+// Following 3 tests check for allocation failures. These failures happen
+// only when DCHECK is on.
 
-namespace WTF {
-
-template <typename T>
-struct DefaultHash;
-template <>
-struct DefaultHash<blink::ThreadMarker> {
-  typedef blink::ThreadMarkerHash Hash;
-};
-
-// ThreadMarkerHash is the default hash for ThreadMarker
-template <>
-struct HashTraits<blink::ThreadMarker>
-    : GenericHashTraits<blink::ThreadMarker> {
-  static const bool kEmptyValueIsZero = true;
-  static void ConstructDeletedValue(blink::ThreadMarker& slot, bool) {
-    new (NotNull, &slot) blink::ThreadMarker(kHashTableDeletedValue);
-  }
-  static bool IsDeletedValue(const blink::ThreadMarker& slot) {
-    return slot.IsHashTableDeletedValue();
-  }
-};
-
-template <>
-struct DefaultHash<blink::KeyWithCopyingMoveConstructor> {
-  using Hash = blink::KeyWithCopyingMoveConstructor::Hash;
-};
-
-template <>
-struct HashTraits<blink::KeyWithCopyingMoveConstructor>
-    : public SimpleClassHashTraits<blink::KeyWithCopyingMoveConstructor> {};
-
-}  // namespace WTF
-
-namespace blink {
-
-class TestGCCollectGarbageScope {
-  STACK_ALLOCATED();
+namespace {
+class PreFinalizerBackingShrinkForbidden final
+    : public GarbageCollected<PreFinalizerBackingShrinkForbidden> {
+  USING_PRE_FINALIZER(PreFinalizerBackingShrinkForbidden, Dispose);
 
  public:
-  explicit TestGCCollectGarbageScope(BlinkGC::StackState state) {
-    DCHECK(ThreadState::Current()->CheckThread());
+  PreFinalizerBackingShrinkForbidden() {
+    for (int i = 0; i < 32; ++i) {
+      vector_.push_back(MakeGarbageCollected<IntWrapper>(i));
+    }
+    EXPECT_LT(31ul, vector_.capacity());
+
+    for (int i = 0; i < 32; ++i) {
+      map_.insert(i + 1, MakeGarbageCollected<IntWrapper>(i + 1));
+    }
+    EXPECT_LT(31ul, map_.Capacity());
   }
 
-  ~TestGCCollectGarbageScope() { ThreadState::Current()->CompleteSweep(); }
-};
+  void Dispose() {
+    // Remove all elements except one so that vector_ will try to shrink.
+    for (int i = 1; i < 32; ++i) {
+      vector_.pop_back();
+    }
+    // Check that vector_ hasn't shrunk.
+    EXPECT_LT(31ul, vector_.capacity());
+    // Just releasing the backing is allowed.
+    vector_.clear();
+    EXPECT_EQ(0ul, vector_.capacity());
 
-class TestGCScope : public TestGCCollectGarbageScope {
- public:
-  explicit TestGCScope(BlinkGC::StackState state)
-      : TestGCCollectGarbageScope(state) {
-    ThreadState::Current()->Heap().stats_collector()->NotifyMarkingStarted(
-        BlinkGC::CollectionType::kMajor, BlinkGC::GCReason::kForcedGCForTesting,
-        true /* is_forced_gc */);
-    ThreadState::Current()->AtomicPauseMarkPrologue(
-        BlinkGC::CollectionType::kMajor, state, BlinkGC::kAtomicMarking,
-        BlinkGC::GCReason::kForcedGCForTesting);
-  }
-  ~TestGCScope() {
-    ThreadState::Current()->AtomicPauseMarkEpilogue(BlinkGC::kAtomicMarking);
-    ThreadState::Current()->AtomicPauseSweepAndCompact(
-        BlinkGC::CollectionType::kMajor, BlinkGC::kAtomicMarking,
-        BlinkGC::kEagerSweeping);
-    ThreadState::Current()->AtomicPauseEpilogue();
-  }
-};
-
-class SimpleObject : public GarbageCollected<SimpleObject> {
- public:
-  SimpleObject() = default;
-  virtual void Trace(Visitor* visitor) const {}
-  char GetPayload(int i) { return payload[i]; }
-  // This virtual method is unused but it is here to make sure
-  // that this object has a vtable. This object is used
-  // as the super class for objects that also have garbage
-  // collected mixins and having a virtual here makes sure
-  // that adjustment is needed both for marking and for isAlive
-  // checks.
-  virtual void VirtualMethod() {}
-
- protected:
-  char payload[64];
-};
-
-class HeapTestSuperClass : public GarbageCollected<HeapTestSuperClass> {
- public:
-  HeapTestSuperClass() = default;
-  virtual ~HeapTestSuperClass() { ++destructor_calls_; }
-
-  static int destructor_calls_;
-  void Trace(Visitor* visitor) const {}
-};
-
-int HeapTestSuperClass::destructor_calls_ = 0;
-
-class HeapTestOtherSuperClass {
- public:
-  int payload;
-};
-
-static const size_t kClassMagic = 0xABCDDBCA;
-
-class HeapTestSubClass : public HeapTestSuperClass,
-                         public HeapTestOtherSuperClass {
- public:
-  HeapTestSubClass() : magic_(kClassMagic) {}
-  ~HeapTestSubClass() override {
-    EXPECT_EQ(kClassMagic, magic_);
-    ++destructor_calls_;
+    // Remove elements so that map_ will try to shrink.
+    for (int i = 0; i < 32; ++i) {
+      map_.erase(i + 1);
+    }
+    // Check that map_ hasn't shrunk.
+    EXPECT_LT(31ul, map_.Capacity());
+    // Just releasing the backing is allowed.
+    map_.clear();
+    EXPECT_EQ(0ul, map_.Capacity());
   }
 
-  static int destructor_calls_;
+  void Trace(Visitor* visitor) const {
+    visitor->Trace(vector_);
+    visitor->Trace(map_);
+  }
 
  private:
-  const size_t magic_;
+  HeapVector<Member<IntWrapper>> vector_;
+  HeapHashMap<int, Member<IntWrapper>> map_;
 };
+}  // namespace
 
-int HeapTestSubClass::destructor_calls_ = 0;
+TEST_F(HeapTest, PreFinalizerBackingShrinkForbidden) {
+  MakeGarbageCollected<PreFinalizerBackingShrinkForbidden>();
+  PreciselyCollectGarbage();
+}
 
-class HeapAllocatedArray : public GarbageCollected<HeapAllocatedArray> {
+namespace {
+class PreFinalizerVectorBackingExpandForbidden final
+    : public GarbageCollected<PreFinalizerVectorBackingExpandForbidden> {
+  USING_PRE_FINALIZER(PreFinalizerVectorBackingExpandForbidden, Dispose);
+
  public:
-  HeapAllocatedArray() {
-    for (int i = 0; i < kArraySize; ++i) {
-      array_[i] = i % 128;
+  PreFinalizerVectorBackingExpandForbidden() {
+    vector_.push_back(MakeGarbageCollected<IntWrapper>(1));
+  }
+
+  void Dispose() { EXPECT_DEATH(Test(), ""); }
+
+  void Test() {
+    // vector_'s backing will need to expand.
+    for (int i = 0; i < 32; ++i) {
+      vector_.push_back(nullptr);
     }
   }
 
-  int8_t at(size_t i) { return array_[i]; }
-  void Trace(Visitor* visitor) const {}
+  void Trace(Visitor* visitor) const { visitor->Trace(vector_); }
 
  private:
-  static const int kArraySize = 1000;
-  int8_t array_[kArraySize];
+  HeapVector<Member<IntWrapper>> vector_;
 };
+}  // namespace
 
-class OffHeapInt : public RefCounted<OffHeapInt> {
-  USING_FAST_MALLOC(OffHeapInt);
+TEST(HeapDeathTest, PreFinalizerVectorBackingExpandForbidden) {
+  MakeGarbageCollected<PreFinalizerVectorBackingExpandForbidden>();
+  TestSupportingGC::PreciselyCollectGarbage();
+}
+
+namespace {
+class PreFinalizerHashTableBackingExpandForbidden final
+    : public GarbageCollected<PreFinalizerHashTableBackingExpandForbidden> {
+  USING_PRE_FINALIZER(PreFinalizerHashTableBackingExpandForbidden, Dispose);
 
  public:
-  static scoped_refptr<OffHeapInt> Create(int x) {
-    return base::AdoptRef(new OffHeapInt(x));
+  PreFinalizerHashTableBackingExpandForbidden() {
+    map_.insert(123, MakeGarbageCollected<IntWrapper>(123));
   }
 
-  virtual ~OffHeapInt() { ++destructor_calls_; }
+  void Dispose() { EXPECT_DEATH(Test(), ""); }
 
-  static int destructor_calls_;
-
-  int Value() const { return x_; }
-
-  bool operator==(const OffHeapInt& other) const {
-    return other.Value() == Value();
+  void Test() {
+    // map_'s backing will need to expand.
+    for (int i = 1; i < 32; ++i) {
+      map_.insert(i, nullptr);
+    }
   }
 
-  unsigned GetHash() { return IntHash<int>::GetHash(x_); }
-  void VoidFunction() {}
-
- protected:
-  OffHeapInt(int x) : x_(x) {}
+  void Trace(Visitor* visitor) const { visitor->Trace(map_); }
 
  private:
-  OffHeapInt() = delete;
-  int x_;
+  HeapHashMap<int, Member<IntWrapper>> map_;
 };
+}  // namespace
 
-int OffHeapInt::destructor_calls_ = 0;
+TEST(HeapDeathTest, PreFinalizerHashTableBackingExpandForbidden) {
+  MakeGarbageCollected<PreFinalizerHashTableBackingExpandForbidden>();
+  TestSupportingGC::PreciselyCollectGarbage();
+}
 
+namespace {
+class HeapTestResurrectingPreFinalizer
+    : public GarbageCollected<HeapTestResurrectingPreFinalizer> {
+  USING_PRE_FINALIZER(HeapTestResurrectingPreFinalizer, Dispose);
+
+ public:
+  enum TestType {
+    kHeapVectorMember,
+    kHeapHashSetMember,
+    kHeapHashSetWeakMember
+  };
+
+  class GlobalStorage : public GarbageCollected<GlobalStorage> {
+   public:
+    GlobalStorage() {
+      // Reserve storage upfront to avoid allocations during pre-finalizer
+      // insertion.
+      vector_member.ReserveCapacity(32);
+      hash_set_member.ReserveCapacityForSize(32);
+      hash_set_weak_member.ReserveCapacityForSize(32);
+    }
+
+    void Trace(Visitor* visitor) const {
+      visitor->Trace(vector_member);
+      visitor->Trace(hash_set_member);
+      visitor->Trace(hash_set_weak_member);
+    }
+
+    HeapVector<Member<LinkedObject>> vector_member;
+    HeapHashSet<Member<LinkedObject>> hash_set_member;
+    HeapHashSet<WeakMember<LinkedObject>> hash_set_weak_member;
+  };
+
+  HeapTestResurrectingPreFinalizer(TestType test_type,
+                                   GlobalStorage* storage,
+                                   LinkedObject* object_that_dies)
+      : test_type_(test_type),
+        storage_(storage),
+        object_that_dies_(object_that_dies) {}
+
+  void Trace(Visitor* visitor) const {
+    visitor->Trace(storage_);
+    visitor->Trace(object_that_dies_);
+  }
+
+ private:
+  void Dispose() { EXPECT_DEATH(Test(), ""); }
+
+  void Test() {
+    switch (test_type_) {
+      case TestType::kHeapVectorMember:
+        storage_->vector_member.push_back(object_that_dies_);
+        break;
+      case TestType::kHeapHashSetMember:
+        storage_->hash_set_member.insert(object_that_dies_);
+        break;
+      case TestType::kHeapHashSetWeakMember:
+        storage_->hash_set_weak_member.insert(object_that_dies_);
+        break;
+    }
+  }
+
+  TestType test_type_;
+  Member<GlobalStorage> storage_;
+  Member<LinkedObject> object_that_dies_;
+};
+}  // namespace
+
+TEST(HeapDeathTest, DiesOnResurrectedHeapVectorMember) {
+  Persistent<HeapTestResurrectingPreFinalizer::GlobalStorage> storage(
+      MakeGarbageCollected<HeapTestResurrectingPreFinalizer::GlobalStorage>());
+  MakeGarbageCollected<HeapTestResurrectingPreFinalizer>(
+      HeapTestResurrectingPreFinalizer::kHeapVectorMember, storage.Get(),
+      MakeGarbageCollected<LinkedObject>());
+  TestSupportingGC::PreciselyCollectGarbage();
+}
+
+TEST(HeapDeathTest, DiesOnResurrectedHeapHashSetMember) {
+  Persistent<HeapTestResurrectingPreFinalizer::GlobalStorage> storage(
+      MakeGarbageCollected<HeapTestResurrectingPreFinalizer::GlobalStorage>());
+  MakeGarbageCollected<HeapTestResurrectingPreFinalizer>(
+      HeapTestResurrectingPreFinalizer::kHeapHashSetMember, storage.Get(),
+      MakeGarbageCollected<LinkedObject>());
+  TestSupportingGC::PreciselyCollectGarbage();
+}
+
+TEST(HeapDeathTest, DiesOnResurrectedHeapHashSetWeakMember) {
+  Persistent<HeapTestResurrectingPreFinalizer::GlobalStorage> storage(
+      MakeGarbageCollected<HeapTestResurrectingPreFinalizer::GlobalStorage>());
+  MakeGarbageCollected<HeapTestResurrectingPreFinalizer>(
+      HeapTestResurrectingPreFinalizer::kHeapHashSetWeakMember, storage.Get(),
+      MakeGarbageCollected<LinkedObject>());
+  TestSupportingGC::PreciselyCollectGarbage();
+}
+#endif  // DCHECK_IS_ON()
+
+namespace {
 class ThreadedTesterBase {
  protected:
   static void Test(ThreadedTesterBase* tester) {
@@ -496,7 +430,80 @@
     }
   }
 };
+}  // namespace
 
+TEST_F(HeapTest, Threading) {
+  ThreadedHeapTester::Test();
+}
+
+namespace {
+class ThreadMarker {
+  DISALLOW_NEW();
+
+ public:
+  ThreadMarker() : creating_thread_(reinterpret_cast<ThreadState*>(0)) {}
+  explicit ThreadMarker(unsigned i)
+      : creating_thread_(ThreadState::Current()), num_(i) {}
+  explicit ThreadMarker(WTF::HashTableDeletedValueType deleted)
+      : creating_thread_(reinterpret_cast<ThreadState*>(-1)) {}
+  ~ThreadMarker() {
+    EXPECT_TRUE((creating_thread_ == ThreadState::Current()) ||
+                (creating_thread_ == reinterpret_cast<ThreadState*>(0)) ||
+                (creating_thread_ == reinterpret_cast<ThreadState*>(-1)));
+  }
+  bool IsHashTableDeletedValue() const {
+    return creating_thread_ == reinterpret_cast<ThreadState*>(-1);
+  }
+  bool operator==(const ThreadMarker& other) const {
+    return other.creating_thread_ == creating_thread_ && other.num_ == num_;
+  }
+  ThreadState* creating_thread_;
+  unsigned num_ = 0;
+};
+
+struct ThreadMarkerHash {
+  static unsigned GetHash(const ThreadMarker& key) {
+    return static_cast<unsigned>(
+        reinterpret_cast<uintptr_t>(key.creating_thread_) + key.num_);
+  }
+
+  static bool Equal(const ThreadMarker& a, const ThreadMarker& b) {
+    return a == b;
+  }
+
+  static const bool safe_to_compare_to_empty_or_deleted = false;
+};
+}  // namespace
+
+}  // namespace blink
+
+namespace WTF {
+
+template <typename T>
+struct DefaultHash;
+template <>
+struct DefaultHash<blink::ThreadMarker> {
+  typedef blink::ThreadMarkerHash Hash;
+};
+
+// ThreadMarkerHash is the default hash for ThreadMarker
+template <>
+struct HashTraits<blink::ThreadMarker>
+    : GenericHashTraits<blink::ThreadMarker> {
+  static const bool kEmptyValueIsZero = true;
+  static void ConstructDeletedValue(blink::ThreadMarker& slot, bool) {
+    new (NotNull, &slot) blink::ThreadMarker(kHashTableDeletedValue);
+  }
+  static bool IsDeletedValue(const blink::ThreadMarker& slot) {
+    return slot.IsHashTableDeletedValue();
+  }
+};
+
+}  // namespace WTF
+
+namespace blink {
+
+namespace {
 class ThreadedWeaknessTester : public ThreadedTesterBase {
  public:
   static void Test() { ThreadedTesterBase::Test(new ThreadedWeaknessTester); }
@@ -511,7 +518,7 @@
                 HeapHashMap<ThreadMarker, WeakMember<IntWrapper>>>();
 
         for (int i = 0; i < kNumberOfAllocations; i++) {
-          weak_map->insert(static_cast<unsigned>(i),
+          weak_map->insert(ThreadMarker(i),
                            MakeGarbageCollected<IntWrapper>(0));
           test::YieldCurrentThread();
         }
@@ -529,7 +536,13 @@
     }
   }
 };
+}  // namespace
 
+TEST_F(HeapTest, ThreadedWeakness) {
+  ThreadedWeaknessTester::Test();
+}
+
+namespace {
 class ThreadPersistentHeapTester : public ThreadedTesterBase {
  public:
   static void Test() {
@@ -584,1433 +597,12 @@
     // are none left.
   }
 };
-
-// The accounting for memory includes the memory used by rounding up object
-// sizes. This is done in a different way on 32 bit and 64 bit, so we have to
-// have some slack in the tests.
-template <typename T>
-void CheckWithSlack(T expected, T actual, int slack) {
-  EXPECT_LE(expected, actual);
-  EXPECT_GE((intptr_t)expected + slack, (intptr_t)actual);
-}
-
-class TraceCounter final : public GarbageCollected<TraceCounter> {
- public:
-  TraceCounter() : trace_count_(0) {}
-
-  void Trace(Visitor* visitor) const { trace_count_++; }
-  int TraceCount() const { return trace_count_; }
-
- private:
-  mutable int trace_count_;
-};
-
-TEST_F(HeapTest, IsHeapObjectAliveForConstPointer) {
-  // See http://crbug.com/661363.
-  auto* object = MakeGarbageCollected<SimpleObject>();
-  HeapObjectHeader* header = HeapObjectHeader::FromPayload(object);
-  LivenessBroker broker = internal::LivenessBrokerFactory::Create();
-  EXPECT_TRUE(header->TryMark());
-  EXPECT_TRUE(broker.IsHeapObjectAlive(object));
-  const SimpleObject* const_object = const_cast<const SimpleObject*>(object);
-  EXPECT_TRUE(broker.IsHeapObjectAlive(const_object));
-}
-
-class ClassWithMember : public GarbageCollected<ClassWithMember> {
- public:
-  ClassWithMember() : trace_counter_(MakeGarbageCollected<TraceCounter>()) {}
-
-  void Trace(Visitor* visitor) const { visitor->Trace(trace_counter_); }
-  int TraceCount() const { return trace_counter_->TraceCount(); }
-
- private:
-  Member<TraceCounter> trace_counter_;
-};
-
-class SimpleFinalizedObject final
-    : public GarbageCollected<SimpleFinalizedObject> {
- public:
-  SimpleFinalizedObject() = default;
-  ~SimpleFinalizedObject() { ++destructor_calls_; }
-
-  static int destructor_calls_;
-
-  void Trace(Visitor* visitor) const {}
-};
-
-int SimpleFinalizedObject::destructor_calls_ = 0;
-
-class IntNode : public GarbageCollected<IntNode> {
- public:
-  template <typename T>
-  static void* AllocateObject(size_t size) {
-    ThreadState* state = ThreadState::Current();
-    const char* type_name = WTF_HEAP_PROFILER_TYPE_NAME(IntNode);
-    return state->Heap().AllocateOnArenaIndex(
-        state, size, BlinkGC::kNodeArenaIndex,
-        GCInfoTrait<GCInfoFoldedType<IntNode>>::Index(), type_name);
-  }
-
-  explicit IntNode(int i) : value_(i) {}
-
-  static IntNode* Create(int i) { return MakeGarbageCollected<IntNode>(i); }
-
-  void Trace(Visitor* visitor) const {}
-
-  int Value() { return value_; }
-
- private:
-  int value_;
-};
-
-class Bar : public GarbageCollected<Bar> {
- public:
-  Bar() : magic_(kMagic) { live_++; }
-
-  virtual ~Bar() {
-    EXPECT_TRUE(magic_ == kMagic);
-    magic_ = 0;
-    live_--;
-  }
-  bool HasBeenFinalized() const { return !magic_; }
-
-  virtual void Trace(Visitor* visitor) const {}
-  static unsigned live_;
-
- protected:
-  static const int kMagic = 1337;
-  int magic_;
-};
-
-unsigned Bar::live_ = 0;
-
-class Baz : public GarbageCollected<Baz> {
- public:
-  explicit Baz(Bar* bar) : bar_(bar) {}
-
-  void Trace(Visitor* visitor) const { visitor->Trace(bar_); }
-
-  void Clear() { bar_.Release(); }
-
-  // willFinalize is called by FinalizationObserver.
-  void WillFinalize() { EXPECT_TRUE(!bar_->HasBeenFinalized()); }
-
- private:
-  Member<Bar> bar_;
-};
-
-class Foo final : public Bar {
- public:
-  Foo(Bar* bar) : Bar(), bar_(bar), points_to_foo_(false) {}
-
-  Foo(Foo* foo) : Bar(), bar_(foo), points_to_foo_(true) {}
-
-  void Trace(Visitor* visitor) const override {
-    Bar::Trace(visitor);
-    if (points_to_foo_)
-      visitor->Trace(static_cast<const Foo*>(bar_.Get()));
-    else
-      visitor->Trace(bar_);
-  }
-
- private:
-  const Member<Bar> bar_;
-  const bool points_to_foo_;
-};
-
-class Bars final : public Bar {
- public:
-  Bars() : width_(0) {
-    for (unsigned i = 0; i < kWidth; i++) {
-      bars_[i] = MakeGarbageCollected<Bar>();
-      width_++;
-    }
-  }
-
-  void Trace(Visitor* visitor) const override {
-    Bar::Trace(visitor);
-    for (unsigned i = 0; i < width_; i++)
-      visitor->Trace(bars_[i]);
-  }
-
-  unsigned GetWidth() const { return width_; }
-
-  static const unsigned kWidth = 7500;
-
- private:
-  unsigned width_;
-  Member<Bar> bars_[kWidth];
-};
-
-class ConstructorAllocation : public GarbageCollected<ConstructorAllocation> {
- public:
-  ConstructorAllocation() {
-    int_wrapper_ = MakeGarbageCollected<IntWrapper>(42);
-  }
-
-  void Trace(Visitor* visitor) const { visitor->Trace(int_wrapper_); }
-
- private:
-  Member<IntWrapper> int_wrapper_;
-};
-
-class LargeHeapObject final : public GarbageCollected<LargeHeapObject> {
- public:
-  LargeHeapObject() { int_wrapper_ = MakeGarbageCollected<IntWrapper>(23); }
-  ~LargeHeapObject() { destructor_calls_++; }
-
-  char Get(size_t i) { return data_[i]; }
-  void Set(size_t i, char c) { data_[i] = c; }
-  size_t length() { return kLength; }
-  void Trace(Visitor* visitor) const { visitor->Trace(int_wrapper_); }
-  static int destructor_calls_;
-
- private:
-  static const size_t kLength = 1024 * 1024;
-  Member<IntWrapper> int_wrapper_;
-  char data_[kLength];
-};
-
-int LargeHeapObject::destructor_calls_ = 0;
-
-// This test class served a more important role while Blink
-// was transitioned over to using Oilpan. That required classes
-// that were hybrid, both ref-counted and on the Oilpan heap
-// (the RefCountedGarbageCollected<> class providing just that.)
-//
-// There's no current need for having a ref-counted veneer on
-// top of a GCed class, but we preserve it here to exercise the
-// implementation technique that it used -- keeping an internal
-// "keep alive" persistent reference that is set & cleared across
-// ref-counting operations.
-//
-class RefCountedAndGarbageCollected final
-    : public GarbageCollected<RefCountedAndGarbageCollected> {
- public:
-  RefCountedAndGarbageCollected() : keep_alive_(PERSISTENT_FROM_HERE) {}
-  ~RefCountedAndGarbageCollected() { ++destructor_calls_; }
-
-  void AddRef() {
-    if (UNLIKELY(!ref_count_)) {
-#if DCHECK_IS_ON()
-      DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(
-          reinterpret_cast<Address>(this)));
-#endif
-      keep_alive_ = this;
-    }
-    ++ref_count_;
-  }
-
-  void Release() {
-    DCHECK_GT(ref_count_, 0);
-    if (!--ref_count_)
-      keep_alive_.Clear();
-  }
-
-  void Trace(Visitor* visitor) const {}
-
-  static int destructor_calls_;
-
- private:
-  int ref_count_ = 0;
-  SelfKeepAlive<RefCountedAndGarbageCollected> keep_alive_;
-};
-
-int RefCountedAndGarbageCollected::destructor_calls_ = 0;
-
-class RefCountedAndGarbageCollected2 final
-    : public GarbageCollected<RefCountedAndGarbageCollected2>,
-      public HeapTestOtherSuperClass {
- public:
-  RefCountedAndGarbageCollected2() : keep_alive_(PERSISTENT_FROM_HERE) {}
-  ~RefCountedAndGarbageCollected2() { ++destructor_calls_; }
-
-  void Ref() {
-    if (UNLIKELY(!ref_count_)) {
-#if DCHECK_IS_ON()
-      DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(
-          reinterpret_cast<Address>(this)));
-#endif
-      keep_alive_ = this;
-    }
-    ++ref_count_;
-  }
-
-  void Deref() {
-    DCHECK_GT(ref_count_, 0);
-    if (!--ref_count_)
-      keep_alive_.Clear();
-  }
-
-  void Trace(Visitor* visitor) const {}
-
-  static int destructor_calls_;
-
- private:
-  int ref_count_ = 0;
-  SelfKeepAlive<RefCountedAndGarbageCollected2> keep_alive_;
-};
-
-int RefCountedAndGarbageCollected2::destructor_calls_ = 0;
-
-class Weak final : public Bar {
- public:
-  Weak(Bar* strong_bar, Bar* weak_bar)
-      : Bar(), strong_bar_(strong_bar), weak_bar_(weak_bar) {}
-
-  void Trace(Visitor* visitor) const override {
-    Bar::Trace(visitor);
-    visitor->Trace(strong_bar_);
-    visitor->template RegisterWeakCallbackMethod<Weak, &Weak::ZapWeakMembers>(
-        this);
-  }
-
-  void ZapWeakMembers(const LivenessBroker& info) {
-    if (!info.IsHeapObjectAlive(weak_bar_))
-      weak_bar_ = nullptr;
-  }
-
-  bool StrongIsThere() { return !!strong_bar_; }
-  bool WeakIsThere() { return !!weak_bar_; }
-
- private:
-  Member<Bar> strong_bar_;
-  UntracedMember<Bar> weak_bar_;
-};
-
-class WithWeakMember final : public Bar {
- public:
-  WithWeakMember(Bar* strong_bar, Bar* weak_bar)
-      : Bar(), strong_bar_(strong_bar), weak_bar_(weak_bar) {}
-
-  void Trace(Visitor* visitor) const override {
-    Bar::Trace(visitor);
-    visitor->Trace(strong_bar_);
-    visitor->Trace(weak_bar_);
-  }
-
-  bool StrongIsThere() { return !!strong_bar_; }
-  bool WeakIsThere() { return !!weak_bar_; }
-
- private:
-  Member<Bar> strong_bar_;
-  WeakMember<Bar> weak_bar_;
-};
-
-class Observable final : public GarbageCollected<Observable> {
-  USING_PRE_FINALIZER(Observable, WillFinalize);
-
- public:
-  explicit Observable(Bar* bar) : bar_(bar), was_destructed_(false) {}
-  ~Observable() { was_destructed_ = true; }
-  void Trace(Visitor* visitor) const { visitor->Trace(bar_); }
-
-  // willFinalize is called by FinalizationObserver. willFinalize can touch
-  // other on-heap objects.
-  void WillFinalize() {
-    EXPECT_FALSE(was_destructed_);
-    EXPECT_FALSE(bar_->HasBeenFinalized());
-    will_finalize_was_called_ = true;
-  }
-  static bool will_finalize_was_called_;
-
- private:
-  Member<Bar> bar_;
-  bool was_destructed_;
-};
-
-bool Observable::will_finalize_was_called_ = false;
-
-class ObservableWithPreFinalizer final
-    : public GarbageCollected<ObservableWithPreFinalizer> {
-  USING_PRE_FINALIZER(ObservableWithPreFinalizer, Dispose);
-
- public:
-  ObservableWithPreFinalizer() : was_destructed_(false) {}
-  ~ObservableWithPreFinalizer() { was_destructed_ = true; }
-  void Trace(Visitor* visitor) const {}
-  void Dispose() {
-    EXPECT_FALSE(was_destructed_);
-    dispose_was_called_ = true;
-  }
-  static bool dispose_was_called_;
-
- protected:
-  bool was_destructed_;
-};
-
-bool ObservableWithPreFinalizer::dispose_was_called_ = false;
-
-bool g_dispose_was_called_for_pre_finalizer_base = false;
-bool g_dispose_was_called_for_pre_finalizer_mixin = false;
-bool g_dispose_was_called_for_pre_finalizer_sub_class = false;
-
-class PreFinalizerBase : public GarbageCollected<PreFinalizerBase> {
-  USING_PRE_FINALIZER(PreFinalizerBase, Dispose);
-
- public:
-  PreFinalizerBase() : was_destructed_(false) {}
-  virtual ~PreFinalizerBase() { was_destructed_ = true; }
-  virtual void Trace(Visitor* visitor) const {}
-  void Dispose() {
-    EXPECT_FALSE(g_dispose_was_called_for_pre_finalizer_base);
-    EXPECT_TRUE(g_dispose_was_called_for_pre_finalizer_sub_class);
-    EXPECT_TRUE(g_dispose_was_called_for_pre_finalizer_mixin);
-    EXPECT_FALSE(was_destructed_);
-    g_dispose_was_called_for_pre_finalizer_base = true;
-  }
-
- protected:
-  bool was_destructed_;
-};
-
-class PreFinalizerMixin : public GarbageCollectedMixin {
-  USING_PRE_FINALIZER(PreFinalizerMixin, Dispose);
-
- public:
-  ~PreFinalizerMixin() { was_destructed_ = true; }
-  void Trace(Visitor* visitor) const override {}
-  void Dispose() {
-    EXPECT_FALSE(g_dispose_was_called_for_pre_finalizer_base);
-    EXPECT_TRUE(g_dispose_was_called_for_pre_finalizer_sub_class);
-    EXPECT_FALSE(g_dispose_was_called_for_pre_finalizer_mixin);
-    EXPECT_FALSE(was_destructed_);
-    g_dispose_was_called_for_pre_finalizer_mixin = true;
-  }
-
- protected:
-  PreFinalizerMixin() : was_destructed_(false) {}
-  bool was_destructed_;
-};
-
-class PreFinalizerSubClass : public PreFinalizerBase, public PreFinalizerMixin {
-  USING_PRE_FINALIZER(PreFinalizerSubClass, Dispose);
-
- public:
-  PreFinalizerSubClass() : was_destructed_(false) {}
-  ~PreFinalizerSubClass() override { was_destructed_ = true; }
-  void Trace(Visitor* visitor) const override {
-    PreFinalizerBase::Trace(visitor);
-    PreFinalizerMixin::Trace(visitor);
-  }
-  void Dispose() {
-    EXPECT_FALSE(g_dispose_was_called_for_pre_finalizer_base);
-    EXPECT_FALSE(g_dispose_was_called_for_pre_finalizer_sub_class);
-    EXPECT_FALSE(g_dispose_was_called_for_pre_finalizer_mixin);
-    EXPECT_FALSE(was_destructed_);
-    g_dispose_was_called_for_pre_finalizer_sub_class = true;
-  }
-
- protected:
-  bool was_destructed_;
-};
-
-template <typename T>
-class FinalizationObserver : public GarbageCollected<FinalizationObserver<T>> {
- public:
-  FinalizationObserver(T* data) : data_(data), did_call_will_finalize_(false) {}
-
-  bool DidCallWillFinalize() const { return did_call_will_finalize_; }
-
-  void Trace(Visitor* visitor) const {
-    visitor->template RegisterWeakCallbackMethod<
-        FinalizationObserver<T>, &FinalizationObserver<T>::ZapWeakMembers>(
-        this);
-  }
-
-  void ZapWeakMembers(const LivenessBroker& info) {
-    if (data_ && !info.IsHeapObjectAlive(data_)) {
-      data_->WillFinalize();
-      data_ = nullptr;
-      did_call_will_finalize_ = true;
-    }
-  }
-
- private:
-  UntracedMember<T> data_;
-  bool did_call_will_finalize_;
-};
-
-class FinalizationObserverWithHashMap {
- public:
-  typedef HeapHashMap<WeakMember<Observable>,
-                      std::unique_ptr<FinalizationObserverWithHashMap>>
-      ObserverMap;
-
-  explicit FinalizationObserverWithHashMap(Observable* target)
-      : target_(target) {}
-  ~FinalizationObserverWithHashMap() {
-    target_->WillFinalize();
-    did_call_will_finalize_ = true;
-  }
-
-  static ObserverMap& Observe(Observable* target) {
-    ObserverMap& map = Observers();
-    ObserverMap::AddResult result = map.insert(target, nullptr);
-    if (result.is_new_entry) {
-      result.stored_value->value =
-          std::make_unique<FinalizationObserverWithHashMap>(target);
-    } else {
-      DCHECK(result.stored_value->value);
-    }
-    return map;
-  }
-
-  static void ClearObservers() {
-    delete observer_map_;
-    observer_map_ = nullptr;
-  }
-
-  static bool did_call_will_finalize_;
-
- private:
-  static ObserverMap& Observers() {
-    if (!observer_map_) {
-      observer_map_ =
-          new Persistent<ObserverMap>(MakeGarbageCollected<ObserverMap>());
-    }
-    return **observer_map_;
-  }
-
-  UntracedMember<Observable> target_;
-  static Persistent<ObserverMap>* observer_map_;
-};
-
-bool FinalizationObserverWithHashMap::did_call_will_finalize_ = false;
-Persistent<FinalizationObserverWithHashMap::ObserverMap>*
-    FinalizationObserverWithHashMap::observer_map_;
-
-class SuperClass;
-
-class PointsBack final : public GarbageCollected<PointsBack> {
- public:
-  PointsBack() : back_pointer_(nullptr) { ++alive_count_; }
-  ~PointsBack() { --alive_count_; }
-
-  void SetBackPointer(SuperClass* back_pointer) {
-    back_pointer_ = back_pointer;
-  }
-
-  SuperClass* BackPointer() const { return back_pointer_; }
-
-  void Trace(Visitor* visitor) const { visitor->Trace(back_pointer_); }
-
-  static int alive_count_;
-
- private:
-  WeakMember<SuperClass> back_pointer_;
-};
-
-int PointsBack::alive_count_ = 0;
-
-class SuperClass : public GarbageCollected<SuperClass> {
- public:
-  explicit SuperClass(PointsBack* points_back) : points_back_(points_back) {
-    points_back_->SetBackPointer(this);
-    ++alive_count_;
-  }
-  virtual ~SuperClass() { --alive_count_; }
-
-  void DoStuff(SuperClass* target,
-               PointsBack* points_back,
-               int super_class_count) {
-    TestSupportingGC::ConservativelyCollectGarbage();
-    EXPECT_EQ(points_back, target->GetPointsBack());
-    EXPECT_EQ(super_class_count, SuperClass::alive_count_);
-  }
-
-  virtual void Trace(Visitor* visitor) const { visitor->Trace(points_back_); }
-
-  PointsBack* GetPointsBack() const { return points_back_.Get(); }
-
-  static int alive_count_;
-
- private:
-  Member<PointsBack> points_back_;
-};
-
-int SuperClass::alive_count_ = 0;
-class SubData final : public GarbageCollected<SubData> {
- public:
-  SubData() { ++alive_count_; }
-  ~SubData() { --alive_count_; }
-
-  void Trace(Visitor* visitor) const {}
-
-  static int alive_count_;
-};
-
-int SubData::alive_count_ = 0;
-
-class SubClass : public SuperClass {
- public:
-  explicit SubClass(PointsBack* points_back)
-      : SuperClass(points_back), data_(MakeGarbageCollected<SubData>()) {
-    ++alive_count_;
-  }
-  ~SubClass() override { --alive_count_; }
-
-  void Trace(Visitor* visitor) const override {
-    visitor->Trace(data_);
-    SuperClass::Trace(visitor);
-  }
-
-  static int alive_count_;
-
- private:
-  Member<SubData> data_;
-};
-
-int SubClass::alive_count_ = 0;
-
-class Mixin : public GarbageCollectedMixin {
- public:
-  void Trace(Visitor* visitor) const override {}
-
-  virtual char GetPayload(int i) { return padding_[i]; }
-
- protected:
-  int padding_[8];
-};
-
-class UseMixin : public SimpleObject, public Mixin {
- public:
-  UseMixin() {
-    // Verify that WTF::IsGarbageCollectedType<> works as expected for mixins.
-    static_assert(WTF::IsGarbageCollectedType<UseMixin>::value,
-                  "IsGarbageCollectedType<> sanity check failed for GC mixin.");
-    trace_count_ = 0;
-  }
-
-  static int trace_count_;
-  void Trace(Visitor* visitor) const override {
-    SimpleObject::Trace(visitor);
-    Mixin::Trace(visitor);
-    ++trace_count_;
-  }
-};
-
-int UseMixin::trace_count_ = 0;
-
-class VectorObject {
-  DISALLOW_NEW();
-
- public:
-  VectorObject() { value_ = MakeGarbageCollected<SimpleFinalizedObject>(); }
-
-  void Trace(Visitor* visitor) const { visitor->Trace(value_); }
-
- private:
-  Member<SimpleFinalizedObject> value_;
-};
-
-class VectorObjectInheritedTrace : public VectorObject {};
-
-class TerminatedArrayItem {
-  DISALLOW_NEW();
-
- public:
-  TerminatedArrayItem(IntWrapper* payload)
-      : payload_(payload), is_last_(false) {}
-
-  void Trace(Visitor* visitor) const { visitor->Trace(payload_); }
-
-  bool IsLastInArray() const { return is_last_; }
-  void SetLastInArray(bool value) { is_last_ = value; }
-
-  IntWrapper* Payload() const { return payload_; }
-
- private:
-  Member<IntWrapper> payload_;
-  bool is_last_;
-};
-
-}  // namespace blink
-
-WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(blink::TerminatedArrayItem)
-WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(blink::VectorObject)
-WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(
-    blink::VectorObjectInheritedTrace)
-
-namespace blink {
-
-class OneKiloByteObject final : public GarbageCollected<OneKiloByteObject> {
- public:
-  ~OneKiloByteObject() { destructor_calls_++; }
-  char* Data() { return data_; }
-  void Trace(Visitor* visitor) const {}
-  static int destructor_calls_;
-
- private:
-  static const size_t kLength = 1024;
-  char data_[kLength];
-};
-
-int OneKiloByteObject::destructor_calls_ = 0;
-
-class DynamicallySizedObject : public GarbageCollected<DynamicallySizedObject> {
- public:
-  static DynamicallySizedObject* Create(size_t size) {
-    return MakeGarbageCollected<DynamicallySizedObject>(
-        AdditionalBytes(size - sizeof(DynamicallySizedObject)));
-  }
-
-  uint8_t Get(int i) { return *(reinterpret_cast<uint8_t*>(this) + i); }
-
-  void Trace(Visitor* visitor) const {}
-};
-
-class FinalizationAllocator final
-    : public GarbageCollected<FinalizationAllocator> {
- public:
-  FinalizationAllocator(Persistent<IntWrapper>* wrapper) { wrapper_ = wrapper; }
-
-  ~FinalizationAllocator() {
-    for (int i = 0; i < 10; ++i)
-      *wrapper_ = MakeGarbageCollected<IntWrapper>(42);
-    for (int i = 0; i < 512; ++i)
-      MakeGarbageCollected<OneKiloByteObject>();
-    for (int i = 0; i < 32; ++i)
-      MakeGarbageCollected<LargeHeapObject>();
-  }
-
-  void Trace(Visitor* visitor) const {}
-
- private:
-  static Persistent<IntWrapper>* wrapper_;
-};
-
-Persistent<IntWrapper>* FinalizationAllocator::wrapper_;
-
-class PreFinalizerBackingShrinkForbidden final
-    : public GarbageCollected<PreFinalizerBackingShrinkForbidden> {
-  USING_PRE_FINALIZER(PreFinalizerBackingShrinkForbidden, Dispose);
-
- public:
-  PreFinalizerBackingShrinkForbidden() {
-    for (int i = 0; i < 32; ++i) {
-      vector_.push_back(MakeGarbageCollected<IntWrapper>(i));
-    }
-    EXPECT_LT(31ul, vector_.capacity());
-
-    for (int i = 0; i < 32; ++i) {
-      map_.insert(i + 1, MakeGarbageCollected<IntWrapper>(i + 1));
-    }
-    EXPECT_LT(31ul, map_.Capacity());
-  }
-
-  void Dispose() {
-    // Remove all elemets except one so that vector_ will try to shrink.
-    for (int i = 1; i < 32; ++i) {
-      vector_.pop_back();
-    }
-    // Check that vector_ hasn't shrunk.
-    EXPECT_LT(31ul, vector_.capacity());
-    // Just releasing the backing is allowed.
-    vector_.clear();
-    EXPECT_EQ(0ul, vector_.capacity());
-
-    // Remove elemets so that map_ will try to shrink.
-    for (int i = 0; i < 32; ++i) {
-      map_.erase(i + 1);
-    }
-    // Check that map_ hasn't shrunk.
-    EXPECT_LT(31ul, map_.Capacity());
-    // Just releasing the backing is allowed.
-    map_.clear();
-    EXPECT_EQ(0ul, map_.Capacity());
-  }
-
-  void Trace(Visitor* visitor) const {
-    visitor->Trace(vector_);
-    visitor->Trace(map_);
-  }
-
- private:
-  HeapVector<Member<IntWrapper>> vector_;
-  HeapHashMap<int, Member<IntWrapper>> map_;
-};
-
-// Following 2 tests check for allocation failures. These failures happen
-// only when DCHECK is on.
-#if DCHECK_IS_ON()
-TEST_F(HeapTest, PreFinalizerBackingShrinkForbidden) {
-  MakeGarbageCollected<PreFinalizerBackingShrinkForbidden>();
-  PreciselyCollectGarbage();
-}
-
-class PreFinalizerVectorBackingExpandForbidden final
-    : public GarbageCollected<PreFinalizerVectorBackingExpandForbidden> {
-  USING_PRE_FINALIZER(PreFinalizerVectorBackingExpandForbidden, Dispose);
-
- public:
-  PreFinalizerVectorBackingExpandForbidden() {
-    vector_.push_back(MakeGarbageCollected<IntWrapper>(1));
-  }
-
-  void Dispose() { EXPECT_DEATH(Test(), ""); }
-
-  void Test() {
-    // vector_'s backing will need to expand.
-    for (int i = 0; i < 32; ++i) {
-      vector_.push_back(nullptr);
-    }
-  }
-
-  void Trace(Visitor* visitor) const { visitor->Trace(vector_); }
-
- private:
-  HeapVector<Member<IntWrapper>> vector_;
-};
-
-TEST(HeapDeathTest, PreFinalizerVectorBackingExpandForbidden) {
-  MakeGarbageCollected<PreFinalizerVectorBackingExpandForbidden>();
-  TestSupportingGC::PreciselyCollectGarbage();
-}
-
-class PreFinalizerHashTableBackingExpandForbidden final
-    : public GarbageCollected<PreFinalizerHashTableBackingExpandForbidden> {
-  USING_PRE_FINALIZER(PreFinalizerHashTableBackingExpandForbidden, Dispose);
-
- public:
-  PreFinalizerHashTableBackingExpandForbidden() {
-    map_.insert(123, MakeGarbageCollected<IntWrapper>(123));
-  }
-
-  void Dispose() { EXPECT_DEATH(Test(), ""); }
-
-  void Test() {
-    // map_'s backing will need to expand.
-    for (int i = 1; i < 32; ++i) {
-      map_.insert(i, nullptr);
-    }
-  }
-
-  void Trace(Visitor* visitor) const { visitor->Trace(map_); }
-
- private:
-  HeapHashMap<int, Member<IntWrapper>> map_;
-};
-
-TEST(HeapDeathTest, PreFinalizerHashTableBackingExpandForbidden) {
-  MakeGarbageCollected<PreFinalizerHashTableBackingExpandForbidden>();
-  TestSupportingGC::PreciselyCollectGarbage();
-}
-#endif  // DCHECK_IS_ON()
-
-class PreFinalizerAllocationForbidden
-    : public GarbageCollected<PreFinalizerAllocationForbidden> {
-  USING_PRE_FINALIZER(PreFinalizerAllocationForbidden, Dispose);
-
- public:
-  void Dispose() {
-    EXPECT_FALSE(ThreadState::Current()->IsAllocationAllowed());
-#if DCHECK_IS_ON()
-    EXPECT_DEATH(MakeGarbageCollected<IntWrapper>(1), "");
-#endif  // DCHECK_IS_ON()
-  }
-
-  void Trace(Visitor* visitor) const {}
-};
-
-TEST(HeapDeathTest, PreFinalizerAllocationForbidden) {
-  MakeGarbageCollected<PreFinalizerAllocationForbidden>();
-  TestSupportingGC::PreciselyCollectGarbage();
-}
-
-#if DCHECK_IS_ON()
-namespace {
-
-class HeapTestResurrectingPreFinalizer
-    : public GarbageCollected<HeapTestResurrectingPreFinalizer> {
-  USING_PRE_FINALIZER(HeapTestResurrectingPreFinalizer, Dispose);
-
- public:
-  enum TestType {
-    kHeapVectorMember,
-    kHeapHashSetMember,
-    kHeapHashSetWeakMember
-  };
-
-  class GlobalStorage : public GarbageCollected<GlobalStorage> {
-   public:
-    GlobalStorage() {
-      // Reserve storage upfront to avoid allocations during pre-finalizer
-      // insertion.
-      vector_member.ReserveCapacity(32);
-      hash_set_member.ReserveCapacityForSize(32);
-      hash_set_weak_member.ReserveCapacityForSize(32);
-    }
-
-    void Trace(Visitor* visitor) const {
-      visitor->Trace(vector_member);
-      visitor->Trace(hash_set_member);
-      visitor->Trace(hash_set_weak_member);
-    }
-
-    HeapVector<Member<LinkedObject>> vector_member;
-    HeapHashSet<Member<LinkedObject>> hash_set_member;
-    HeapHashSet<WeakMember<LinkedObject>> hash_set_weak_member;
-  };
-
-  HeapTestResurrectingPreFinalizer(TestType test_type,
-                                   GlobalStorage* storage,
-                                   LinkedObject* object_that_dies)
-      : test_type_(test_type),
-        storage_(storage),
-        object_that_dies_(object_that_dies) {}
-
-  void Trace(Visitor* visitor) const {
-    visitor->Trace(storage_);
-    visitor->Trace(object_that_dies_);
-  }
-
- private:
-  void Dispose() { EXPECT_DEATH(Test(), ""); }
-
-  void Test() {
-    switch (test_type_) {
-      case TestType::kHeapVectorMember:
-        storage_->vector_member.push_back(object_that_dies_);
-        break;
-      case TestType::kHeapHashSetMember:
-        storage_->hash_set_member.insert(object_that_dies_);
-        break;
-      case TestType::kHeapHashSetWeakMember:
-        storage_->hash_set_weak_member.insert(object_that_dies_);
-        break;
-    }
-  }
-
-  TestType test_type_;
-  Member<GlobalStorage> storage_;
-  Member<LinkedObject> object_that_dies_;
-};
-
 }  // namespace
 
-TEST(HeapDeathTest, DiesOnResurrectedHeapVectorMember) {
-  Persistent<HeapTestResurrectingPreFinalizer::GlobalStorage> storage(
-      MakeGarbageCollected<HeapTestResurrectingPreFinalizer::GlobalStorage>());
-  MakeGarbageCollected<HeapTestResurrectingPreFinalizer>(
-      HeapTestResurrectingPreFinalizer::kHeapVectorMember, storage.Get(),
-      MakeGarbageCollected<LinkedObject>());
-  TestSupportingGC::PreciselyCollectGarbage();
-}
-
-TEST(HeapDeathTest, DiesOnResurrectedHeapHashSetMember) {
-  Persistent<HeapTestResurrectingPreFinalizer::GlobalStorage> storage(
-      MakeGarbageCollected<HeapTestResurrectingPreFinalizer::GlobalStorage>());
-  MakeGarbageCollected<HeapTestResurrectingPreFinalizer>(
-      HeapTestResurrectingPreFinalizer::kHeapHashSetMember, storage.Get(),
-      MakeGarbageCollected<LinkedObject>());
-  TestSupportingGC::PreciselyCollectGarbage();
-}
-
-TEST(HeapDeathTest, DiesOnResurrectedHeapHashSetWeakMember) {
-  Persistent<HeapTestResurrectingPreFinalizer::GlobalStorage> storage(
-      MakeGarbageCollected<HeapTestResurrectingPreFinalizer::GlobalStorage>());
-  MakeGarbageCollected<HeapTestResurrectingPreFinalizer>(
-      HeapTestResurrectingPreFinalizer::kHeapHashSetWeakMember, storage.Get(),
-      MakeGarbageCollected<LinkedObject>());
-  TestSupportingGC::PreciselyCollectGarbage();
-}
-#endif  // DCHECK_IS_ON()
-
-class LargeMixin : public GarbageCollected<LargeMixin>, public Mixin {
- protected:
-  char data[65536];
-};
-
-TEST(HeapDeathTest, LargeGarbageCollectedMixin) {
-  EXPECT_DEATH(MakeGarbageCollected<LargeMixin>(AdditionalBytes(1)), "");
-}
-
-TEST_F(HeapTest, Transition) {
-  {
-    RefCountedAndGarbageCollected::destructor_calls_ = 0;
-    Persistent<RefCountedAndGarbageCollected> ref_counted =
-        MakeGarbageCollected<RefCountedAndGarbageCollected>();
-    PreciselyCollectGarbage();
-    EXPECT_EQ(0, RefCountedAndGarbageCollected::destructor_calls_);
-  }
-  PreciselyCollectGarbage();
-  EXPECT_EQ(1, RefCountedAndGarbageCollected::destructor_calls_);
-  RefCountedAndGarbageCollected::destructor_calls_ = 0;
-
-  Persistent<PointsBack> points_back1 = MakeGarbageCollected<PointsBack>();
-  Persistent<PointsBack> points_back2 = MakeGarbageCollected<PointsBack>();
-  Persistent<SuperClass> super_class =
-      MakeGarbageCollected<SuperClass>(points_back1);
-  Persistent<SubClass> sub_class = MakeGarbageCollected<SubClass>(points_back2);
-  EXPECT_EQ(2, PointsBack::alive_count_);
-  EXPECT_EQ(2, SuperClass::alive_count_);
-  EXPECT_EQ(1, SubClass::alive_count_);
-  EXPECT_EQ(1, SubData::alive_count_);
-
-  PreciselyCollectGarbage();
-  EXPECT_EQ(0, RefCountedAndGarbageCollected::destructor_calls_);
-  EXPECT_EQ(2, PointsBack::alive_count_);
-  EXPECT_EQ(2, SuperClass::alive_count_);
-  EXPECT_EQ(1, SubClass::alive_count_);
-  EXPECT_EQ(1, SubData::alive_count_);
-
-  super_class->DoStuff(super_class.Release(), points_back1.Get(), 2);
-  PreciselyCollectGarbage();
-  EXPECT_EQ(2, PointsBack::alive_count_);
-  EXPECT_EQ(1, SuperClass::alive_count_);
-  EXPECT_EQ(1, SubClass::alive_count_);
-  EXPECT_EQ(1, SubData::alive_count_);
-  EXPECT_EQ(nullptr, points_back1->BackPointer());
-
-  points_back1.Release();
-  PreciselyCollectGarbage();
-  EXPECT_EQ(1, PointsBack::alive_count_);
-  EXPECT_EQ(1, SuperClass::alive_count_);
-  EXPECT_EQ(1, SubClass::alive_count_);
-  EXPECT_EQ(1, SubData::alive_count_);
-
-  sub_class->DoStuff(sub_class.Release(), points_back2.Get(), 1);
-  PreciselyCollectGarbage();
-  EXPECT_EQ(1, PointsBack::alive_count_);
-  EXPECT_EQ(0, SuperClass::alive_count_);
-  EXPECT_EQ(0, SubClass::alive_count_);
-  EXPECT_EQ(0, SubData::alive_count_);
-  EXPECT_EQ(nullptr, points_back2->BackPointer());
-
-  points_back2.Release();
-  PreciselyCollectGarbage();
-  EXPECT_EQ(0, PointsBack::alive_count_);
-  EXPECT_EQ(0, SuperClass::alive_count_);
-  EXPECT_EQ(0, SubClass::alive_count_);
-  EXPECT_EQ(0, SubData::alive_count_);
-
-  EXPECT_TRUE(super_class == sub_class);
-}
-
-TEST_F(HeapTest, Threading) {
-  ThreadedHeapTester::Test();
-}
-
-TEST_F(HeapTest, ThreadedWeakness) {
-  ThreadedWeaknessTester::Test();
-}
-
 TEST_F(HeapTest, ThreadPersistent) {
   ThreadPersistentHeapTester::Test();
 }
 
-TEST_F(HeapTest, BasicFunctionality) {
-  ThreadHeap& heap = ThreadState::Current()->Heap();
-  ClearOutOldGarbage();
-  size_t initial_object_payload_size = heap.ObjectPayloadSizeForTesting();
-  {
-    wtf_size_t slack = 0;
-
-    // When the test starts there may already have been leaked some memory
-    // on the heap, so we establish a base line.
-    size_t base_level = initial_object_payload_size;
-    bool test_pages_allocated = !base_level;
-    if (test_pages_allocated)
-      EXPECT_EQ(0ul, heap.stats_collector()->allocated_space_bytes());
-
-    // This allocates objects on the general heap which should add a page of
-    // memory.
-    DynamicallySizedObject* alloc32 = DynamicallySizedObject::Create(32);
-    slack += 4;
-    memset(alloc32, 40, 32);
-    DynamicallySizedObject* alloc64 = DynamicallySizedObject::Create(64);
-    slack += 4;
-    memset(alloc64, 27, 64);
-
-    size_t total = 96;
-
-    CheckWithSlack(base_level + total, heap.ObjectPayloadSizeForTesting(),
-                   slack);
-    if (test_pages_allocated) {
-      EXPECT_EQ(kBlinkPageSize * 2,
-                heap.stats_collector()->allocated_space_bytes());
-    }
-
-    EXPECT_EQ(alloc32->Get(0), 40);
-    EXPECT_EQ(alloc32->Get(31), 40);
-    EXPECT_EQ(alloc64->Get(0), 27);
-    EXPECT_EQ(alloc64->Get(63), 27);
-
-    ConservativelyCollectGarbage();
-
-    EXPECT_EQ(alloc32->Get(0), 40);
-    EXPECT_EQ(alloc32->Get(31), 40);
-    EXPECT_EQ(alloc64->Get(0), 27);
-    EXPECT_EQ(alloc64->Get(63), 27);
-  }
-
-  ClearOutOldGarbage();
-  size_t total = 0;
-  wtf_size_t slack = 0;
-  size_t base_level = heap.ObjectPayloadSizeForTesting();
-  bool test_pages_allocated = !base_level;
-  if (test_pages_allocated)
-    EXPECT_EQ(0ul, heap.stats_collector()->allocated_space_bytes());
-
-  size_t big = 1008;
-  Persistent<DynamicallySizedObject> big_area =
-      DynamicallySizedObject::Create(big);
-  total += big;
-  slack += 4;
-
-  size_t persistent_count = 0;
-  const size_t kNumPersistents = 100000;
-  Persistent<DynamicallySizedObject>* persistents[kNumPersistents];
-
-  for (int i = 0; i < 1000; i++) {
-    size_t size = 128 + i * 8;
-    total += size;
-    persistents[persistent_count++] = new Persistent<DynamicallySizedObject>(
-        DynamicallySizedObject::Create(size));
-    slack += 4;
-    // The allocations in the loop may trigger GC with lazy sweeping.
-    if (ThreadState::Current()->IsSweepingInProgress())
-      ThreadState::Current()->CompleteSweep();
-    CheckWithSlack(base_level + total, heap.ObjectPayloadSizeForTesting(),
-                   slack);
-    if (test_pages_allocated) {
-      EXPECT_EQ(0ul, heap.stats_collector()->allocated_space_bytes() &
-                         (kBlinkPageSize - 1));
-    }
-  }
-
-  {
-    DynamicallySizedObject* alloc32b(DynamicallySizedObject::Create(32));
-    slack += 4;
-    memset(alloc32b, 40, 32);
-    DynamicallySizedObject* alloc64b(DynamicallySizedObject::Create(64));
-    slack += 4;
-    memset(alloc64b, 27, 64);
-    EXPECT_TRUE(alloc32b != alloc64b);
-
-    total += 96;
-    CheckWithSlack(base_level + total, heap.ObjectPayloadSizeForTesting(),
-                   slack);
-    if (test_pages_allocated) {
-      EXPECT_EQ(0ul, heap.stats_collector()->allocated_space_bytes() &
-                         (kBlinkPageSize - 1));
-    }
-  }
-
-  ClearOutOldGarbage();
-  total -= 96;
-  slack -= 8;
-  if (test_pages_allocated) {
-    EXPECT_EQ(0ul, heap.stats_collector()->allocated_space_bytes() &
-                       (kBlinkPageSize - 1));
-  }
-
-  // Clear the persistent, so that the big area will be garbage collected.
-  big_area.Release();
-  ClearOutOldGarbage();
-
-  total -= big;
-  slack -= 4;
-  CheckWithSlack(base_level + total, heap.ObjectPayloadSizeForTesting(), slack);
-  if (test_pages_allocated) {
-    EXPECT_EQ(0ul, heap.stats_collector()->allocated_space_bytes() &
-                       (kBlinkPageSize - 1));
-  }
-
-  CheckWithSlack(base_level + total, heap.ObjectPayloadSizeForTesting(), slack);
-  if (test_pages_allocated) {
-    EXPECT_EQ(0ul, heap.stats_collector()->allocated_space_bytes() &
-                       (kBlinkPageSize - 1));
-  }
-
-  for (size_t i = 0; i < persistent_count; i++) {
-    delete persistents[i];
-    persistents[i] = nullptr;
-  }
-}
-
-TEST_F(HeapTest, SimpleAllocation) {
-  ThreadHeap& heap = ThreadState::Current()->Heap();
-  ClearOutOldGarbage();
-  EXPECT_EQ(0ul, heap.ObjectPayloadSizeForTesting());
-
-  // Allocate an object in the heap.
-  HeapAllocatedArray* array = MakeGarbageCollected<HeapAllocatedArray>();
-  EXPECT_TRUE(heap.ObjectPayloadSizeForTesting() >= sizeof(HeapAllocatedArray));
-
-  // Sanity check of the contents in the heap.
-  EXPECT_EQ(0, array->at(0));
-  EXPECT_EQ(42, array->at(42));
-  EXPECT_EQ(0, array->at(128));
-  EXPECT_EQ(999 % 128, array->at(999));
-}
-
-TEST_F(HeapTest, SimplePersistent) {
-  Persistent<TraceCounter> trace_counter = MakeGarbageCollected<TraceCounter>();
-  EXPECT_EQ(0, trace_counter->TraceCount());
-  PreciselyCollectGarbage();
-  int saved_trace_count = trace_counter->TraceCount();
-  EXPECT_LT(0, saved_trace_count);
-
-  Persistent<ClassWithMember> class_with_member =
-      MakeGarbageCollected<ClassWithMember>();
-  EXPECT_EQ(0, class_with_member->TraceCount());
-  PreciselyCollectGarbage();
-  EXPECT_LT(0, class_with_member->TraceCount());
-  EXPECT_LT(saved_trace_count, trace_counter->TraceCount());
-}
-
-TEST_F(HeapTest, SimpleFinalization) {
-  ClearOutOldGarbage();
-  {
-    SimpleFinalizedObject::destructor_calls_ = 0;
-    Persistent<SimpleFinalizedObject> finalized =
-        MakeGarbageCollected<SimpleFinalizedObject>();
-    EXPECT_EQ(0, SimpleFinalizedObject::destructor_calls_);
-    PreciselyCollectGarbage();
-    EXPECT_EQ(0, SimpleFinalizedObject::destructor_calls_);
-  }
-
-  PreciselyCollectGarbage();
-  EXPECT_EQ(1, SimpleFinalizedObject::destructor_calls_);
-}
-
-#if DCHECK_IS_ON() || defined(LEAK_SANITIZER) || defined(ADDRESS_SANITIZER)
-TEST_F(HeapTest, FreelistReuse) {
-  ClearOutOldGarbage();
-
-  for (int i = 0; i < 100; i++)
-    MakeGarbageCollected<IntWrapper>(i);
-  IntWrapper* p1 = MakeGarbageCollected<IntWrapper>(100);
-  PreciselyCollectGarbage();
-  // In non-production builds, we delay reusing freed memory for at least
-  // one GC cycle.
-  for (int i = 0; i < 100; i++) {
-    IntWrapper* p2 = MakeGarbageCollected<IntWrapper>(i);
-    EXPECT_NE(p1, p2);
-  }
-
-  PreciselyCollectGarbage();
-  PreciselyCollectGarbage();
-  // Now the freed memory in the first GC should be reused.
-  bool reused_memory_found = false;
-  for (int i = 0; i < 10000; i++) {
-    IntWrapper* p2 = MakeGarbageCollected<IntWrapper>(i);
-    if (p1 == p2) {
-      reused_memory_found = true;
-      break;
-    }
-  }
-  EXPECT_TRUE(reused_memory_found);
-}
-#endif
-
-TEST_F(HeapTest, LazySweepingPages) {
-  ClearOutOldGarbage();
-
-  SimpleFinalizedObject::destructor_calls_ = 0;
-  EXPECT_EQ(0, SimpleFinalizedObject::destructor_calls_);
-  for (int i = 0; i < 1000; i++)
-    MakeGarbageCollected<SimpleFinalizedObject>();
-  ThreadState::Current()->CollectGarbageForTesting(
-      BlinkGC::CollectionType::kMajor, BlinkGC::kNoHeapPointersOnStack,
-      BlinkGC::kAtomicMarking, BlinkGC::kConcurrentAndLazySweeping,
-      BlinkGC::GCReason::kForcedGCForTesting);
-  EXPECT_EQ(0, SimpleFinalizedObject::destructor_calls_);
-  for (int i = 0; i < 10000; i++)
-    MakeGarbageCollected<SimpleFinalizedObject>();
-  EXPECT_EQ(1000, SimpleFinalizedObject::destructor_calls_);
-  PreciselyCollectGarbage();
-  EXPECT_EQ(11000, SimpleFinalizedObject::destructor_calls_);
-}
-
-TEST_F(HeapTest, LazySweepingLargeObjectPages) {
-  // Disable concurrent sweeping to check lazy sweeping on allocation.
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndDisableFeature(
-      blink::features::kBlinkHeapConcurrentSweeping);
-
-  ClearOutOldGarbage();
-
-  // Create free lists that can be reused for IntWrappers created in
-  // MakeGarbageCollected<LargeHeapObject>().
-  Persistent<IntWrapper> p1 = MakeGarbageCollected<IntWrapper>(1);
-  for (int i = 0; i < 100; i++) {
-    MakeGarbageCollected<IntWrapper>(i);
-  }
-  Persistent<IntWrapper> p2 = MakeGarbageCollected<IntWrapper>(2);
-  PreciselyCollectGarbage();
-  PreciselyCollectGarbage();
-
-  LargeHeapObject::destructor_calls_ = 0;
-  EXPECT_EQ(0, LargeHeapObject::destructor_calls_);
-  for (int i = 0; i < 10; i++)
-    MakeGarbageCollected<LargeHeapObject>();
-  ThreadState::Current()->CollectGarbageForTesting(
-      BlinkGC::CollectionType::kMajor, BlinkGC::kNoHeapPointersOnStack,
-      BlinkGC::kAtomicMarking, BlinkGC::kConcurrentAndLazySweeping,
-      BlinkGC::GCReason::kForcedGCForTesting);
-  EXPECT_EQ(0, LargeHeapObject::destructor_calls_);
-  for (int i = 0; i < 10; i++) {
-    MakeGarbageCollected<LargeHeapObject>();
-    EXPECT_EQ(i + 1, LargeHeapObject::destructor_calls_);
-  }
-  MakeGarbageCollected<LargeHeapObject>();
-  MakeGarbageCollected<LargeHeapObject>();
-  EXPECT_EQ(10, LargeHeapObject::destructor_calls_);
-  ThreadState::Current()->CollectGarbageForTesting(
-      BlinkGC::CollectionType::kMajor, BlinkGC::kNoHeapPointersOnStack,
-      BlinkGC::kAtomicMarking, BlinkGC::kConcurrentAndLazySweeping,
-      BlinkGC::GCReason::kForcedGCForTesting);
-  EXPECT_EQ(10, LargeHeapObject::destructor_calls_);
-  PreciselyCollectGarbage();
-  EXPECT_EQ(22, LargeHeapObject::destructor_calls_);
-}
-
-TEST_F(HeapTest, Finalization) {
-  {
-    HeapTestSubClass::destructor_calls_ = 0;
-    HeapTestSuperClass::destructor_calls_ = 0;
-    auto* t1 = MakeGarbageCollected<HeapTestSubClass>();
-    auto* t2 = MakeGarbageCollected<HeapTestSubClass>();
-    auto* t3 = MakeGarbageCollected<HeapTestSuperClass>();
-    // FIXME(oilpan): Ignore unused variables.
-    (void)t1;
-    (void)t2;
-    (void)t3;
-  }
-  // Nothing is marked so the GC should free everything and call
-  // the finalizer on all three objects.
-  PreciselyCollectGarbage();
-  EXPECT_EQ(2, HeapTestSubClass::destructor_calls_);
-  EXPECT_EQ(3, HeapTestSuperClass::destructor_calls_);
-  // Destructors not called again when GCing again.
-  PreciselyCollectGarbage();
-  EXPECT_EQ(2, HeapTestSubClass::destructor_calls_);
-  EXPECT_EQ(3, HeapTestSuperClass::destructor_calls_);
-}
-
-TEST_F(HeapTest, TypedArenaSanity) {
-  // We use TraceCounter for allocating an object on the general heap.
-  Persistent<TraceCounter> general_heap_object =
-      MakeGarbageCollected<TraceCounter>();
-  Persistent<IntNode> typed_heap_object = IntNode::Create(0);
-  EXPECT_NE(PageFromObject(general_heap_object.Get()),
-            PageFromObject(typed_heap_object.Get()));
-}
-
-TEST_F(HeapTest, NoAllocation) {
-  ThreadState* state = ThreadState::Current();
-  EXPECT_TRUE(state->IsAllocationAllowed());
-  {
-    // Disallow allocation
-    ThreadState::NoAllocationScope no_allocation_scope(state);
-    EXPECT_FALSE(state->IsAllocationAllowed());
-  }
-  EXPECT_TRUE(state->IsAllocationAllowed());
-}
-
-TEST_F(HeapTest, Members) {
-  ClearOutOldGarbage();
-  Bar::live_ = 0;
-  {
-    Persistent<Baz> h1;
-    Persistent<Baz> h2;
-    {
-      h1 = MakeGarbageCollected<Baz>(MakeGarbageCollected<Bar>());
-      PreciselyCollectGarbage();
-      EXPECT_EQ(1u, Bar::live_);
-      h2 = MakeGarbageCollected<Baz>(MakeGarbageCollected<Bar>());
-      PreciselyCollectGarbage();
-      EXPECT_EQ(2u, Bar::live_);
-    }
-    PreciselyCollectGarbage();
-    EXPECT_EQ(2u, Bar::live_);
-    h1->Clear();
-    PreciselyCollectGarbage();
-    EXPECT_EQ(1u, Bar::live_);
-  }
-  PreciselyCollectGarbage();
-  EXPECT_EQ(0u, Bar::live_);
-}
-
-TEST_F(HeapTest, MarkTest) {
-  ClearOutOldGarbage();
-  {
-    Bar::live_ = 0;
-    Persistent<Bar> bar = MakeGarbageCollected<Bar>();
-#if DCHECK_IS_ON()
-    DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(bar));
-#endif
-    EXPECT_EQ(1u, Bar::live_);
-    {
-      auto* foo = MakeGarbageCollected<Foo>(bar);
-#if DCHECK_IS_ON()
-      DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(foo));
-#endif
-      EXPECT_EQ(2u, Bar::live_);
-      EXPECT_TRUE(reinterpret_cast<Address>(foo) !=
-                  reinterpret_cast<Address>(bar.Get()));
-      ConservativelyCollectGarbage();
-      EXPECT_TRUE(foo != bar);  // To make sure foo is kept alive.
-      EXPECT_EQ(2u, Bar::live_);
-    }
-    PreciselyCollectGarbage();
-    EXPECT_EQ(1u, Bar::live_);
-  }
-  PreciselyCollectGarbage();
-  EXPECT_EQ(0u, Bar::live_);
-}
-
-TEST_F(HeapTest, DeepTest) {
-  ClearOutOldGarbage();
-  const unsigned kDepth = 100000;
-  Bar::live_ = 0;
-  {
-    auto* bar = MakeGarbageCollected<Bar>();
-#if DCHECK_IS_ON()
-    DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(bar));
-#endif
-    auto* foo = MakeGarbageCollected<Foo>(bar);
-#if DCHECK_IS_ON()
-    DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(foo));
-#endif
-    EXPECT_EQ(2u, Bar::live_);
-    for (unsigned i = 0; i < kDepth; i++) {
-      auto* foo2 = MakeGarbageCollected<Foo>(foo);
-      foo = foo2;
-#if DCHECK_IS_ON()
-      DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(foo));
-#endif
-    }
-    EXPECT_EQ(kDepth + 2, Bar::live_);
-    ConservativelyCollectGarbage();
-    EXPECT_TRUE(foo != bar);  // To make sure foo and bar are kept alive.
-    EXPECT_EQ(kDepth + 2, Bar::live_);
-  }
-  PreciselyCollectGarbage();
-  EXPECT_EQ(0u, Bar::live_);
-}
-
-TEST_F(HeapTest, WideTest) {
-  ClearOutOldGarbage();
-  Bar::live_ = 0;
-  {
-    auto* bars = MakeGarbageCollected<Bars>();
-    unsigned width = Bars::kWidth;
-    EXPECT_EQ(width + 1, Bar::live_);
-    ConservativelyCollectGarbage();
-    EXPECT_EQ(width + 1, Bar::live_);
-    // Use bars here to make sure that it will be on the stack
-    // for the conservative stack scan to find.
-    EXPECT_EQ(width, bars->GetWidth());
-  }
-  EXPECT_EQ(Bars::kWidth + 1, Bar::live_);
-  PreciselyCollectGarbage();
-  EXPECT_EQ(0u, Bar::live_);
-}
-
 TEST_F(HeapTest, HashMapOfMembers) {
   ClearOutOldGarbage();
   ThreadHeap& heap = ThreadState::Current()->Heap();
@@ -2102,85 +694,6 @@
   EXPECT_EQ(after_gc4, initial_object_payload_size);
 }
 
-TEST_F(HeapTest, NestedAllocation) {
-  ThreadHeap& heap = ThreadState::Current()->Heap();
-  ClearOutOldGarbage();
-  size_t initial_object_payload_size = heap.ObjectPayloadSizeForTesting();
-  {
-    Persistent<ConstructorAllocation> constructor_allocation =
-        MakeGarbageCollected<ConstructorAllocation>();
-  }
-  ClearOutOldGarbage();
-  size_t after_free = heap.ObjectPayloadSizeForTesting();
-  EXPECT_TRUE(initial_object_payload_size == after_free);
-}
-
-TEST_F(HeapTest, LargeHeapObjects) {
-  ThreadHeap& heap = ThreadState::Current()->Heap();
-  ClearOutOldGarbage();
-  size_t initial_object_payload_size = heap.ObjectPayloadSizeForTesting();
-  size_t initial_allocated_space =
-      heap.stats_collector()->allocated_space_bytes();
-  IntWrapper::destructor_calls_ = 0;
-  LargeHeapObject::destructor_calls_ = 0;
-  {
-    int slack =
-        8;  // LargeHeapObject points to an IntWrapper that is also allocated.
-    Persistent<LargeHeapObject> object =
-        MakeGarbageCollected<LargeHeapObject>();
-#if DCHECK_IS_ON()
-    DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(object));
-    DCHECK(ThreadState::Current()->Heap().FindPageFromAddress(
-        reinterpret_cast<char*>(object.Get()) + sizeof(LargeHeapObject) - 1));
-#endif
-    ClearOutOldGarbage();
-    size_t after_allocation = heap.stats_collector()->allocated_space_bytes();
-    {
-      object->Set(0, 'a');
-      EXPECT_EQ('a', object->Get(0));
-      object->Set(object->length() - 1, 'b');
-      EXPECT_EQ('b', object->Get(object->length() - 1));
-      size_t expected_large_heap_object_payload_size =
-          ThreadHeap::AllocationSizeFromSize(sizeof(LargeHeapObject)) -
-          sizeof(HeapObjectHeader);
-      size_t expected_object_payload_size =
-          expected_large_heap_object_payload_size + sizeof(IntWrapper);
-      size_t actual_object_payload_size =
-          heap.ObjectPayloadSizeForTesting() - initial_object_payload_size;
-      CheckWithSlack(expected_object_payload_size, actual_object_payload_size,
-                     slack);
-      // There is probably space for the IntWrapper in a heap page without
-      // allocating extra pages. However, the IntWrapper allocation might cause
-      // the addition of a heap page.
-      size_t large_object_allocation_size =
-          sizeof(LargeObjectPage) + expected_large_heap_object_payload_size;
-      size_t allocated_space_lower_bound =
-          initial_allocated_space + large_object_allocation_size;
-      size_t allocated_space_upper_bound =
-          allocated_space_lower_bound + slack + kBlinkPageSize;
-      EXPECT_LE(allocated_space_lower_bound, after_allocation);
-      EXPECT_LE(after_allocation, allocated_space_upper_bound);
-      EXPECT_EQ(0, IntWrapper::destructor_calls_);
-      EXPECT_EQ(0, LargeHeapObject::destructor_calls_);
-      for (int i = 0; i < 10; i++)
-        object = MakeGarbageCollected<LargeHeapObject>();
-    }
-    ClearOutOldGarbage();
-    EXPECT_EQ(after_allocation,
-              heap.stats_collector()->allocated_space_bytes());
-    EXPECT_EQ(10, IntWrapper::destructor_calls_);
-    EXPECT_EQ(10, LargeHeapObject::destructor_calls_);
-  }
-  ClearOutOldGarbage();
-  EXPECT_TRUE(initial_object_payload_size ==
-              heap.ObjectPayloadSizeForTesting());
-  EXPECT_EQ(initial_allocated_space,
-            heap.stats_collector()->allocated_space_bytes());
-  EXPECT_EQ(11, IntWrapper::destructor_calls_);
-  EXPECT_EQ(11, LargeHeapObject::destructor_calls_);
-  PreciselyCollectGarbage();
-}
-
 // This test often fails on Android (https://crbug.com/843032).
 // We run out of memory on Android devices because ReserveCapacityForSize
 // actually allocates a much larger backing than specified (in this case 400MB).
@@ -2214,35 +727,6 @@
   EXPECT_LE(size, vector->capacity());
 }
 
-typedef std::pair<Member<IntWrapper>, int> PairWrappedUnwrapped;
-typedef std::pair<int, Member<IntWrapper>> PairUnwrappedWrapped;
-typedef std::pair<WeakMember<IntWrapper>, Member<IntWrapper>> PairWeakStrong;
-typedef std::pair<Member<IntWrapper>, WeakMember<IntWrapper>> PairStrongWeak;
-typedef std::pair<WeakMember<IntWrapper>, int> PairWeakUnwrapped;
-typedef std::pair<int, WeakMember<IntWrapper>> PairUnwrappedWeak;
-
-class Container final : public GarbageCollected<Container> {
- public:
-  HeapHashMap<Member<IntWrapper>, Member<IntWrapper>> map;
-  HeapHashSet<Member<IntWrapper>> set;
-  HeapHashSet<Member<IntWrapper>> set2;
-  HeapHashCountedSet<Member<IntWrapper>> set3;
-  HeapVector<Member<IntWrapper>, 2> vector;
-  HeapVector<PairWrappedUnwrapped, 2> vector_wu;
-  HeapVector<PairUnwrappedWrapped, 2> vector_uw;
-  HeapDeque<Member<IntWrapper>> deque;
-  void Trace(Visitor* visitor) const {
-    visitor->Trace(map);
-    visitor->Trace(set);
-    visitor->Trace(set2);
-    visitor->Trace(set3);
-    visitor->Trace(vector);
-    visitor->Trace(vector_wu);
-    visitor->Trace(vector_uw);
-    visitor->Trace(deque);
-  }
-};
-
 TEST_F(HeapTest, HeapVectorFilledWithValue) {
   auto* val = MakeGarbageCollected<IntWrapper>(1);
   HeapVector<Member<IntWrapper>> vector(10, val);
@@ -2367,6 +851,33 @@
 #endif
 }
 
+namespace {
+typedef std::pair<Member<IntWrapper>, int> PairWrappedUnwrapped;
+typedef std::pair<int, Member<IntWrapper>> PairUnwrappedWrapped;
+
+class Container final : public GarbageCollected<Container> {
+ public:
+  HeapHashMap<Member<IntWrapper>, Member<IntWrapper>> map;
+  HeapHashSet<Member<IntWrapper>> set;
+  HeapHashSet<Member<IntWrapper>> set2;
+  HeapHashCountedSet<Member<IntWrapper>> set3;
+  HeapVector<Member<IntWrapper>, 2> vector;
+  HeapVector<PairWrappedUnwrapped, 2> vector_wu;
+  HeapVector<PairUnwrappedWrapped, 2> vector_uw;
+  HeapDeque<Member<IntWrapper>> deque;
+  void Trace(Visitor* visitor) const {
+    visitor->Trace(map);
+    visitor->Trace(set);
+    visitor->Trace(set2);
+    visitor->Trace(set3);
+    visitor->Trace(vector);
+    visitor->Trace(vector_wu);
+    visitor->Trace(vector_uw);
+    visitor->Trace(deque);
+  }
+};
+}  // namespace
+
 TEST_F(HeapTest, HeapVectorOnStackLargeObjectPageSized) {
   ClearOutOldGarbage();
   // Try to allocate a vector of a size that will end exactly where the
@@ -2384,6 +895,7 @@
   ConservativelyCollectGarbage();
 }
 
+namespace {
 template <typename T, typename U>
 bool DequeContains(HeapDeque<T>& deque, U u) {
   typedef typename HeapDeque<T>::iterator iterator;
@@ -2393,6 +905,7 @@
   }
   return false;
 }
+}  // namespace
 
 TEST_F(HeapTest, HeapCollectionTypes) {
   IntWrapper::destructor_calls_ = 0;
@@ -2878,6 +1391,7 @@
   }
 }
 
+namespace {
 class NonTrivialObject final : public GarbageCollected<NonTrivialObject> {
  public:
   NonTrivialObject() = default;
@@ -2894,6 +1408,7 @@
   HeapDeque<Member<IntWrapper>> deque_;
   HeapVector<Member<IntWrapper>> vector_;
 };
+}  // namespace
 
 TEST_F(HeapTest, HeapHashMapWithInlinedObject) {
   HeapHashMap<int, Member<NonTrivialObject>> map;
@@ -2903,32 +1418,6 @@
   }
 }
 
-template <typename T>
-void MapIteratorCheck(T& it, const T& end, int expected) {
-  int found = 0;
-  while (it != end) {
-    found++;
-    int key = it->key->Value();
-    int value = it->value->Value();
-    EXPECT_TRUE(key >= 0 && key < 1100);
-    EXPECT_TRUE(value >= 0 && value < 1100);
-    ++it;
-  }
-  EXPECT_EQ(expected, found);
-}
-
-template <typename T>
-void SetIteratorCheck(T& it, const T& end, int expected) {
-  int found = 0;
-  while (it != end) {
-    found++;
-    int value = (*it)->Value();
-    EXPECT_TRUE(value >= 0 && value < 1100);
-    ++it;
-  }
-  EXPECT_EQ(expected, found);
-}
-
 TEST_F(HeapTest, HeapWeakCollectionSimple) {
   ClearOutOldGarbage();
   IntWrapper::destructor_calls_ = 0;
@@ -2990,6 +1479,7 @@
   EXPECT_EQ(2u, weak_counted_set->size());
 }
 
+namespace {
 template <typename Set>
 void OrderedSetHelper(bool strong) {
   IntWrapper::destructor_calls_ = 0;
@@ -3099,6 +1589,7 @@
   ++i2;
   EXPECT_EQ(set1->end(), i2);
 }
+}  // namespace
 
 TEST_F(HeapTest, HeapWeakLinkedHashSet) {
   ClearOutOldGarbage();
@@ -3109,6 +1600,7 @@
   OrderedSetHelper<HeapLinkedHashSet<WeakMember<IntWrapper>>>(false);
 }
 
+namespace {
 template <typename Set>
 class SetOwner final : public GarbageCollected<SetOwner<Set>> {
  public:
@@ -3131,6 +1623,7 @@
   Persistent<SetOwner<Set>> set = MakeGarbageCollected<SetOwner<Set>>();
   TestSupportingGC::PreciselyCollectGarbage();
 }
+}  // namespace
 
 TEST_F(HeapTest, ClearInWeakProcessing) {
   ClearOutOldGarbage();
@@ -3139,6 +1632,7 @@
   ClearInWeakProcessingHelper<HeapLinkedHashSet<WeakMember<IntWrapper>>>();
 }
 
+namespace {
 class ThingWithDestructor {
   DISALLOW_NEW();
 
@@ -3164,9 +1658,48 @@
   static const int kEmptyValue = 0;
   int x_;
 };
-
 int ThingWithDestructor::live_things_with_destructor_;
 
+// This test class served a more important role while Blink
+// was transitioned over to using Oilpan. That required classes
+// that were hybrid, both ref-counted and on the Oilpan heap
+// (the RefCountedGarbageCollected<> class providing just that.)
+//
+// There's no current need for having a ref-counted veneer on
+// top of a GCed class, but we preserve it here to exercise the
+// implementation technique that it used -- keeping an internal
+// "keep alive" persistent reference that is set & cleared across
+// ref-counting operations.
+//
+class RefCountedAndGarbageCollected final
+    : public GarbageCollected<RefCountedAndGarbageCollected> {
+ public:
+  RefCountedAndGarbageCollected() : keep_alive_(PERSISTENT_FROM_HERE) {}
+  ~RefCountedAndGarbageCollected() { ++destructor_calls_; }
+
+  void AddRef() {
+    if (UNLIKELY(!ref_count_)) {
+      keep_alive_ = this;
+    }
+    ++ref_count_;
+  }
+
+  void Release() {
+    DCHECK_GT(ref_count_, 0);
+    if (!--ref_count_)
+      keep_alive_.Clear();
+  }
+
+  void Trace(Visitor* visitor) const {}
+
+  static int destructor_calls_;
+
+ private:
+  int ref_count_ = 0;
+  SelfKeepAlive<RefCountedAndGarbageCollected> keep_alive_;
+};
+int RefCountedAndGarbageCollected::destructor_calls_ = 0;
+
 static void HeapMapDestructorHelper(bool clear_maps) {
   ThingWithDestructor::live_things_with_destructor_ = 0;
 
@@ -3248,6 +1781,7 @@
   EXPECT_EQ(ref_base_line + 2,
             RefCountedAndGarbageCollected::destructor_calls_);
 }
+}  // namespace
 
 TEST_F(HeapTest, HeapMapDestructor) {
   ClearOutOldGarbage();
@@ -3256,86 +1790,34 @@
   HeapMapDestructorHelper(false);
 }
 
-typedef HeapHashSet<PairWeakStrong> WeakStrongSet;
-typedef HeapHashSet<PairWeakUnwrapped> WeakUnwrappedSet;
-typedef HeapHashSet<PairStrongWeak> StrongWeakSet;
-typedef HeapHashSet<PairUnwrappedWeak> UnwrappedWeakSet;
-typedef HeapLinkedHashSet<PairWeakStrong> WeakStrongLinkedSet;
-typedef HeapLinkedHashSet<PairWeakUnwrapped> WeakUnwrappedLinkedSet;
-typedef HeapLinkedHashSet<PairStrongWeak> StrongWeakLinkedSet;
-typedef HeapLinkedHashSet<PairUnwrappedWeak> UnwrappedWeakLinkedSet;
-typedef HeapHashCountedSet<PairWeakStrong> WeakStrongCountedSet;
-typedef HeapHashCountedSet<PairWeakUnwrapped> WeakUnwrappedCountedSet;
-typedef HeapHashCountedSet<PairStrongWeak> StrongWeakCountedSet;
-typedef HeapHashCountedSet<PairUnwrappedWeak> UnwrappedWeakCountedSet;
-
+namespace {
 template <typename T>
-T& IteratorExtractor(WTF::KeyValuePair<T, unsigned>& pair) {
-  return pair.key;
-}
-
-template <typename T>
-T& IteratorExtractor(T& not_a_pair) {
-  return not_a_pair;
-}
-
-template <typename WSSet, typename SWSet, typename WUSet, typename UWSet>
-void CheckPairSets(Persistent<WSSet>& weak_strong,
-                   Persistent<SWSet>& strong_weak,
-                   Persistent<WUSet>& weak_unwrapped,
-                   Persistent<UWSet>& unwrapped_weak,
-                   bool ones,
-                   Persistent<IntWrapper>& two) {
-  typename WSSet::iterator it_ws = weak_strong->begin();
-  typename SWSet::iterator it_sw = strong_weak->begin();
-  typename WUSet::iterator it_wu = weak_unwrapped->begin();
-  typename UWSet::iterator it_uw = unwrapped_weak->begin();
-
-  EXPECT_EQ(2u, weak_strong->size());
-  EXPECT_EQ(2u, strong_weak->size());
-  EXPECT_EQ(2u, weak_unwrapped->size());
-  EXPECT_EQ(2u, unwrapped_weak->size());
-
-  PairWeakStrong p = IteratorExtractor(*it_ws);
-  PairStrongWeak p2 = IteratorExtractor(*it_sw);
-  PairWeakUnwrapped p3 = IteratorExtractor(*it_wu);
-  PairUnwrappedWeak p4 = IteratorExtractor(*it_uw);
-  if (p.first == two && p.second == two)
-    ++it_ws;
-  if (p2.first == two && p2.second == two)
-    ++it_sw;
-  if (p3.first == two && p3.second == 2)
-    ++it_wu;
-  if (p4.first == 2 && p4.second == two)
-    ++it_uw;
-  p = IteratorExtractor(*it_ws);
-  p2 = IteratorExtractor(*it_sw);
-  p3 = IteratorExtractor(*it_wu);
-  p4 = IteratorExtractor(*it_uw);
-  IntWrapper* null_wrapper = nullptr;
-  if (ones) {
-    EXPECT_EQ(p.first->Value(), 1);
-    EXPECT_EQ(p2.second->Value(), 1);
-    EXPECT_EQ(p3.first->Value(), 1);
-    EXPECT_EQ(p4.second->Value(), 1);
-  } else {
-    EXPECT_EQ(p.first, null_wrapper);
-    EXPECT_EQ(p2.second, null_wrapper);
-    EXPECT_EQ(p3.first, null_wrapper);
-    EXPECT_EQ(p4.second, null_wrapper);
+void MapIteratorCheck(T& it, const T& end, int expected) {
+  int found = 0;
+  while (it != end) {
+    found++;
+    int key = it->key->Value();
+    int value = it->value->Value();
+    EXPECT_TRUE(key >= 0 && key < 1100);
+    EXPECT_TRUE(value >= 0 && value < 1100);
+    ++it;
   }
-
-  EXPECT_EQ(p.second->Value(), 2);
-  EXPECT_EQ(p2.first->Value(), 2);
-  EXPECT_EQ(p3.second, 2);
-  EXPECT_EQ(p4.first, 2);
-
-  EXPECT_TRUE(weak_strong->Contains(PairWeakStrong(&*two, &*two)));
-  EXPECT_TRUE(strong_weak->Contains(PairStrongWeak(&*two, &*two)));
-  EXPECT_TRUE(weak_unwrapped->Contains(PairWeakUnwrapped(&*two, 2)));
-  EXPECT_TRUE(unwrapped_weak->Contains(PairUnwrappedWeak(2, &*two)));
+  EXPECT_EQ(expected, found);
 }
 
+template <typename T>
+void SetIteratorCheck(T& it, const T& end, int expected) {
+  int found = 0;
+  while (it != end) {
+    found++;
+    int value = (*it)->Value();
+    EXPECT_TRUE(value >= 0 && value < 1100);
+    ++it;
+  }
+  EXPECT_EQ(expected, found);
+}
+}  // namespace
+
 TEST_F(HeapTest, HeapWeakCollectionTypes) {
   IntWrapper::destructor_calls_ = 0;
 
@@ -3622,203 +2104,6 @@
   EXPECT_EQ(2, RefCountedAndGarbageCollected::destructor_calls_);
 }
 
-TEST_F(HeapTest, WeakMembers) {
-  ClearOutOldGarbage();
-  Bar::live_ = 0;
-  {
-    Persistent<Bar> h1 = MakeGarbageCollected<Bar>();
-    Persistent<Weak> h4;
-    Persistent<WithWeakMember> h5;
-    PreciselyCollectGarbage();
-    ASSERT_EQ(1u, Bar::live_);  // h1 is live.
-    {
-      auto* h2 = MakeGarbageCollected<Bar>();
-      auto* h3 = MakeGarbageCollected<Bar>();
-      h4 = MakeGarbageCollected<Weak>(h2, h3);
-      h5 = MakeGarbageCollected<WithWeakMember>(h2, h3);
-      ConservativelyCollectGarbage();
-      EXPECT_EQ(5u, Bar::live_);  // The on-stack pointer keeps h3 alive.
-      EXPECT_FALSE(h3->HasBeenFinalized());
-      EXPECT_TRUE(h4->StrongIsThere());
-      EXPECT_TRUE(h4->WeakIsThere());
-      EXPECT_TRUE(h5->StrongIsThere());
-      EXPECT_TRUE(h5->WeakIsThere());
-    }
-    // h3 is collected, weak pointers from h4 and h5 don't keep it alive.
-    PreciselyCollectGarbage();
-    EXPECT_EQ(4u, Bar::live_);
-    EXPECT_TRUE(h4->StrongIsThere());
-    EXPECT_FALSE(h4->WeakIsThere());  // h3 is gone from weak pointer.
-    EXPECT_TRUE(h5->StrongIsThere());
-    EXPECT_FALSE(h5->WeakIsThere());  // h3 is gone from weak pointer.
-    h1.Release();                     // Zero out h1.
-    PreciselyCollectGarbage();
-    EXPECT_EQ(3u, Bar::live_);         // Only h4, h5 and h2 are left.
-    EXPECT_TRUE(h4->StrongIsThere());  // h2 is still pointed to from h4.
-    EXPECT_TRUE(h5->StrongIsThere());  // h2 is still pointed to from h5.
-  }
-  // h4 and h5 have gone out of scope now and they were keeping h2 alive.
-  PreciselyCollectGarbage();
-  EXPECT_EQ(0u, Bar::live_);  // All gone.
-}
-
-TEST_F(HeapTest, FinalizationObserver) {
-  Persistent<FinalizationObserver<Observable>> o;
-  {
-    auto* foo = MakeGarbageCollected<Observable>(MakeGarbageCollected<Bar>());
-    // |o| observes |foo|.
-    o = MakeGarbageCollected<FinalizationObserver<Observable>>(foo);
-  }
-  // FinalizationObserver doesn't have a strong reference to |foo|. So |foo|
-  // and its member will be collected.
-  PreciselyCollectGarbage();
-  EXPECT_EQ(0u, Bar::live_);
-  EXPECT_TRUE(o->DidCallWillFinalize());
-
-  FinalizationObserverWithHashMap::did_call_will_finalize_ = false;
-  auto* foo = MakeGarbageCollected<Observable>(MakeGarbageCollected<Bar>());
-  FinalizationObserverWithHashMap::ObserverMap& map =
-      FinalizationObserverWithHashMap::Observe(foo);
-  EXPECT_EQ(1u, map.size());
-  foo = nullptr;
-  // FinalizationObserverWithHashMap doesn't have a strong reference to
-  // |foo|. So |foo| and its member will be collected.
-  PreciselyCollectGarbage();
-  EXPECT_EQ(0u, Bar::live_);
-  EXPECT_EQ(0u, map.size());
-  EXPECT_TRUE(FinalizationObserverWithHashMap::did_call_will_finalize_);
-
-  FinalizationObserverWithHashMap::ClearObservers();
-}
-
-TEST_F(HeapTest, PreFinalizer) {
-  Observable::will_finalize_was_called_ = false;
-  { MakeGarbageCollected<Observable>(MakeGarbageCollected<Bar>()); }
-  PreciselyCollectGarbage();
-  EXPECT_TRUE(Observable::will_finalize_was_called_);
-}
-
-TEST_F(HeapTest, PreFinalizerUnregistersItself) {
-  ObservableWithPreFinalizer::dispose_was_called_ = false;
-  MakeGarbageCollected<ObservableWithPreFinalizer>();
-  PreciselyCollectGarbage();
-  EXPECT_TRUE(ObservableWithPreFinalizer::dispose_was_called_);
-  // Don't crash, and assertions don't fail.
-}
-
-TEST_F(HeapTest, NestedPreFinalizer) {
-  g_dispose_was_called_for_pre_finalizer_base = false;
-  g_dispose_was_called_for_pre_finalizer_sub_class = false;
-  g_dispose_was_called_for_pre_finalizer_mixin = false;
-  MakeGarbageCollected<PreFinalizerSubClass>();
-  PreciselyCollectGarbage();
-  EXPECT_TRUE(g_dispose_was_called_for_pre_finalizer_base);
-  EXPECT_TRUE(g_dispose_was_called_for_pre_finalizer_sub_class);
-  EXPECT_TRUE(g_dispose_was_called_for_pre_finalizer_mixin);
-  // Don't crash, and assertions don't fail.
-}
-
-TEST_F(HeapTest, Comparisons) {
-  Persistent<Bar> bar_persistent = MakeGarbageCollected<Bar>();
-  Persistent<Foo> foo_persistent = MakeGarbageCollected<Foo>(bar_persistent);
-  EXPECT_TRUE(bar_persistent != foo_persistent);
-  bar_persistent = foo_persistent;
-  EXPECT_TRUE(bar_persistent == foo_persistent);
-}
-
-namespace {
-
-void ExpectObjectMarkedAndUnmark(MarkingWorklist* worklist, void* expected) {
-  MarkingItem item;
-  CHECK(worklist->Pop(0, &item));
-  CHECK_EQ(expected, item.base_object_payload);
-  HeapObjectHeader* header =
-      HeapObjectHeader::FromPayload(item.base_object_payload);
-  CHECK(header->IsMarked());
-  header->Unmark();
-  CHECK(worklist->IsGlobalEmpty());
-}
-
-}  // namespace
-
-TEST_F(HeapTest, CheckAndMarkPointer) {
-  // This test ensures that conservative marking primitives can use any address
-  // contained within an object to mark the corresponding object.
-
-  ThreadHeap& heap = ThreadState::Current()->Heap();
-  ClearOutOldGarbage();
-
-  Vector<Address> object_addresses;
-  Vector<Address> end_addresses;
-  for (int i = 0; i < 10; i++) {
-    auto* object = MakeGarbageCollected<SimpleObject>();
-    Address object_address = reinterpret_cast<Address>(object);
-    object_addresses.push_back(object_address);
-    end_addresses.push_back(object_address + sizeof(SimpleObject) - 1);
-  }
-  Address large_object_address =
-      reinterpret_cast<Address>(MakeGarbageCollected<LargeHeapObject>());
-  Address large_object_end_address =
-      large_object_address + sizeof(LargeHeapObject) - 1;
-
-  {
-    TestGCScope scope(BlinkGC::kHeapPointersOnStack);
-    MarkingVisitor visitor(ThreadState::Current(),
-                           MarkingVisitor::kGlobalMarking);
-    // Record marking speed as counter generation requires valid marking timings
-    // for heaps >1MB.
-    ThreadHeapStatsCollector::Scope stats_scope(
-        heap.stats_collector(),
-        ThreadHeapStatsCollector::kAtomicPauseMarkTransitiveClosure);
-
-    // Conservative marker should find the interesting objects by using anything
-    // between object start and end.
-    MarkingWorklist* worklist = heap.GetMarkingWorklist();
-    CHECK(worklist->IsGlobalEmpty());
-    for (wtf_size_t i = 0; i < object_addresses.size(); i++) {
-      heap.CheckAndMarkPointer(&visitor, object_addresses[i]);
-      ExpectObjectMarkedAndUnmark(worklist, object_addresses[i]);
-      heap.CheckAndMarkPointer(&visitor, end_addresses[i]);
-      ExpectObjectMarkedAndUnmark(worklist, object_addresses[i]);
-    }
-    heap.CheckAndMarkPointer(&visitor, large_object_address);
-    ExpectObjectMarkedAndUnmark(worklist, large_object_address);
-    heap.CheckAndMarkPointer(&visitor, large_object_end_address);
-    ExpectObjectMarkedAndUnmark(worklist, large_object_address);
-  }
-
-  // This forces a GC without stack scanning which results in the objects
-  // being collected. This will also rebuild the above mentioned freelists,
-  // however we don't rely on that below since we don't have any allocations.
-  ClearOutOldGarbage();
-
-  {
-    TestGCScope scope(BlinkGC::kHeapPointersOnStack);
-    MarkingVisitor visitor(ThreadState::Current(),
-                           MarkingVisitor::kGlobalMarking);
-    // Record marking speed as counter generation requires valid marking timings
-    // for heaps >1MB.
-    ThreadHeapStatsCollector::Scope stats_scope(
-        heap.stats_collector(),
-        ThreadHeapStatsCollector::kAtomicPauseMarkTransitiveClosure);
-
-    // After collecting all interesting objects the conservative marker should
-    // not find them anymore.
-    MarkingWorklist* worklist = heap.GetMarkingWorklist();
-    CHECK(worklist->IsGlobalEmpty());
-    for (wtf_size_t i = 0; i < object_addresses.size(); i++) {
-      heap.CheckAndMarkPointer(&visitor, object_addresses[i]);
-      CHECK(worklist->IsGlobalEmpty());
-      heap.CheckAndMarkPointer(&visitor, end_addresses[i]);
-      CHECK(worklist->IsGlobalEmpty());
-    }
-    heap.CheckAndMarkPointer(&visitor, large_object_address);
-    CHECK(worklist->IsGlobalEmpty());
-    heap.CheckAndMarkPointer(&visitor, large_object_end_address);
-    CHECK(worklist->IsGlobalEmpty());
-  }
-}
-
 TEST_F(HeapTest, CollectionNesting) {
   ClearOutOldGarbage();
   int k;
@@ -3869,46 +2154,6 @@
   EXPECT_EQ(1, IntWrapper::destructor_calls_);
 }
 
-namespace {
-class DisableHeapVerificationScope {
- public:
-  DisableHeapVerificationScope(const char*) {
-    ThreadState::Current()->EnterNoHeapVerificationScopeForTesting();
-  }
-  ~DisableHeapVerificationScope() {
-    ThreadState::Current()->LeaveNoHeapVerificationScopeForTesting();
-  }
-};
-}  // namespace
-
-TEST_F(HeapTest, GarbageCollectedMixin) {
-  ClearOutOldGarbage();
-
-  Persistent<UseMixin> usemixin = MakeGarbageCollected<UseMixin>();
-  EXPECT_EQ(0, UseMixin::trace_count_);
-  {
-    DisableHeapVerificationScope scope(
-        "Avoid tracing UseMixin during verification");
-    PreciselyCollectGarbage();
-  }
-  EXPECT_EQ(1, UseMixin::trace_count_);
-
-  Persistent<Mixin> mixin = usemixin;
-  usemixin = nullptr;
-  {
-    DisableHeapVerificationScope scope(
-        "Avoid tracing UseMixin during verification");
-    PreciselyCollectGarbage();
-  }
-  EXPECT_EQ(2, UseMixin::trace_count_);
-
-  Persistent<HeapHashSet<WeakMember<Mixin>>> weak_map =
-      MakeGarbageCollected<HeapHashSet<WeakMember<Mixin>>>();
-  weak_map->insert(MakeGarbageCollected<UseMixin>());
-  PreciselyCollectGarbage();
-  EXPECT_EQ(0u, weak_map->size());
-}
-
 TEST_F(HeapTest, CollectionNesting2) {
   ClearOutOldGarbage();
   void* key = &IntWrapper::destructor_calls_;
@@ -3951,6 +2196,42 @@
   EXPECT_EQ(0, IntWrapper::destructor_calls_);
 }
 
+namespace {
+class SimpleFinalizedObject final
+    : public GarbageCollected<SimpleFinalizedObject> {
+ public:
+  SimpleFinalizedObject() = default;
+  ~SimpleFinalizedObject() { ++destructor_calls_; }
+
+  static int destructor_calls_;
+
+  void Trace(Visitor* visitor) const {}
+};
+int SimpleFinalizedObject::destructor_calls_ = 0;
+
+class VectorObject {
+  DISALLOW_NEW();
+
+ public:
+  VectorObject() { value_ = MakeGarbageCollected<SimpleFinalizedObject>(); }
+
+  void Trace(Visitor* visitor) const { visitor->Trace(value_); }
+
+ private:
+  Member<SimpleFinalizedObject> value_;
+};
+
+class VectorObjectInheritedTrace : public VectorObject {};
+}  // namespace
+
+}  // namespace blink
+
+WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(blink::VectorObject)
+WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(
+    blink::VectorObjectInheritedTrace)
+
+namespace blink {
+
 TEST_F(HeapTest, EmbeddedInVector) {
   ClearOutOldGarbage();
   SimpleFinalizedObject::destructor_calls_ = 0;
@@ -3980,6 +2261,7 @@
   EXPECT_EQ(6, SimpleFinalizedObject::destructor_calls_);
 }
 
+namespace {
 class InlinedVectorObject {
   DISALLOW_NEW();
 
@@ -3990,22 +2272,8 @@
 
   static int destructor_calls_;
 };
-
 int InlinedVectorObject::destructor_calls_ = 0;
-
-class InlinedVectorObjectWithVtable {
-  DISALLOW_NEW();
-
- public:
-  InlinedVectorObjectWithVtable() = default;
-  virtual ~InlinedVectorObjectWithVtable() { destructor_calls_++; }
-  virtual void VirtualMethod() {}
-  void Trace(Visitor* visitor) const {}
-
-  static int destructor_calls_;
-};
-
-int InlinedVectorObjectWithVtable::destructor_calls_ = 0;
+}  // namespace
 
 }  // namespace blink
 
@@ -4013,6 +2281,7 @@
 
 namespace blink {
 
+namespace {
 class InlinedVectorObjectWrapper final
     : public GarbageCollected<InlinedVectorObjectWrapper> {
  public:
@@ -4037,31 +2306,7 @@
   HeapVector<InlinedVectorObject, 1> vector2_;
   HeapVector<InlinedVectorObject, 2> vector3_;
 };
-
-class InlinedVectorObjectWithVtableWrapper final
-    : public GarbageCollected<InlinedVectorObjectWithVtableWrapper> {
- public:
-  InlinedVectorObjectWithVtableWrapper() {
-    InlinedVectorObjectWithVtable i1, i2;
-    vector1_.push_back(i1);
-    vector1_.push_back(i2);
-    vector2_.push_back(i1);
-    vector2_.push_back(i2);  // This allocates an out-of-line buffer.
-    vector3_.push_back(i1);
-    vector3_.push_back(i2);
-  }
-
-  void Trace(Visitor* visitor) const {
-    visitor->Trace(vector1_);
-    visitor->Trace(vector2_);
-    visitor->Trace(vector3_);
-  }
-
- private:
-  HeapVector<InlinedVectorObjectWithVtable> vector1_;
-  HeapVector<InlinedVectorObjectWithVtable, 1> vector2_;
-  HeapVector<InlinedVectorObjectWithVtable, 2> vector3_;
-};
+}  // namespace
 
 TEST_F(HeapTest, VectorDestructors) {
   ClearOutOldGarbage();
@@ -4110,6 +2355,46 @@
   EXPECT_LE(8, InlinedVectorObject::destructor_calls_);
 }
 
+namespace {
+class InlinedVectorObjectWithVtable {
+  DISALLOW_NEW();
+
+ public:
+  InlinedVectorObjectWithVtable() = default;
+  virtual ~InlinedVectorObjectWithVtable() { destructor_calls_++; }
+  virtual void VirtualMethod() {}
+  void Trace(Visitor* visitor) const {}
+
+  static int destructor_calls_;
+};
+int InlinedVectorObjectWithVtable::destructor_calls_ = 0;
+
+class InlinedVectorObjectWithVtableWrapper final
+    : public GarbageCollected<InlinedVectorObjectWithVtableWrapper> {
+ public:
+  InlinedVectorObjectWithVtableWrapper() {
+    InlinedVectorObjectWithVtable i1, i2;
+    vector1_.push_back(i1);
+    vector1_.push_back(i2);
+    vector2_.push_back(i1);
+    vector2_.push_back(i2);  // This allocates an out-of-line buffer.
+    vector3_.push_back(i1);
+    vector3_.push_back(i2);
+  }
+
+  void Trace(Visitor* visitor) const {
+    visitor->Trace(vector1_);
+    visitor->Trace(vector2_);
+    visitor->Trace(vector3_);
+  }
+
+ private:
+  HeapVector<InlinedVectorObjectWithVtable> vector1_;
+  HeapVector<InlinedVectorObjectWithVtable, 1> vector2_;
+  HeapVector<InlinedVectorObjectWithVtable, 2> vector3_;
+};
+}  // namespace
+
 // TODO(Oilpan): when Vector.h's contiguous container support no longer disables
 // Vector<>s with inline capacity, enable this test.
 #if !defined(ANNOTATE_CONTIGUOUS_CONTAINER)
@@ -4157,95 +2442,15 @@
 }
 #endif
 
-TEST_F(HeapTest, AllocationDuringFinalization) {
-  ClearOutOldGarbage();
-  IntWrapper::destructor_calls_ = 0;
-  OneKiloByteObject::destructor_calls_ = 0;
-  LargeHeapObject::destructor_calls_ = 0;
-
-  Persistent<IntWrapper> wrapper;
-  MakeGarbageCollected<FinalizationAllocator>(&wrapper);
-
-  PreciselyCollectGarbage();
-  EXPECT_EQ(0, IntWrapper::destructor_calls_);
-  EXPECT_EQ(0, OneKiloByteObject::destructor_calls_);
-  EXPECT_EQ(0, LargeHeapObject::destructor_calls_);
-  // Check that the wrapper allocated during finalization is not
-  // swept away and zapped later in the same sweeping phase.
-  EXPECT_EQ(42, wrapper->Value());
-
-  wrapper.Clear();
-  PreciselyCollectGarbage();
-  // The 42 IntWrappers were the ones allocated in ~FinalizationAllocator
-  // and the ones allocated in LargeHeapObject.
-  EXPECT_EQ(42, IntWrapper::destructor_calls_);
-  EXPECT_EQ(512, OneKiloByteObject::destructor_calls_);
-  EXPECT_EQ(32, LargeHeapObject::destructor_calls_);
-}
-
+namespace {
 class SimpleClassWithDestructor {
  public:
   SimpleClassWithDestructor() = default;
   ~SimpleClassWithDestructor() { was_destructed_ = true; }
   static bool was_destructed_;
 };
-
 bool SimpleClassWithDestructor::was_destructed_;
-
-class RefCountedWithDestructor : public RefCounted<RefCountedWithDestructor> {
- public:
-  RefCountedWithDestructor() = default;
-  ~RefCountedWithDestructor() { was_destructed_ = true; }
-  static bool was_destructed_;
-};
-
-bool RefCountedWithDestructor::was_destructed_;
-
-template <typename Set>
-void DestructorsCalledOnGC(bool add_lots) {
-  RefCountedWithDestructor::was_destructed_ = false;
-  {
-    Set set;
-    RefCountedWithDestructor* has_destructor = new RefCountedWithDestructor();
-    set.Add(base::AdoptRef(has_destructor));
-    EXPECT_FALSE(RefCountedWithDestructor::was_destructed_);
-
-    if (add_lots) {
-      for (int i = 0; i < 1000; i++) {
-        set.Add(base::AdoptRef(new RefCountedWithDestructor()));
-      }
-    }
-
-    EXPECT_FALSE(RefCountedWithDestructor::was_destructed_);
-    TestSupportingGC::ConservativelyCollectGarbage();
-    EXPECT_FALSE(RefCountedWithDestructor::was_destructed_);
-  }
-  // The destructors of the sets don't call the destructors of the elements
-  // in the heap sets. You have to actually remove the elments, call clear()
-  // or have a GC to get the destructors called.
-  EXPECT_FALSE(RefCountedWithDestructor::was_destructed_);
-  TestSupportingGC::PreciselyCollectGarbage();
-  EXPECT_TRUE(RefCountedWithDestructor::was_destructed_);
-}
-
-template <typename Set>
-void DestructorsCalledOnClear(bool add_lots) {
-  RefCountedWithDestructor::was_destructed_ = false;
-  Set set;
-  RefCountedWithDestructor* has_destructor = new RefCountedWithDestructor();
-  set.Add(base::AdoptRef(has_destructor));
-  EXPECT_FALSE(RefCountedWithDestructor::was_destructed_);
-
-  if (add_lots) {
-    for (int i = 0; i < 1000; i++) {
-      set.Add(base::AdoptRef(new RefCountedWithDestructor()));
-    }
-  }
-
-  EXPECT_FALSE(RefCountedWithDestructor::was_destructed_);
-  set.Clear();
-  EXPECT_TRUE(RefCountedWithDestructor::was_destructed_);
-}
+}  // namespace
 
 TEST_F(HeapTest, DestructorsCalled) {
   HeapHashMap<Member<IntWrapper>, std::unique_ptr<SimpleClassWithDestructor>>
@@ -4258,164 +2463,14 @@
   EXPECT_TRUE(SimpleClassWithDestructor::was_destructed_);
 }
 
-class MixinA : public GarbageCollectedMixin {
- public:
-  MixinA() : obj_(MakeGarbageCollected<IntWrapper>(100)) {}
-  void Trace(Visitor* visitor) const override {
-    trace_count_++;
-    visitor->Trace(obj_);
-  }
-
-  static int trace_count_;
-
-  Member<IntWrapper> obj_;
-};
-
-int MixinA::trace_count_ = 0;
-
-class MixinB : public GarbageCollectedMixin {
- public:
-  MixinB() : obj_(MakeGarbageCollected<IntWrapper>(101)) {}
-  void Trace(Visitor* visitor) const override { visitor->Trace(obj_); }
-  Member<IntWrapper> obj_;
-};
-
-class MultipleMixins : public GarbageCollected<MultipleMixins>,
-                       public MixinA,
-                       public MixinB {
- public:
-  MultipleMixins() : obj_(MakeGarbageCollected<IntWrapper>(102)) {}
-  void Trace(Visitor* visitor) const override {
-    visitor->Trace(obj_);
-    MixinA::Trace(visitor);
-    MixinB::Trace(visitor);
-  }
-  Member<IntWrapper> obj_;
-};
-
-class DerivedMultipleMixins : public MultipleMixins {
- public:
-  DerivedMultipleMixins() : obj_(MakeGarbageCollected<IntWrapper>(103)) {}
-
-  void Trace(Visitor* visitor) const override {
-    trace_called_++;
-    visitor->Trace(obj_);
-    MultipleMixins::Trace(visitor);
-  }
-
-  static int trace_called_;
-
- private:
-  Member<IntWrapper> obj_;
-};
-
-int DerivedMultipleMixins::trace_called_ = 0;
-
-static const bool kIsMixinTrue = IsGarbageCollectedMixin<MultipleMixins>::value;
-static const bool kIsMixinFalse = IsGarbageCollectedMixin<IntWrapper>::value;
-
-TEST_F(HeapTest, MultipleMixins) {
-  EXPECT_TRUE(kIsMixinTrue);
-  EXPECT_FALSE(kIsMixinFalse);
-
-  ClearOutOldGarbage();
-  IntWrapper::destructor_calls_ = 0;
-  MultipleMixins* obj = MakeGarbageCollected<MultipleMixins>();
-  {
-    Persistent<MixinA> a = obj;
-    PreciselyCollectGarbage();
-    EXPECT_EQ(0, IntWrapper::destructor_calls_);
-  }
-  {
-    Persistent<MixinB> b = obj;
-    PreciselyCollectGarbage();
-    EXPECT_EQ(0, IntWrapper::destructor_calls_);
-  }
-  PreciselyCollectGarbage();
-  EXPECT_EQ(3, IntWrapper::destructor_calls_);
-}
-
-TEST_F(HeapTest, DerivedMultipleMixins) {
-  ClearOutOldGarbage();
-  IntWrapper::destructor_calls_ = 0;
-  DerivedMultipleMixins::trace_called_ = 0;
-
-  DerivedMultipleMixins* obj = MakeGarbageCollected<DerivedMultipleMixins>();
-  {
-    Persistent<MixinA> a = obj;
-    PreciselyCollectGarbage();
-    EXPECT_EQ(0, IntWrapper::destructor_calls_);
-    EXPECT_LT(0, DerivedMultipleMixins::trace_called_);
-  }
-  {
-    Persistent<MixinB> b = obj;
-    PreciselyCollectGarbage();
-    EXPECT_EQ(0, IntWrapper::destructor_calls_);
-    EXPECT_LT(0, DerivedMultipleMixins::trace_called_);
-  }
-  PreciselyCollectGarbage();
-  EXPECT_EQ(4, IntWrapper::destructor_calls_);
-}
-
-class MixinInstanceWithoutTrace
-    : public GarbageCollected<MixinInstanceWithoutTrace>,
-      public MixinA {
- public:
-  MixinInstanceWithoutTrace() = default;
-};
-
-TEST_F(HeapTest, MixinInstanceWithoutTrace) {
-  // Verify that a mixin instance without any traceable
-  // references inherits the mixin's trace implementation.
-  ClearOutOldGarbage();
-  MixinA::trace_count_ = 0;
-  MixinInstanceWithoutTrace* obj =
-      MakeGarbageCollected<MixinInstanceWithoutTrace>();
-  int saved_trace_count = 0;
-  {
-    Persistent<MixinA> a = obj;
-    PreciselyCollectGarbage();
-    saved_trace_count = MixinA::trace_count_;
-    EXPECT_LT(0, saved_trace_count);
-  }
-  {
-    Persistent<MixinInstanceWithoutTrace> b = obj;
-    PreciselyCollectGarbage();
-    EXPECT_LT(saved_trace_count, MixinA::trace_count_);
-    saved_trace_count = MixinA::trace_count_;
-  }
-  PreciselyCollectGarbage();
-  // Oilpan might still call trace on dead objects for various reasons which is
-  // valid before sweeping started.
-  EXPECT_LE(saved_trace_count, MixinA::trace_count_);
-}
-
-TEST_F(HeapTest, NeedsAdjustPointer) {
-  // class Mixin : public GarbageCollectedMixin {};
-  static_assert(NeedsAdjustPointer<Mixin>::value,
-                "A Mixin pointer needs adjustment");
-  static_assert(NeedsAdjustPointer<const Mixin>::value,
-                "A const Mixin pointer needs adjustment");
-
-  // class SimpleObject : public GarbageCollected<SimpleObject> {};
-  static_assert(!NeedsAdjustPointer<SimpleObject>::value,
-                "A SimpleObject pointer does not need adjustment");
-  static_assert(!NeedsAdjustPointer<const SimpleObject>::value,
-                "A const SimpleObject pointer does not need adjustment");
-
-  // class UseMixin : public SimpleObject, public Mixin {};
-  static_assert(!NeedsAdjustPointer<UseMixin>::value,
-                "A UseMixin pointer does not need adjustment");
-  static_assert(!NeedsAdjustPointer<const UseMixin>::value,
-                "A const UseMixin pointer does not need adjustment");
-}
-
+namespace {
 static void AddElementsToWeakMap(
     HeapHashMap<int, WeakMember<IntWrapper>>* map) {
   // Key cannot be zero in hashmap.
   for (int i = 1; i < 11; i++)
     map->insert(i, MakeGarbageCollected<IntWrapper>(i));
 }
+}  // namespace
 
 // crbug.com/402426
 // If it doesn't assert a concurrent modification to the map, then it's passing.
@@ -4429,6 +2484,104 @@
   result.stored_value->value = MakeGarbageCollected<IntWrapper>(42);
 }
 
+namespace {
+class SimpleObject : public GarbageCollected<SimpleObject> {
+ public:
+  SimpleObject() = default;
+  virtual void Trace(Visitor* visitor) const {}
+  char GetPayload(int i) { return payload[i]; }
+  // This virtual method is unused but it is here to make sure
+  // that this object has a vtable. This object is used
+  // as the super class for objects that also have garbage
+  // collected mixins and having a virtual here makes sure
+  // that adjustment is needed both for marking and for isAlive
+  // checks.
+  virtual void VirtualMethod() {}
+
+ protected:
+  char payload[64];
+};
+
+class Mixin : public GarbageCollectedMixin {
+ public:
+  void Trace(Visitor* visitor) const override {}
+
+  virtual char GetPayload(int i) { return padding_[i]; }
+
+ protected:
+  int padding_[8];
+};
+
+class UseMixin : public SimpleObject, public Mixin {
+ public:
+  UseMixin() {
+    // Verify that WTF::IsGarbageCollectedType<> works as expected for mixins.
+    static_assert(WTF::IsGarbageCollectedType<UseMixin>::value,
+                  "IsGarbageCollectedType<> sanity check failed for GC mixin.");
+    trace_count_ = 0;
+  }
+
+  static int trace_count_;
+  void Trace(Visitor* visitor) const override {
+    SimpleObject::Trace(visitor);
+    Mixin::Trace(visitor);
+    ++trace_count_;
+  }
+};
+int UseMixin::trace_count_ = 0;
+
+class Bar : public GarbageCollected<Bar> {
+ public:
+  Bar() : magic_(kMagic) { live_++; }
+
+  virtual ~Bar() {
+    EXPECT_TRUE(magic_ == kMagic);
+    magic_ = 0;
+    live_--;
+  }
+  bool HasBeenFinalized() const { return !magic_; }
+
+  virtual void Trace(Visitor* visitor) const {}
+  static unsigned live_;
+
+ protected:
+  static const int kMagic = 1337;
+  int magic_;
+};
+unsigned Bar::live_ = 0;
+
+class OffHeapInt : public RefCounted<OffHeapInt> {
+  USING_FAST_MALLOC(OffHeapInt);
+
+ public:
+  static scoped_refptr<OffHeapInt> Create(int x) {
+    return base::AdoptRef(new OffHeapInt(x));
+  }
+
+  virtual ~OffHeapInt() { ++destructor_calls_; }
+
+  static int destructor_calls_;
+
+  int Value() const { return x_; }
+
+  bool operator==(const OffHeapInt& other) const {
+    return other.Value() == Value();
+  }
+
+  unsigned GetHash() { return IntHash<int>::GetHash(x_); }
+  void VoidFunction() {}
+
+  OffHeapInt() = delete;
+
+ protected:
+  explicit OffHeapInt(int x) : x_(x) {}
+
+ private:
+  int x_;
+};
+int OffHeapInt::destructor_calls_ = 0;
+}  // namespace
+
 TEST_F(HeapTest, Bind) {
   base::OnceClosure closure =
       WTF::Bind(static_cast<void (Bar::*)(Visitor*) const>(&Bar::Trace),
@@ -4445,17 +2598,11 @@
   base::OnceClosure mixin_closure =
       WTF::Bind(static_cast<void (Mixin::*)(Visitor*) const>(&Mixin::Trace),
                 WrapPersistent(mixin), nullptr);
-  {
-    DisableHeapVerificationScope scope(
-        "Avoid tracing UseMixin during verification");
-    PreciselyCollectGarbage();
-  }
+  PreciselyCollectGarbage();
   // The closure should have a persistent handle to the mixin.
-  EXPECT_EQ(1, UseMixin::trace_count_);
+  EXPECT_LE(1, UseMixin::trace_count_);
 }
 
-typedef HeapHashSet<WeakMember<IntWrapper>> WeakSet;
-
 TEST_F(HeapTest, EphemeronsInEphemerons) {
   typedef HeapHashMap<WeakMember<IntWrapper>, Member<IntWrapper>> InnerMap;
   typedef HeapHashMap<WeakMember<IntWrapper>, Member<InnerMap>> OuterMap;
@@ -4516,6 +2663,7 @@
   }
 }
 
+namespace {
 class EphemeronWrapper : public GarbageCollected<EphemeronWrapper> {
  public:
   void Trace(Visitor* visitor) const { visitor->Trace(map_); }
@@ -4526,6 +2674,7 @@
  private:
   Map map_;
 };
+}  // namespace
 
 TEST_F(HeapTest, EphemeronsPointToEphemerons) {
   Persistent<IntWrapper> key = MakeGarbageCollected<IntWrapper>(42);
@@ -4606,6 +2755,7 @@
   EXPECT_EQ(0u, set->size());
 }
 
+namespace {
 class Link1 : public GarbageCollected<Link1> {
  public:
   Link1(IntWrapper* link) : link_(link) {}
@@ -4617,6 +2767,7 @@
  private:
   Member<IntWrapper> link_;
 };
+}  // namespace
 
 TEST_F(HeapTest, IndirectStrongToWeak) {
   typedef HeapHashMap<WeakMember<IntWrapper>, Member<Link1>> Map;
@@ -4640,37 +2791,6 @@
   EXPECT_EQ(0u, map->size());
 }
 
-static bool AllocateAndReturnBool() {
-  TestSupportingGC::ConservativelyCollectGarbage();
-  return true;
-}
-
-template <typename T>
-class TraceIfNeededTester final
-    : public GarbageCollected<TraceIfNeededTester<T>> {
- public:
-  TraceIfNeededTester() = default;
-  explicit TraceIfNeededTester(const T& obj) : obj_(obj) {}
-
-  void Trace(Visitor* visitor) const { TraceIfNeeded<T>::Trace(visitor, obj_); }
-  T& Obj() { return obj_; }
-  ~TraceIfNeededTester() = default;
-
- private:
-  T obj_;
-};
-
-class PartObject {
-  DISALLOW_NEW();
-
- public:
-  PartObject() : obj_(MakeGarbageCollected<SimpleObject>()) {}
-  void Trace(Visitor* visitor) const { visitor->Trace(obj_); }
-
- private:
-  Member<SimpleObject> obj_;
-};
-
 class AllocatesOnAssignment : public GarbageCollected<AllocatesOnAssignment> {
  public:
   AllocatesOnAssignment(std::nullptr_t) : value_(nullptr) {}
@@ -4717,10 +2837,6 @@
   std::swap(a.value_, b.value_);
 }
 
-}  // namespace blink
-
-namespace blink {
-
 TEST_F(HeapTest, GCInHashMapOperations) {
   typedef HeapHashMap<Member<AllocatesOnAssignment>,
                       Member<AllocatesOnAssignment>>
@@ -4739,118 +2855,6 @@
     EXPECT_EQ(it->key->Value(), it->value->Value());
 }
 
-class PartObjectWithVirtualMethod {
- public:
-  virtual void Trace(Visitor* visitor) const {}
-};
-
-class ObjectWithVirtualPartObject
-    : public GarbageCollected<ObjectWithVirtualPartObject> {
- public:
-  ObjectWithVirtualPartObject() : dummy_(AllocateAndReturnBool()) {}
-  void Trace(Visitor* visitor) const { visitor->Trace(part_); }
-
- private:
-  bool dummy_;
-  PartObjectWithVirtualMethod part_;
-};
-
-TEST_F(HeapTest, PartObjectWithVirtualMethod) {
-  ObjectWithVirtualPartObject* object =
-      MakeGarbageCollected<ObjectWithVirtualPartObject>();
-  EXPECT_TRUE(object);
-}
-
-class AllocInSuperConstructorArgumentSuper
-    : public GarbageCollected<AllocInSuperConstructorArgumentSuper> {
- public:
-  AllocInSuperConstructorArgumentSuper(bool value) : value_(value) {}
-  virtual ~AllocInSuperConstructorArgumentSuper() = default;
-  virtual void Trace(Visitor* visitor) const {}
-  bool Value() { return value_; }
-
- private:
-  bool value_;
-};
-
-class AllocInSuperConstructorArgument
-    : public AllocInSuperConstructorArgumentSuper {
- public:
-  AllocInSuperConstructorArgument()
-      : AllocInSuperConstructorArgumentSuper(AllocateAndReturnBool()) {}
-};
-
-// Regression test for crbug.com/404511. Tests conservative marking of
-// an object with an uninitialized vtable.
-TEST_F(HeapTest, AllocationInSuperConstructorArgument) {
-  AllocInSuperConstructorArgument* object =
-      MakeGarbageCollected<AllocInSuperConstructorArgument>();
-  EXPECT_TRUE(object);
-  ThreadState::Current()->CollectAllGarbageForTesting();
-}
-
-class NonNodeAllocatingNodeInDestructor final
-    : public GarbageCollected<NonNodeAllocatingNodeInDestructor> {
- public:
-  ~NonNodeAllocatingNodeInDestructor() {
-    node_ = new Persistent<IntNode>(IntNode::Create(10));
-  }
-
-  void Trace(Visitor* visitor) const {}
-
-  static Persistent<IntNode>* node_;
-};
-
-Persistent<IntNode>* NonNodeAllocatingNodeInDestructor::node_ = nullptr;
-
-TEST_F(HeapTest, NonNodeAllocatingNodeInDestructor) {
-  MakeGarbageCollected<NonNodeAllocatingNodeInDestructor>();
-  PreciselyCollectGarbage();
-  EXPECT_EQ(10, (*NonNodeAllocatingNodeInDestructor::node_)->Value());
-  delete NonNodeAllocatingNodeInDestructor::node_;
-  NonNodeAllocatingNodeInDestructor::node_ = nullptr;
-}
-
-class DeepEagerly final : public GarbageCollected<DeepEagerly> {
- public:
-  DeepEagerly(DeepEagerly* next) : next_(next) {}
-
-  void Trace(Visitor* visitor) const {
-    int calls = ++s_trace_calls_;
-    if (s_trace_lazy_ <= 2)
-      visitor->Trace(next_);
-    if (s_trace_calls_ == calls)
-      s_trace_lazy_++;
-  }
-
-  Member<DeepEagerly> next_;
-
-  static int s_trace_calls_;
-  static int s_trace_lazy_;
-};
-
-int DeepEagerly::s_trace_calls_ = 0;
-int DeepEagerly::s_trace_lazy_ = 0;
-
-TEST_F(HeapTest, TraceDeepEagerly) {
-// The allocation & GC overhead is considerable for this test,
-// straining debug builds and lower-end targets too much to be
-// worth running.
-#if !DCHECK_IS_ON() && !defined(OS_ANDROID)
-  DeepEagerly* obj = nullptr;
-  for (int i = 0; i < 10000000; i++)
-    obj = MakeGarbageCollected<DeepEagerly>(obj);
-
-  Persistent<DeepEagerly> persistent(obj);
-  PreciselyCollectGarbage();
-
-  // Verify that the DeepEagerly chain isn't completely unravelled
-  // by performing eager trace() calls, but the explicit mark
-  // stack is switched once some nesting limit is exceeded.
-  EXPECT_GT(DeepEagerly::s_trace_lazy_, 2);
-#endif
-}
-
 TEST_F(HeapTest, DequeExpand) {
   // Test expansion of a HeapDeque<>'s buffer.
 
@@ -4899,6 +2903,7 @@
   }
 }
 
+namespace {
 class SimpleRefValue : public RefCounted<SimpleRefValue> {
  public:
   static scoped_refptr<SimpleRefValue> Create(int i) {
@@ -4926,6 +2931,7 @@
  private:
   scoped_refptr<SimpleRefValue> value_;
 };
+}  // namespace
 
 }  // namespace blink
 
@@ -4966,83 +2972,7 @@
   EXPECT_EQ(14u, vector1.size());
 }
 
-class TestMixinAllocationA : public GarbageCollected<TestMixinAllocationA>,
-                             public GarbageCollectedMixin {
- public:
-  TestMixinAllocationA() = default;
-
-  void Trace(Visitor* visitor) const override {}
-};
-
-class TestMixinAllocationB : public TestMixinAllocationA {
- public:
-  TestMixinAllocationB()
-      // Construct object during a mixin construction.
-      : a_(MakeGarbageCollected<TestMixinAllocationA>()) {}
-
-  void Trace(Visitor* visitor) const override {
-    visitor->Trace(a_);
-    TestMixinAllocationA::Trace(visitor);
-  }
-
- private:
-  Member<TestMixinAllocationA> a_;
-};
-
-class TestMixinAllocationC final : public TestMixinAllocationB {
- public:
-  TestMixinAllocationC() { DCHECK(!ThreadState::Current()->IsGCForbidden()); }
-
-  void Trace(Visitor* visitor) const override {
-    TestMixinAllocationB::Trace(visitor);
-  }
-};
-
-TEST_F(HeapTest, NestedMixinConstruction) {
-  TestMixinAllocationC* object = MakeGarbageCollected<TestMixinAllocationC>();
-  EXPECT_TRUE(object);
-}
-
-class ObjectWithLargeAmountsOfAllocationInConstructor {
- public:
-  ObjectWithLargeAmountsOfAllocationInConstructor(
-      size_t number_of_large_objects_to_allocate,
-      ClassWithMember* member) {
-    // Should a constructor allocate plenty in its constructor,
-    // and it is a base of GC mixin, GCs will remain locked out
-    // regardless, as we cannot safely trace the leftmost GC
-    // mixin base.
-    DCHECK(ThreadState::Current()->IsGCForbidden());
-    for (size_t i = 0; i < number_of_large_objects_to_allocate; i++) {
-      auto* large_object = MakeGarbageCollected<LargeHeapObject>();
-      EXPECT_TRUE(large_object);
-      EXPECT_EQ(0, member->TraceCount());
-    }
-  }
-};
-
-class WeakPersistentHolder final {
- public:
-  explicit WeakPersistentHolder(IntWrapper* object) : object_(object) {}
-  IntWrapper* Object() const { return object_; }
-
- private:
-  WeakPersistent<IntWrapper> object_;
-};
-
-TEST_F(HeapTest, WeakPersistent) {
-  Persistent<IntWrapper> object = MakeGarbageCollected<IntWrapper>(20);
-  std::unique_ptr<WeakPersistentHolder> holder =
-      std::make_unique<WeakPersistentHolder>(object);
-  PreciselyCollectGarbage();
-  EXPECT_TRUE(holder->Object());
-  object = nullptr;
-  PreciselyCollectGarbage();
-  EXPECT_FALSE(holder->Object());
-}
-
 namespace {
-
 class ThreadedClearOnShutdownTester : public ThreadedTesterBase {
  public:
   static void Test() {
@@ -5136,92 +3066,76 @@
   // Creates a thread-specific singleton to a weakly held object.
   GetWeakHeapObjectSet().insert(MakeGarbageCollected<HeapObject>(true));
 }
-
 }  // namespace
 
 TEST_F(HeapTest, TestClearOnShutdown) {
   ThreadedClearOnShutdownTester::Test();
 }
 
-// Verify that WeakMember<const T> compiles and behaves as expected.
-class WithWeakConstObject final : public GarbageCollected<WithWeakConstObject> {
+namespace {
+class KeyWithCopyingMoveConstructor final {
+  DISALLOW_NEW();
+
  public:
-  WithWeakConstObject(const IntWrapper* int_wrapper) : wrapper_(int_wrapper) {}
+  struct Hash final {
+    STATIC_ONLY(Hash);
 
-  void Trace(Visitor* visitor) const { visitor->Trace(wrapper_); }
+   public:
+    static unsigned GetHash(const KeyWithCopyingMoveConstructor& key) {
+      return key.hash_;
+    }
 
-  const IntWrapper* Value() const { return wrapper_; }
+    static bool Equal(const KeyWithCopyingMoveConstructor& x,
+                      const KeyWithCopyingMoveConstructor& y) {
+      return x.hash_ == y.hash_;
+    }
+
+    static constexpr bool safe_to_compare_to_empty_or_deleted = true;
+  };
+
+  KeyWithCopyingMoveConstructor() = default;
+  explicit KeyWithCopyingMoveConstructor(WTF::HashTableDeletedValueType)
+      : hash_(-1) {}
+  ~KeyWithCopyingMoveConstructor() = default;
+  KeyWithCopyingMoveConstructor(unsigned hash, const String& string)
+      : hash_(hash), string_(string) {
+    DCHECK_NE(hash_, 0);
+    DCHECK_NE(hash_, -1);
+  }
+  KeyWithCopyingMoveConstructor(const KeyWithCopyingMoveConstructor&) = default;
+  // The move constructor delegates to the copy constructor intentionally.
+  KeyWithCopyingMoveConstructor(KeyWithCopyingMoveConstructor&& x)
+      : KeyWithCopyingMoveConstructor(x) {}
+  KeyWithCopyingMoveConstructor& operator=(
+      const KeyWithCopyingMoveConstructor&) = default;
+  bool operator==(const KeyWithCopyingMoveConstructor& x) const {
+    return hash_ == x.hash_;
+  }
+
+  bool IsHashTableDeletedValue() const { return hash_ == -1; }
 
  private:
-  WeakMember<const IntWrapper> wrapper_;
+  int hash_ = 0;
+  String string_;
+};
+}  // namespace
+
+}  // namespace blink
+
+namespace WTF {
+
+template <>
+struct DefaultHash<blink::KeyWithCopyingMoveConstructor> {
+  using Hash = blink::KeyWithCopyingMoveConstructor::Hash;
 };
 
-TEST_F(HeapTest, TestWeakConstObject) {
-  Persistent<WithWeakConstObject> weak_wrapper;
-  {
-    const auto* wrapper = MakeGarbageCollected<IntWrapper>(42);
-    weak_wrapper = MakeGarbageCollected<WithWeakConstObject>(wrapper);
-    ConservativelyCollectGarbage();
-    EXPECT_EQ(wrapper, weak_wrapper->Value());
-    // Stub out any stack reference.
-    wrapper = nullptr;
-  }
-  PreciselyCollectGarbage();
-  EXPECT_EQ(nullptr, weak_wrapper->Value());
-}
+template <>
+struct HashTraits<blink::KeyWithCopyingMoveConstructor>
+    : public SimpleClassHashTraits<blink::KeyWithCopyingMoveConstructor> {};
 
-class EmptyMixin : public GarbageCollectedMixin {};
-class UseMixinFromLeftmostInherited : public UseMixin, public EmptyMixin {
- public:
-  ~UseMixinFromLeftmostInherited() = default;
-};
+}  // namespace WTF
 
-TEST_F(HeapTest, IsGarbageCollected) {
-  // Static sanity checks covering the correct operation of
-  // IsGarbageCollectedType<>.
-
-  static_assert(WTF::IsGarbageCollectedType<SimpleObject>::value,
-                "GarbageCollected<>");
-  static_assert(WTF::IsGarbageCollectedType<const SimpleObject>::value,
-                "const GarbageCollected<>");
-  static_assert(WTF::IsGarbageCollectedType<IntWrapper>::value,
-                "GarbageCollected<>");
-  static_assert(WTF::IsGarbageCollectedType<GarbageCollectedMixin>::value,
-                "GarbageCollectedMixin");
-  static_assert(WTF::IsGarbageCollectedType<const GarbageCollectedMixin>::value,
-                "const GarbageCollectedMixin");
-  static_assert(WTF::IsGarbageCollectedType<UseMixin>::value,
-                "GarbageCollectedMixin instance");
-  static_assert(WTF::IsGarbageCollectedType<const UseMixin>::value,
-                "const GarbageCollectedMixin instance");
-  static_assert(
-      WTF::IsGarbageCollectedType<UseMixinFromLeftmostInherited>::value,
-      "GarbageCollectedMixin derived instance");
-  static_assert(WTF::IsGarbageCollectedType<MultipleMixins>::value,
-                "GarbageCollectedMixin");
-
-  static_assert(
-      WTF::IsGarbageCollectedType<HeapHashSet<Member<IntWrapper>>>::value,
-      "HeapHashSet");
-  static_assert(
-      WTF::IsGarbageCollectedType<HeapLinkedHashSet<Member<IntWrapper>>>::value,
-      "HeapLinkedHashSet");
-  static_assert(
-      WTF::IsGarbageCollectedType<HeapListHashSet<Member<IntWrapper>>>::value,
-      "HeapListHashSet");
-  static_assert(WTF::IsGarbageCollectedType<
-                    HeapHashCountedSet<Member<IntWrapper>>>::value,
-                "HeapHashCountedSet");
-  static_assert(
-      WTF::IsGarbageCollectedType<HeapHashMap<int, Member<IntWrapper>>>::value,
-      "HeapHashMap");
-  static_assert(
-      WTF::IsGarbageCollectedType<HeapVector<Member<IntWrapper>>>::value,
-      "HeapVector");
-  static_assert(
-      WTF::IsGarbageCollectedType<HeapDeque<Member<IntWrapper>>>::value,
-      "HeapDeque");
-}
+namespace blink {
 
 TEST_F(HeapTest, HeapHashMapCallsDestructor) {
   String string = "string";
@@ -5259,31 +3173,7 @@
   vector.ShrinkToFit();
 }
 
-TEST_F(HeapTest, GarbageCollectedInConstruction) {
-  using O = ObjectWithCallbackBeforeInitializer<IntWrapper>;
-  MakeGarbageCollected<O>(base::BindOnce([](O* thiz) {
-    CHECK(HeapObjectHeader::FromPayload(thiz)->IsInConstruction());
-  }));
-}
-
-TEST_F(HeapTest, GarbageCollectedMixinInConstruction) {
-  using O = ObjectWithMixinWithCallbackBeforeInitializer<IntWrapper>;
-  MakeGarbageCollected<O>(base::BindOnce([](O::Mixin* thiz) {
-    const HeapObjectHeader* const header =
-        HeapObjectHeader::FromInnerAddress(reinterpret_cast<Address>(thiz));
-    CHECK(header->IsInConstruction());
-  }));
-}
-
-TEST_F(HeapTest, PersistentAssignsDeletedValue) {
-  // Regression test: https://crbug.com/982313
-
-  Persistent<IntWrapper> deleted(WTF::kHashTableDeletedValue);
-  Persistent<IntWrapper> pre_initialized(MakeGarbageCollected<IntWrapper>(1));
-  pre_initialized = deleted;
-  PreciselyCollectGarbage();
-}
-
+namespace {
 struct HeapHashMapWrapper final : GarbageCollected<HeapHashMapWrapper> {
   HeapHashMapWrapper() {
     for (int i = 0; i < 100; ++i) {
@@ -5302,6 +3192,7 @@
   };
   HeapHashMap<Member<IntWrapper>, NonTriviallyDestructible> map_;
 };
+}  // namespace
 
 TEST_F(HeapTest, AccessDeletedBackingStore) {
   // Regression test: https://crbug.com/985443
@@ -5334,47 +3225,6 @@
   }
 }
 
-class GCBase : public GarbageCollected<GCBase> {
- public:
-  virtual void Trace(Visitor*) const {}
-};
-
-class GCDerived final : public GCBase {
- public:
-  static int destructor_called;
-  void Trace(Visitor* visitor) const override { GCBase::Trace(visitor); }
-  ~GCDerived() { ++destructor_called; }
-};
-
-int GCDerived::destructor_called = 0;
-
-TEST_F(HeapTest, CallMostDerivedFinalizer) {
-  MakeGarbageCollected<GCDerived>();
-  PreciselyCollectGarbage();
-  EXPECT_EQ(1, GCDerived::destructor_called);
-}
-
-#if defined(ADDRESS_SANITIZER)
-TEST(HeapDeathTest, DieOnPoisonedObjectHeaderAccess) {
-  auto* ptr = MakeGarbageCollected<IntWrapper>(1);
-  HeapObjectHeader* header = HeapObjectHeader::FromPayload(ptr);
-  auto* low = reinterpret_cast<uint16_t*>(header);
-  auto access = [low] {
-    volatile uint16_t half = WTF::AsAtomicPtr(low)->load();
-    WTF::AsAtomicPtr(low)->store(half);
-  };
-  EXPECT_DEATH(access(), "");
-}
-
-TEST_F(HeapTest, SuccessfulUnsanitizedAccessToObjectHeader) {
-  auto* ptr = MakeGarbageCollected<IntWrapper>(1);
-  HeapObjectHeader* header = HeapObjectHeader::FromPayload(ptr);
-  auto* low = reinterpret_cast<uint16_t*>(header);
-  volatile uint16_t half = internal::AsUnsanitizedAtomic(low)->load();
-  internal::AsUnsanitizedAtomic(low)->store(half);
-}
-#endif  // ADDRESS_SANITIZER
-
 namespace {
 class FakeCSSValue : public GarbageCollected<FakeCSSValue> {
  public:
@@ -5407,8 +3257,7 @@
   static const size_t kLength = 32;
   char data_[kLength];
 };
-
-}  // anonymous namespace
+}  // namespace
 
 // TODO(1181269): Enable for the library once implemented.
 #if !BUILDFLAG(USE_V8_OILPAN)
diff --git a/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.cc b/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.cc
index d35eba36..f8aead8 100644
--- a/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.cc
+++ b/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.cc
@@ -5,15 +5,83 @@
 #include "third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.h"
 
 #include "gin/public/v8_platform.h"
+#include "third_party/blink/renderer/platform/bindings/dom_wrapper_world.h"
+#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
 #include "third_party/blink/renderer/platform/bindings/wrapper_type_info.h"
 #include "third_party/blink/renderer/platform/heap/v8_wrapper/custom_spaces.h"
 #include "third_party/blink/renderer/platform/wtf/hash_set.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 #include "v8.h"
+#include "v8/include/cppgc/heap-consistency.h"
 #include "v8/include/v8-cppgc.h"
 
 namespace blink {
 
+namespace {
+
+// Handler allowing for dropping V8 wrapper objects that can be recreated
+// lazily.
+class BlinkRootsHandler final : public v8::EmbedderRootsHandler {
+ public:
+  explicit BlinkRootsHandler(v8::CppHeap& cpp_heap) : cpp_heap_(cpp_heap) {}
+  ~BlinkRootsHandler() final = default;
+
+  bool IsRoot(const v8::TracedReference<v8::Value>& handle) final {
+    const uint16_t class_id = handle.WrapperClassId();
+    // Stand-alone reference or kCustomWrappableId. Keep as root as
+    // we don't know better.
+    if (class_id != WrapperTypeInfo::kNodeClassId &&
+        class_id != WrapperTypeInfo::kObjectClassId)
+      return true;
+
+    const v8::TracedReference<v8::Object>& traced =
+        handle.template As<v8::Object>();
+    if (ToWrapperTypeInfo(traced)->IsActiveScriptWrappable() &&
+        ToScriptWrappable(traced)->HasPendingActivity()) {
+      return true;
+    }
+
+    if (ToScriptWrappable(traced)->HasEventListeners()) {
+      return true;
+    }
+
+    return false;
+  }
+
+  bool IsRoot(const v8::TracedGlobal<v8::Value>& handle) final {
+    CHECK(false) << "Blink does not use v8::TracedGlobal.";
+    return false;
+  }
+
+  // ResetRoot() clears references to V8 wrapper objects in all worlds. It is
+  // invoked for references where IsRoot() returned false during young
+  // generation garbage collections.
+  void ResetRoot(const v8::TracedReference<v8::Value>& handle) final {
+    const uint16_t class_id = handle.WrapperClassId();
+    // Only consider handles that have not been treated as roots, see IsRoot().
+    if (class_id != WrapperTypeInfo::kNodeClassId &&
+        class_id != WrapperTypeInfo::kObjectClassId)
+      return;
+
+    // Clearing the wrapper below adjusts the DOM wrapper store which may
+    // re-allocate its backing. NoGarbageCollectionScope is required to avoid
+    // triggering a GC from such re-allocating calls as ResetRoot() is itself
+    // called from GC.
+    cppgc::subtle::NoGarbageCollectionScope no_gc(cpp_heap_.GetHeapHandle());
+    const v8::TracedReference<v8::Object>& traced = handle.As<v8::Object>();
+    bool success = DOMWrapperWorld::UnsetSpecificWrapperIfSet(
+        ToScriptWrappable(traced), traced);
+    // Since V8 found a handle, Blink needs to find it as well when trying to
+    // remove it.
+    CHECK(success);
+  }
+
+ private:
+  v8::CppHeap& cpp_heap_;
+};
+
+}  // namespace
+
 // static
 base::LazyInstance<WTF::ThreadSpecific<ThreadState*>>::Leaky
     ThreadState::thread_specific_ = LAZY_INSTANCE_INITIALIZER;
@@ -52,11 +120,14 @@
   isolate->AttachCppHeap(cpp_heap_.get());
   CHECK_EQ(cpp_heap_.get(), isolate->GetCppHeap());
   isolate_ = isolate;
+  embedder_roots_handler_ = std::make_unique<BlinkRootsHandler>(cpp_heap());
+  isolate_->SetEmbedderRootsHandler(embedder_roots_handler_.get());
 }
 
 void ThreadState::DetachFromIsolate() {
   CHECK_EQ(cpp_heap_.get(), isolate_->GetCppHeap());
   isolate_->DetachCppHeap();
+  isolate_->SetEmbedderRootsHandler(nullptr);
   isolate_ = nullptr;
 }
 
diff --git a/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.h b/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.h
index 1564aac..b952f154 100644
--- a/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.h
+++ b/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.h
@@ -140,6 +140,7 @@
   ~ThreadState();
 
   std::unique_ptr<v8::CppHeap> cpp_heap_;
+  std::unique_ptr<v8::EmbedderRootsHandler> embedder_roots_handler_;
   cppgc::AllocationHandle& allocation_handle_;
   cppgc::HeapHandle& heap_handle_;
   v8::Isolate* isolate_ = nullptr;
diff --git a/third_party/blink/renderer/platform/image-decoders/jxl/jxl_image_decoder_test.cc b/third_party/blink/renderer/platform/image-decoders/jxl/jxl_image_decoder_test.cc
index fd716bb..be6d60b 100644
--- a/third_party/blink/renderer/platform/image-decoders/jxl/jxl_image_decoder_test.cc
+++ b/third_party/blink/renderer/platform/image-decoders/jxl/jxl_image_decoder_test.cc
@@ -6,6 +6,7 @@
 
 #include <memory>
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/blink/renderer/platform/geometry/int_point.h"
 #include "third_party/blink/renderer/platform/image-decoders/image_decoder_test_helpers.h"
 
 namespace blink {
@@ -15,6 +16,7 @@
 std::unique_ptr<ImageDecoder> CreateJXLDecoderWithArguments(
     const char* jxl_file,
     ImageDecoder::AlphaOption alpha_option,
+    ImageDecoder::HighBitDepthDecodingOption,
     ColorBehavior color_behavior) {
   auto decoder = std::make_unique<JXLImageDecoder>(
       alpha_option, color_behavior, ImageDecoder::kNoDecodedImageByteLimit);
@@ -38,12 +40,13 @@
   return decoder;
 }
 
+// The expected_color must match the expected top left pixel.
 void TestColorProfile(const char* jxl_file,
                       ColorBehavior color_behavior,
                       SkColor expected_color) {
   auto decoder = CreateJXLDecoderWithArguments(
       jxl_file, ImageDecoder::AlphaOption::kAlphaNotPremultiplied,
-      color_behavior);
+      ImageDecoder::kDefaultBitDepth, color_behavior);
   EXPECT_EQ(1u, decoder->FrameCount());
   ImageFrame* frame = decoder->DecodeFrameBufferAtIndex(0);
   ASSERT_TRUE(frame);
@@ -65,13 +68,15 @@
 }
 
 void TestPixel(const char* jxl_file,
-               int x,
-               int y,
                IntSize expected_size,
-               SkColor expected_color,
-               ImageDecoder::AlphaOption alpha_option) {
-  auto decoder = CreateJXLDecoderWithArguments(jxl_file, alpha_option,
-                                               ColorBehavior::Tag());
+               const WTF::Vector<IntPoint>& coordinates,
+               const WTF::Vector<SkColor>& expected_colors,
+               ImageDecoder::AlphaOption alpha_option,
+               ColorBehavior color_behavior,
+               int accuracy) {
+  EXPECT_EQ(coordinates.size(), expected_colors.size());
+  auto decoder = CreateJXLDecoderWithArguments(
+      jxl_file, alpha_option, ImageDecoder::kDefaultBitDepth, color_behavior);
   EXPECT_TRUE(decoder->IsSizeAvailable());
   EXPECT_EQ(expected_size, decoder->Size());
   EXPECT_EQ(1u, decoder->FrameCount());
@@ -80,8 +85,24 @@
   EXPECT_EQ(ImageFrame::kFrameComplete, frame->GetStatus());
   EXPECT_FALSE(decoder->Failed());
   const SkBitmap& bitmap = frame->Bitmap();
-  SkColor frame_color = bitmap.getColor(x, y);
-  EXPECT_EQ(frame_color, expected_color);
+  for (size_t i = 0; i < coordinates.size(); ++i) {
+    int x = coordinates[i].X();
+    int y = coordinates[i].Y();
+    SkColor frame_color = bitmap.getColor(x, y);
+    int r_expected = (expected_colors[i] >> 16) & 255;
+    int g_expected = (expected_colors[i] >> 8) & 255;
+    int b_expected = (expected_colors[i] >> 0) & 255;
+    int a_expected = (expected_colors[i] >> 24) & 255;
+    int r_actual = (frame_color >> 16) & 255;
+    int g_actual = (frame_color >> 8) & 255;
+    int b_actual = (frame_color >> 0) & 255;
+    int a_actual = (frame_color >> 24) & 255;
+    EXPECT_NEAR(r_expected, r_actual, accuracy);
+    EXPECT_NEAR(g_expected, g_actual, accuracy);
+    EXPECT_NEAR(b_expected, b_actual, accuracy);
+    // Alpha is always lossless.
+    EXPECT_EQ(a_expected, a_actual);
+  }
 }
 
 TEST(JXLTests, SizeTest) {
@@ -89,27 +110,233 @@
 }
 
 TEST(JXLTests, PixelTest) {
-  TestPixel("/images/resources/jxl/red-10-default.jxl", 0, 0, IntSize(10, 10),
-            SkColorSetARGB(255, 255, 0, 0),
-            ImageDecoder::AlphaOption::kAlphaNotPremultiplied);
-  TestPixel("/images/resources/jxl/red-10-lossless.jxl", 0, 1, IntSize(10, 10),
-            SkColorSetARGB(255, 255, 0, 0),
-            ImageDecoder::AlphaOption::kAlphaNotPremultiplied);
-  TestPixel("/images/resources/jxl/red-10-container.jxl", 1, 0, IntSize(10, 10),
-            SkColorSetARGB(255, 255, 0, 0),
-            ImageDecoder::AlphaOption::kAlphaNotPremultiplied);
-  TestPixel("/images/resources/jxl/green-10-lossless.jxl", 2, 3,
-            IntSize(10, 10), SkColorSetARGB(255, 0, 255, 0),
-            ImageDecoder::AlphaOption::kAlphaNotPremultiplied);
-  TestPixel("/images/resources/jxl/blue-10-lossless.jxl", 9, 9, IntSize(10, 10),
-            SkColorSetARGB(255, 0, 0, 255),
-            ImageDecoder::AlphaOption::kAlphaNotPremultiplied);
-  TestPixel("/images/resources/jxl/alpha-lossless.jxl", 0, 1, IntSize(2, 10),
-            SkColorSetARGB(0, 255, 255, 255),
-            ImageDecoder::AlphaOption::kAlphaNotPremultiplied);
-  TestPixel("/images/resources/jxl/alpha-lossless.jxl", 0, 1, IntSize(2, 10),
-            SkColorSetARGB(0, 0, 0, 0),
-            ImageDecoder::AlphaOption::kAlphaPremultiplied);
+  TestPixel("/images/resources/jxl/red-10-default.jxl", IntSize(10, 10),
+            {{0, 0}}, {SkColorSetARGB(255, 255, 0, 0)},
+            ImageDecoder::AlphaOption::kAlphaNotPremultiplied,
+            ColorBehavior::Tag(), 0);
+  TestPixel("/images/resources/jxl/red-10-lossless.jxl", IntSize(10, 10),
+            {{0, 1}}, {SkColorSetARGB(255, 255, 0, 0)},
+            ImageDecoder::AlphaOption::kAlphaNotPremultiplied,
+            ColorBehavior::Tag(), 0);
+  TestPixel("/images/resources/jxl/red-10-container.jxl", IntSize(10, 10),
+            {{1, 0}}, {SkColorSetARGB(255, 255, 0, 0)},
+            ImageDecoder::AlphaOption::kAlphaNotPremultiplied,
+            ColorBehavior::Tag(), 0);
+  TestPixel("/images/resources/jxl/green-10-lossless.jxl", IntSize(10, 10),
+            {{2, 3}}, {SkColorSetARGB(255, 0, 255, 0)},
+            ImageDecoder::AlphaOption::kAlphaNotPremultiplied,
+            ColorBehavior::Tag(), 0);
+  TestPixel("/images/resources/jxl/blue-10-lossless.jxl", IntSize(10, 10),
+            {{9, 9}}, {SkColorSetARGB(255, 0, 0, 255)},
+            ImageDecoder::AlphaOption::kAlphaNotPremultiplied,
+            ColorBehavior::Tag(), 0);
+  TestPixel("/images/resources/jxl/alpha-lossless.jxl", IntSize(2, 10),
+            {{0, 1}}, {SkColorSetARGB(0, 255, 255, 255)},
+            ImageDecoder::AlphaOption::kAlphaNotPremultiplied,
+            ColorBehavior::Tag(), 0);
+  TestPixel("/images/resources/jxl/alpha-lossless.jxl", IntSize(2, 10),
+            {{0, 1}}, {SkColorSetARGB(0, 0, 0, 0)},
+            ImageDecoder::AlphaOption::kAlphaPremultiplied,
+            ColorBehavior::Tag(), 0);
+
+  WTF::Vector<IntPoint> coordinates_3x3 = {
+      {0, 0}, {1, 0}, {2, 0}, {0, 1}, {1, 1}, {2, 1}, {0, 2}, {1, 2}, {2, 2},
+  };
+
+  TestPixel("/images/resources/jxl/3x3_srgb_lossless.jxl", IntSize(3, 3),
+            coordinates_3x3,
+            {
+                SkColorSetARGB(255, 255, 0, 0),
+                SkColorSetARGB(255, 0, 255, 0),
+                SkColorSetARGB(255, 0, 0, 255),
+                SkColorSetARGB(255, 128, 64, 64),
+                SkColorSetARGB(255, 64, 128, 64),
+                SkColorSetARGB(255, 64, 64, 128),
+                SkColorSetARGB(255, 255, 255, 255),
+                SkColorSetARGB(255, 128, 128, 128),
+                SkColorSetARGB(255, 0, 0, 0),
+            },
+            ImageDecoder::AlphaOption::kAlphaPremultiplied,
+            ColorBehavior::TransformToSRGB(), 0);
+
+  TestPixel("/images/resources/jxl/3x3_srgb_lossy.jxl", IntSize(3, 3),
+            coordinates_3x3,
+            {
+                SkColorSetARGB(255, 255, 0, 0),
+                SkColorSetARGB(255, 0, 255, 0),
+                SkColorSetARGB(255, 0, 0, 255),
+                SkColorSetARGB(255, 128, 64, 64),
+                SkColorSetARGB(255, 64, 128, 64),
+                SkColorSetARGB(255, 64, 64, 128),
+                SkColorSetARGB(255, 255, 255, 255),
+                SkColorSetARGB(255, 128, 128, 128),
+                SkColorSetARGB(255, 0, 0, 0),
+            },
+            ImageDecoder::AlphaOption::kAlphaPremultiplied,
+            ColorBehavior::TransformToSRGB(), 15);
+
+  TestPixel("/images/resources/jxl/3x3a_srgb_lossless.jxl", IntSize(3, 3),
+            coordinates_3x3,
+            {
+                SkColorSetARGB(128, 255, 0, 0),
+                SkColorSetARGB(128, 0, 255, 0),
+                SkColorSetARGB(128, 0, 0, 255),
+                SkColorSetARGB(128, 128, 64, 64),
+                SkColorSetARGB(128, 64, 128, 64),
+                SkColorSetARGB(128, 64, 64, 128),
+                SkColorSetARGB(128, 255, 255, 255),
+                SkColorSetARGB(128, 128, 128, 128),
+                SkColorSetARGB(128, 0, 0, 0),
+            },
+            ImageDecoder::AlphaOption::kAlphaPremultiplied,
+            ColorBehavior::TransformToSRGB(), 0);
+
+  TestPixel("/images/resources/jxl/3x3a_srgb_lossy.jxl", IntSize(3, 3),
+            coordinates_3x3,
+            {
+                SkColorSetARGB(128, 255, 0, 0),
+                SkColorSetARGB(128, 0, 255, 0),
+                SkColorSetARGB(128, 0, 0, 255),
+                SkColorSetARGB(128, 128, 64, 64),
+                SkColorSetARGB(128, 64, 128, 64),
+                SkColorSetARGB(128, 64, 64, 128),
+                SkColorSetARGB(128, 255, 255, 255),
+                SkColorSetARGB(128, 128, 128, 128),
+                SkColorSetARGB(128, 0, 0, 0),
+            },
+            ImageDecoder::AlphaOption::kAlphaPremultiplied,
+            ColorBehavior::TransformToSRGB(), 15);
+
+  // Lossless, but allow some inaccuracy due to the color profile conversion.
+  TestPixel("/images/resources/jxl/3x3_gbr_lossless.jxl", IntSize(3, 3),
+            coordinates_3x3,
+            {
+                SkColorSetARGB(255, 0, 255, 0),
+                SkColorSetARGB(255, 0, 0, 255),
+                SkColorSetARGB(255, 255, 0, 0),
+                SkColorSetARGB(255, 64, 128, 64),
+                SkColorSetARGB(255, 64, 64, 128),
+                SkColorSetARGB(255, 128, 64, 64),
+                SkColorSetARGB(255, 255, 255, 255),
+                SkColorSetARGB(255, 128, 128, 128),
+                SkColorSetARGB(255, 0, 0, 0),
+            },
+            ImageDecoder::AlphaOption::kAlphaPremultiplied,
+            ColorBehavior::TransformToSRGB(), 3);
+
+  TestPixel("/images/resources/jxl/3x3_gbr_lossy.jxl", IntSize(3, 3),
+            coordinates_3x3,
+            {
+                SkColorSetARGB(255, 0, 255, 0),
+                SkColorSetARGB(255, 0, 0, 255),
+                SkColorSetARGB(255, 255, 0, 0),
+                SkColorSetARGB(255, 64, 128, 64),
+                SkColorSetARGB(255, 64, 64, 128),
+                SkColorSetARGB(255, 128, 64, 64),
+                SkColorSetARGB(255, 255, 255, 255),
+                SkColorSetARGB(255, 128, 128, 128),
+                SkColorSetARGB(255, 0, 0, 0),
+            },
+            ImageDecoder::AlphaOption::kAlphaPremultiplied,
+            ColorBehavior::TransformToSRGB(), 35);
+
+  // Lossless, but allow some inaccuracy due to the color profile conversion.
+  TestPixel("/images/resources/jxl/3x3a_gbr_lossless.jxl", IntSize(3, 3),
+            coordinates_3x3,
+            {
+                SkColorSetARGB(128, 0, 255, 0),
+                SkColorSetARGB(128, 0, 0, 255),
+                SkColorSetARGB(128, 255, 0, 0),
+                SkColorSetARGB(128, 64, 128, 64),
+                SkColorSetARGB(128, 64, 64, 128),
+                SkColorSetARGB(128, 128, 64, 64),
+                SkColorSetARGB(128, 255, 255, 255),
+                SkColorSetARGB(128, 128, 128, 128),
+                SkColorSetARGB(128, 0, 0, 0),
+            },
+            ImageDecoder::AlphaOption::kAlphaPremultiplied,
+            ColorBehavior::TransformToSRGB(), 3);
+
+  TestPixel("/images/resources/jxl/3x3a_gbr_lossy.jxl", IntSize(3, 3),
+            coordinates_3x3,
+            {
+                SkColorSetARGB(128, 0, 255, 0),
+                SkColorSetARGB(128, 0, 0, 255),
+                SkColorSetARGB(128, 255, 0, 0),
+                SkColorSetARGB(128, 64, 128, 64),
+                SkColorSetARGB(128, 64, 64, 128),
+                SkColorSetARGB(128, 128, 64, 64),
+                SkColorSetARGB(128, 255, 255, 255),
+                SkColorSetARGB(128, 128, 128, 128),
+                SkColorSetARGB(128, 0, 0, 0),
+            },
+            ImageDecoder::AlphaOption::kAlphaPremultiplied,
+            ColorBehavior::TransformToSRGB(), 35);
+
+  // Lossless, but allow some inaccuracy due to the color profile conversion.
+  TestPixel("/images/resources/jxl/3x3_pq_lossless.jxl", IntSize(3, 3),
+            coordinates_3x3,
+            {
+                SkColorSetARGB(255, 255, 0, 0),
+                SkColorSetARGB(255, 0, 255, 0),
+                SkColorSetARGB(255, 0, 0, 255),
+                SkColorSetARGB(255, 33, 0, 0),
+                SkColorSetARGB(255, 0, 26, 0),
+                SkColorSetARGB(255, 0, 1, 26),
+                SkColorSetARGB(255, 255, 255, 255),
+                SkColorSetARGB(255, 24, 24, 24),
+                SkColorSetARGB(255, 0, 0, 0),
+            },
+            ImageDecoder::AlphaOption::kAlphaPremultiplied,
+            ColorBehavior::TransformToSRGB(), 2);
+
+  TestPixel("/images/resources/jxl/3x3_pq_lossy.jxl", IntSize(3, 3),
+            coordinates_3x3,
+            {
+                SkColorSetARGB(255, 255, 0, 0),
+                SkColorSetARGB(255, 0, 255, 0),
+                SkColorSetARGB(255, 0, 0, 255),
+                SkColorSetARGB(255, 33, 0, 0),
+                SkColorSetARGB(255, 0, 26, 0),
+                SkColorSetARGB(255, 0, 1, 26),
+                SkColorSetARGB(255, 255, 255, 255),
+                SkColorSetARGB(255, 24, 24, 24),
+                SkColorSetARGB(255, 0, 0, 0),
+            },
+            ImageDecoder::AlphaOption::kAlphaPremultiplied,
+            ColorBehavior::TransformToSRGB(), 15);
+
+  TestPixel("/images/resources/jxl/3x3a_pq_lossless.jxl", IntSize(3, 3),
+            coordinates_3x3,
+            {
+                SkColorSetARGB(128, 255, 0, 0),
+                SkColorSetARGB(128, 0, 255, 0),
+                SkColorSetARGB(128, 0, 0, 255),
+                SkColorSetARGB(128, 33, 0, 0),
+                SkColorSetARGB(128, 0, 26, 0),
+                SkColorSetARGB(128, 0, 1, 26),
+                SkColorSetARGB(128, 255, 255, 255),
+                SkColorSetARGB(128, 24, 24, 24),
+                SkColorSetARGB(128, 0, 0, 0),
+            },
+            ImageDecoder::AlphaOption::kAlphaPremultiplied,
+            ColorBehavior::TransformToSRGB(), 2);
+
+  TestPixel("/images/resources/jxl/3x3a_pq_lossy.jxl", IntSize(3, 3),
+            coordinates_3x3,
+            {
+                SkColorSetARGB(128, 255, 0, 0),
+                SkColorSetARGB(128, 0, 255, 0),
+                SkColorSetARGB(128, 0, 0, 255),
+                SkColorSetARGB(128, 33, 0, 0),
+                SkColorSetARGB(128, 0, 26, 0),
+                SkColorSetARGB(128, 0, 1, 26),
+                SkColorSetARGB(128, 255, 255, 255),
+                SkColorSetARGB(128, 24, 24, 24),
+                SkColorSetARGB(128, 0, 0, 0),
+            },
+            ImageDecoder::AlphaOption::kAlphaPremultiplied,
+            ColorBehavior::TransformToSRGB(), 15);
 }
 
 TEST(JXLTests, ColorProfileTest) {
diff --git a/third_party/blink/renderer/platform/widget/compositing/layer_tree_view.cc b/third_party/blink/renderer/platform/widget/compositing/layer_tree_view.cc
index 3863b9c..17bf278 100644
--- a/third_party/blink/renderer/platform/widget/compositing/layer_tree_view.cc
+++ b/third_party/blink/renderer/platform/widget/compositing/layer_tree_view.cc
@@ -37,7 +37,6 @@
 #include "components/viz/common/frame_sinks/begin_frame_args.h"
 #include "components/viz/common/frame_sinks/begin_frame_source.h"
 #include "components/viz/common/quads/compositor_frame_metadata.h"
-#include "components/viz/common/resources/single_release_callback.h"
 #include "third_party/blink/public/platform/scheduler/web_thread_scheduler.h"
 #include "third_party/blink/renderer/platform/graphics/dark_mode_filter.h"
 #include "third_party/blink/renderer/platform/graphics/dark_mode_settings_builder.h"
diff --git a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
index 5a71a82..305736e 100755
--- a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
+++ b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
@@ -930,6 +930,7 @@
             'media::PIXEL_FORMAT_Y16',
             'media::VideoFrame',
             'viz::RasterContextProvider',
+            'viz::ReleaseCallback',
             'viz::TransferableResource',
         ],
     },
@@ -1133,8 +1134,8 @@
             'gpu::SharedImageInterface',
             'gpu::SyncToken',
             'viz::RasterContextProvider',
+            'viz::ReleaseCallback',
             'viz::ResourceFormat',
-            'viz::SingleReleaseCallback',
             'media::.+',
             'libyuv::.+',
         ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 53fe968..d36adb76 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -236,6 +236,8 @@
 
 ## prerender test: the File System Access API is not supported on Android ##
 crbug.com/1182032 [ Android ] virtual/prerender/wpt_internal/prerender/restriction-local-file-system-access.https.html [ Skip ]
+## prerender test: Notification constructor is not supported on Android ##
+crbug.com/1198110 [ Android ] virtual/prerender/wpt_internal/prerender/restriction-notification.https.html [ Skip ]
 
 # These tests require BFCache, which is currently disabled by default on Desktop.
 # Keep this in sync with VirtualTestSuites.
@@ -1080,7 +1082,6 @@
 crbug.com/1079031 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/change-out-of-flow-type-and-remove-inner-multicol-crash.html [ Crash Failure ]
 crbug.com/996655 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/going-out-of-flow-after-spanner.html [ Crash Failure Pass ]
 crbug.com/1079031 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-fill-auto-002.xht [ Crash Failure ]
-crbug.com/1066616 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-overflow-clip.html [ Failure ]
 crbug.com/1079031 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-rule-002.xht [ Crash Failure Timeout ]
 crbug.com/1079031 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-rule-fraction-003.xht [ Crash Failure ]
 crbug.com/874051 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-span-all-fieldset-002.html [ Failure Crash ]
@@ -2439,6 +2440,10 @@
 crbug.com/1156408 external/wpt/webrtc/RTCPeerConnection-relay-canvas.https.html [ Pass Failure Timeout ]
 crbug.com/1156408 external/wpt/webrtc/RTCPeerConnection-capture-video.https.html [ Pass Failure Timeout ]
 
+# WebRTC: Disable DataChannel tests while new features are added to WebRTC.
+crbug.com/webrtc/12697 virtual/webrtc-wpt-plan-b/external/wpt/webrtc/datachannel-emptystring.html [ Pass Failure ]
+crbug.com/webrtc/12697 external/wpt/webrtc/datachannel-emptystring.html [ Pass Failure ]
+
 crbug.com/1074547 external/wpt/css/css-transitions/transitioncancel-002.html [ Timeout ]
 
 crbug.com/1024156 external/wpt/css/css-pseudo/cascade-highlight-004.html [ Failure ]
@@ -5068,30 +5073,20 @@
 
 crbug.com/716320 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/broadcastchannel-success-and-failure.https.html [ Failure Timeout ]
 
-# These tests require the Blink SharedArrayBufferOnDesktop feature, now that
-# SharedArrayBuffer is disabled by default everywhere.
-# TODO(crbug.com/1194557) Rework these tests to use COOP+COEP, and remove the
-# virtual tests.
-crbug.com/1194557 crypto/random-values.html [ Failure Timeout ]
-crbug.com/1194557 crypto/worker-random-values.html [ Failure Timeout ]
-crbug.com/1194557 crypto/subtle/importKey-badParameters.html [ Failure Timeout ]
-crbug.com/1194557 fast/beacon/beacon-basic.html [ Failure Timeout ]
-crbug.com/1194557 fast/css/fontface-arraybuffer.html [ Failure Timeout ]
-crbug.com/1194557 fast/dom/geometry-interfaces-dom-matrix.html [ Failure Timeout ]
-crbug.com/1194557 fast/events/constructors/midi-message-event-constructor.html [ Failure Timeout ]
-crbug.com/1194557 fast/files/blob-constructor.html [ Failure Timeout ]
-crbug.com/1194557 fast/webgl/webgl-sharedarraybuffer.html [ Failure Timeout ]
-crbug.com/1194557 fast/workers/worker-atomics-wait.html [ Failure Timeout ]
-crbug.com/1194557 fast/workers/worker-sharedarraybuffer-transfer.html [ Failure Timeout ]
-crbug.com/1194557 fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers.html [ Failure Timeout ]
-crbug.com/1194557 fast/xmlhttprequest/xmlhttprequest-send-sharedarraybuffer.html [ Failure Timeout ]
-crbug.com/1194557 http/tests/devtools/local-object-properties-section.js [ Failure Timeout ]
-crbug.com/1194557 http/tests/devtools/application-panel/resources-panel-resource-preview.js [ Failure Timeout ]
-crbug.com/1194557 http/tests/devtools/sources/debugger-breakpoints/set-breakpoint-while-blocking-main-thread.js [ Failure Timeout ]
-crbug.com/1194557 http/tests/devtools/unit/object-properties-expand-recursively.js [ Failure Timeout ]
-crbug.com/1194557 http/tests/websocket/send-arraybufferview.html [ Failure Timeout ]
-crbug.com/1194557 virtual/shared_array_buffer_on_desktop/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-subdomain-yes-2-subdomain2-no.sub.https.html [ Failure Timeout ]
-crbug.com/1194557 webaudio/dom-exceptions.html [ Failure Timeout ]
+# Test timing out when SharedArrayBuffer is disable by default.
+# See https://crbug.com/1094557
+crbug.com/1194557 http/tests/devtools/sources/debugger-breakpoints/set-breakpoint-while-blocking-main-thread.js [ Timeout ]
+crbug.com/1194557 virtual/shared_array_buffer_on_desktop/http/tests/devtools/sources/debugger-breakpoints/set-breakpoint-while-blocking-main-thread.js [ Pass ]
+
+# Failing test, but expectation file name is too long. See https://crbug.com/612667
+# See https://crbug.com/1094557
+crbug.com/1194557 external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-subdomain-yes-2-subdomain2-no.sub.https.html [ Timeout ]
+crbug.com/1194557 virtual/shared_array_buffer_on_desktop/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-subdomain-yes-2-subdomain2-no.sub.https.html [ Failure Pass ]
+
+# Test output varies depending on the bot. A single expectation file doesn't
+# work.
+crbug.com/1194557 fast/beacon/beacon-basic.html [ Failure Pass ]
+crbug.com/1194557 virtual/shared_array_buffer_on_desktop/fast/beacon/beacon-basic.html [ Pass ]
 
 # This test passes only when the JXL feature is enabled.
 crbug.com/1161994 http/tests/inspector-protocol/emulation/emulation-set-disabled-image-types-jxl.js [ Pass Failure ]
@@ -7168,5 +7163,10 @@
 
 # Sheriff 2021-04-22
 crbug.com/1191990 [ Linux ] http/tests/serviceworker/clients-openwindow.html [ Pass Failure ]
-crbug.com/1198443 [ Win ] virtual/plz-dedicated-worker/external/wpt/html/cross-origin-embedder-policy/none.https.html [ Pass Failure ]
+crbug.com/1198443 [ Win ] virtual/plz-dedicated-worker/external/wpt/html/cross-origin-embedder-policy/none.https.html [ Pass Failure Timeout ]
 crbug.com/1201879 [ Linux ] http/tests/inspector-protocol/issues/mixed-content-issue-creation-js-within-oopif.js [ Pass Timeout ]
+
+# Sheriff 2021-04-23
+crbug.com/1202040 [ Win ] virtual/plz-service-worker/external/wpt/html/cross-origin-embedder-policy/none.https.html [ Pass Failure Timeout ]
+crbug.com/1202051 virtual/scroll-unification/scrollbars/layout-viewport-scrollbars-hidden.html [ Pass Failure ]
+crbug.com/1202051 virtual/scroll-unification-prefer_compositing_to_lcd_text/scrollbars/layout-viewport-scrollbars-hidden.html [ Pass Failure ]
diff --git a/third_party/blink/web_tests/accessibility/contenteditable-on-aria-hidden-body.html b/third_party/blink/web_tests/accessibility/contenteditable-on-aria-hidden-body.html
new file mode 100644
index 0000000..25b8dbe
--- /dev/null
+++ b/third_party/blink/web_tests/accessibility/contenteditable-on-aria-hidden-body.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+
+<body contenteditable aria-hidden="true">
+  &nbsp;
+
+  <script>
+  test(function() {
+    var axDocument = accessibilityController.rootElement;
+    assert_equals(axDocument.childrenCount, 1);
+
+    assert_false(axDocument.isEditable);
+    assert_false(axDocument.isRichlyEditable);
+  }, 'The document should not be marked editable because the body is aria-hidden.');
+
+  test(function() {
+    document.body.setAttribute('aria-hidden', 'false');
+    var axDocument = accessibilityController.rootElement;
+    assert_equals(axDocument.childrenCount, 1);
+
+    assert_true(axDocument.isEditable);
+    assert_true(axDocument.isRichlyEditable);
+  }, 'The document should be marked editable because the body is aria-hidden="false".');
+  </script>
+</body>
diff --git a/third_party/blink/web_tests/accessibility/editable-root.html b/third_party/blink/web_tests/accessibility/editable-root.html
index cad5b3471..cf66e44 100644
--- a/third_party/blink/web_tests/accessibility/editable-root.html
+++ b/third_party/blink/web_tests/accessibility/editable-root.html
@@ -14,47 +14,39 @@
   <div id="contenteditable-div" contenteditable>
     <p id="paragraph1">Line 1<br>
       Line 2</p>
-    <p id="plaintext" contenteditable="plaintext-only">Plain text.</p>
     <p id="paragraph2">Line 3</p>
   </div>
 
 </div>
 
 <script>
-'use strict';
+test(function() {
+    var axInput = accessibilityController.accessibleElementById('input');
+    assert_true(axInput.isEditableRoot);
+}, 'An input element is an editable root.');
 
 test(function() {
-    const axInput = accessibilityController.accessibleElementById('input');
-    assert_false(axInput.isEditableRoot);
-}, 'An input element is not an editable root.');
-
-test(function() {
-    const axContentEditable = accessibilityController.accessibleElementById('contenteditable-textbox');
+    var axContentEditable = accessibilityController.accessibleElementById('contenteditable-textbox');
     assert_true(axContentEditable.isEditableRoot);
 }, 'A content editable with a role of textbox is an editable root.');
 
 test(function() {
-    const axInnerInput = accessibilityController.accessibleElementById('inner-input');
-    assert_false(axInnerInput.isEditableRoot);
-}, 'An input element embedded inside a content editable is not an editable root.');
+    var axInnerInput = accessibilityController.accessibleElementById('inner-input');
+    assert_true(axInnerInput.isEditableRoot);
+}, 'An input element embedded inside a content editable is an editable root.');
 
 test(function() {
-    const axInnerTextarea = accessibilityController.accessibleElementById('inner-textarea');
-    assert_false(axInnerTextarea.isEditableRoot);
-}, 'A textarea embedded inside a content editable is not an editable root.');
+    var axInnerTextarea = accessibilityController.accessibleElementById('inner-textarea');
+    assert_true(axInnerTextarea.isEditableRoot);
+}, 'A textarea embedded inside a content editable is an editable root.');
 
 test(function() {
-    const axContentEditable = accessibilityController.accessibleElementById('contenteditable-div');
-    const axParagraph1 = accessibilityController.accessibleElementById('paragraph1');
-    const axParagraph2 = accessibilityController.accessibleElementById('paragraph2');
+    var axContentEditable = accessibilityController.accessibleElementById('contenteditable-div');
+    var axParagraph1 = accessibilityController.accessibleElementById('paragraph1');
+    var axParagraph2 = accessibilityController.accessibleElementById('paragraph2');
     assert_true(axContentEditable.isEditableRoot);
     assert_false(axParagraph1.isEditableRoot);
     assert_false(axParagraph2.isEditableRoot);
 }, 'A paragraph within a content editable is not an editable root but the content editable is.');
 
-test(function() {
-    const axInnerContentEditable = accessibilityController.accessibleElementById('plaintext');
-    assert_true(axInnerContentEditable.isEditableRoot);
-}, 'A plaintext-only content editable within another content editable is an editable root.');
-
 </script>
diff --git a/third_party/blink/web_tests/crypto/random-values-expected.txt b/third_party/blink/web_tests/crypto/random-values-expected.txt
index 0756889f..92f0022 100644
--- a/third_party/blink/web_tests/crypto/random-values-expected.txt
+++ b/third_party/blink/web_tests/crypto/random-values-expected.txt
@@ -1,4 +1,4 @@
-CONSOLE WARNING: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
 Tests crypto.randomValues.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/crypto/random-values.html b/third_party/blink/web_tests/crypto/random-values.html
index bf59903..f292f66 100644
--- a/third_party/blink/web_tests/crypto/random-values.html
+++ b/third_party/blink/web_tests/crypto/random-values.html
@@ -2,6 +2,7 @@
 <html>
 <head>
 <script src="../resources/js-test.js"></script>
+<script src="../resources/sab-polyfill.js"></script>
 </head>
 <body>
 <p id="description"></p>
diff --git a/third_party/blink/web_tests/crypto/random-values.js b/third_party/blink/web_tests/crypto/random-values.js
index f87e1ca..3ac4f97 100644
--- a/third_party/blink/web_tests/crypto/random-values.js
+++ b/third_party/blink/web_tests/crypto/random-values.js
@@ -1,5 +1,7 @@
-if (self.importScripts)
+if (self.importScripts) {
     importScripts('../resources/js-test.js');
+    importScripts('../resources/sab-polyfill.js');
+}
 
 description("Tests crypto.randomValues.");
 
@@ -37,8 +39,6 @@
     debug(ex);
 }
 
-if (self.SharedArrayBuffer) {
-    shouldThrow("crypto.getRandomValues(new Uint8Array(new SharedArrayBuffer(100)))");
-}
+shouldThrow("crypto.getRandomValues(new Uint8Array(new SharedArrayBuffer(100)))");
 
 finishJSTest();
diff --git a/third_party/blink/web_tests/crypto/subtle/importKey-badParameters-expected.txt b/third_party/blink/web_tests/crypto/subtle/importKey-badParameters-expected.txt
index 88b83a2a..8152d60 100644
--- a/third_party/blink/web_tests/crypto/subtle/importKey-badParameters-expected.txt
+++ b/third_party/blink/web_tests/crypto/subtle/importKey-badParameters-expected.txt
@@ -1,4 +1,4 @@
-CONSOLE WARNING: line 68: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
 Tests calling cypto.subtle.importKey with bad parameters
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/crypto/subtle/importKey-badParameters.html b/third_party/blink/web_tests/crypto/subtle/importKey-badParameters.html
index 303f4e2..985bc5c94 100644
--- a/third_party/blink/web_tests/crypto/subtle/importKey-badParameters.html
+++ b/third_party/blink/web_tests/crypto/subtle/importKey-badParameters.html
@@ -3,6 +3,7 @@
 <head>
 <script src="../../resources/js-test.js"></script>
 <script src="resources/common.js"></script>
+<script src="../../resources/sab-polyfill.js"></script>
 </head>
 <body>
 <p id="description"></p>
diff --git a/third_party/blink/web_tests/crypto/worker-random-values-expected.txt b/third_party/blink/web_tests/crypto/worker-random-values-expected.txt
index 07ff656..d5b035e 100644
--- a/third_party/blink/web_tests/crypto/worker-random-values-expected.txt
+++ b/third_party/blink/web_tests/crypto/worker-random-values-expected.txt
@@ -1,4 +1,4 @@
-CONSOLE WARNING: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
 [Worker] Tests crypto.randomValues.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-005.html b/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-005.html
new file mode 100644
index 0000000..6eec83ad
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-005.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#fragmentation-model">
+<link rel="help" href="https://www.w3.org/TR/css-overflow-3/#overflow-properties">
+<meta name="assert" content="The spec says that when breakable content would overflow a fragmentainer in the block dimension, it breaks into the next container in its fragmentation context. If a container has clipped overflow, and the container ends before the fragmentation line, though, breakable content inside it can never overflow the fragmentainer, and as such, no additional fragmentainers should be generated.">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:5; column-gap:20px; column-rule:20px solid green; column-fill:auto; width:180px; height:100px;">
+  <div style="overflow:clip; height:300px;">
+    <div style="height:300px; background:green;"></div>
+    <div style="height:200px; background:red;"></div>
+    <div style="break-before:column; height:10px; background:red;"></div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-006.html b/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-006.html
new file mode 100644
index 0000000..526577b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-006.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#fragmentation-model">
+<link rel="help" href="https://www.w3.org/TR/css-overflow-3/#overflow-properties">
+<meta name="assert" content="The spec says that when breakable content would overflow a fragmentainer in the block dimension, it breaks into the next container in its fragmentation context. If a container has clipped overflow, and the container ends before the fragmentation line, though, breakable content inside it can never overflow the fragmentainer, and as such, no additional fragmentainers should be generated.">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:5; column-gap:20px; column-rule:20px solid green; column-fill:auto; width:180px; height:100px;">
+  <div style="overflow:clip;">
+    <div style="height:300px;">
+      <div style="height:300px; background:green;"></div>
+      <div style="height:200px; background:red;"></div>
+      <div style="break-before:column; height:10px; background:red;"></div>
+    </div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-007.html b/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-007.html
new file mode 100644
index 0000000..a90cba2f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-007.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#fragmentation-model">
+<link rel="help" href="https://www.w3.org/TR/css-overflow-3/#overflow-properties">
+<meta name="assert" content="The spec says that when breakable content would overflow a fragmentainer in the block dimension, it breaks into the next container in its fragmentation context. If a container has clipped overflow, and the container ends before the fragmentation line, though, breakable content inside it can never overflow the fragmentainer, and as such, no additional fragmentainers should be generated.">
+<div style="position:relative; columns:5; column-gap:20px; column-rule:20px solid green; column-fill:auto; width:180px; height:100px;">
+  <div style="overflow:clip; height:300px;">
+    <div style="height:300px; background:green;"></div>
+    <div style="height:200px; background:red;"></div>
+    <div id="target" style="break-before:column; height:10px; background:red;"></div>
+  </div>
+</div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+  test(()=> {
+      assert_equals(target.offsetLeft, 80);
+      assert_equals(target.offsetTop, 300);
+  }, "Overflowing and clipped content doesn't fragment");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-008.html b/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-008.html
new file mode 100644
index 0000000..931adc75
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-008.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#fragmentation-model">
+<link rel="help" href="https://www.w3.org/TR/css-overflow-3/#overflow-properties">
+<meta name="assert" content="Clipping only in the inline direction shouldn't affect fragmentation">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; width:100px; column-gap:0; column-fill:auto; height:100px; background:red;">
+  <div style="overflow-x:clip; height:200px;">
+    <div style="width:100px; background:red;">
+      <div style="width:25px; height:400px; background:green;"></div>
+    </div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/align-items-baseline-overflow-non-visible.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/align-items-baseline-overflow-non-visible.html
index 3c91bc5..48c34b3 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/align-items-baseline-overflow-non-visible.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/align-items-baseline-overflow-non-visible.html
@@ -3,10 +3,12 @@
 <link rel="author" title="Koji Ishii" href="kojii@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-baselines">
 <link rel="match" href="reference/align-items-baseline-overflow-non-visible-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
 <style>
 .flex {
   display: flex;
   align-items: baseline;
+  font: 25px/1 Ahem;
 }
 .overflow {
   overflow: hidden;
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-left-002-ref.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-left-002-ref.html
index f412b3d1..0680b1c 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-left-002-ref.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-left-002-ref.html
@@ -20,10 +20,9 @@
 span:nth-child(3) {background: lightblue;}
 #column-reverse span:nth-child(3) {background: yellow;}
 #column-reverse span:nth-child(1) {background: lightblue;}
-#column-reverse {padding-top: 4em; height: 6em;}
 </style>
 
-<p>Test passes if the numbered boxes are placed in the top left corner of the first flex container and top-to-bottom order is 1, 2, 3, and placed in the bottom left corner of the second flexbox container and top-to-bottom order is 3, 2, 1.</p>
+<p>Test passes if the numbered boxes are placed in the top left corner of the first flex container and top-to-bottom order is 1, 2, 3, and placed in the top left corner of the second flexbox container and top-to-bottom order is 3, 2, 1.</p>
 
 <div id="column">
   <span>one</span>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-left-002.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-left-002.html
index 210b5862..e18c43a 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-left-002.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-left-002.html
@@ -30,7 +30,7 @@
 span:nth-child(3) {background: lightblue;}
 </style>
 
-<p>Test passes if the numbered boxes are placed in the top left corner of the first flex container and top-to-bottom order is 1, 2, 3, and placed in the bottom left corner of the second flexbox container and top-to-bottom order is 3, 2, 1.</p>
+<p>Test passes if the numbered boxes are placed in the top left corner of the first flex container and top-to-bottom order is 1, 2, 3, and placed in the top left corner of the second flexbox container and top-to-bottom order is 3, 2, 1.</p>
 
 <div id="column">
   <span>one</span>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-right-002-ref.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-right-002-ref.html
index a1c096fb..63d2f702 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-right-002-ref.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-right-002-ref.html
@@ -20,10 +20,9 @@
 span:nth-child(3) {background: lightblue;}
 #column-reverse span:nth-child(3) {background: yellow;}
 #column-reverse span:nth-child(1) {background: lightblue;}
-#column-reverse {padding-top: 4em; height: 6em;}
 </style>
 
-<p>Test passes if the numbered boxes are placed in the top left corner of the first flex container and top-to-bottom order is 1, 2, 3, and placed in the bottom left corner of the second flexbox container and top-to-bottom order is 3, 2, 1.</p>
+<p>Test passes if the numbered boxes are placed in the top left corner of the first flex container and top-to-bottom order is 1, 2, 3, and placed in the top left corner of the second flexbox container and top-to-bottom order is 3, 2, 1.</p>
 
 <div id="column">
   <span>one</span>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-right-002.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-right-002.html
index 136ffb2c..2aeffe3b 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-right-002.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_justifycontent-right-002.html
@@ -29,7 +29,7 @@
 span:nth-child(3) {background: lightblue;}
 </style>
 
-<p>Test passes if the numbered boxes are placed in the top left corner of the first flex container and top-to-bottom order is 1, 2, 3, and placed in the bottom left corner of the second flexbox container and top-to-bottom order is 3, 2, 1.</p>
+<p>Test passes if the numbered boxes are placed in the top left corner of the first flex container and top-to-bottom order is 1, 2, 3, and placed in the top left corner of the second flexbox container and top-to-bottom order is 3, 2, 1.</p>
 
 <div id="column">
   <span>one</span>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/negative-overflow.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/negative-overflow.html
index 82f5bdb..52fa9b9 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/negative-overflow.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/negative-overflow.html
@@ -65,7 +65,7 @@
     <div></div>
 </div>
 
-<div class="flexbox wrap-reverse" data-expected-scroll-height="50">
+<div class="flexbox wrap-reverse" data-expected-scroll-height="200">
     <div></div>
     <div></div>
 </div>
@@ -90,7 +90,7 @@
     <div></div>
 </div>
 
-<div class="flexbox wrap-reverse vertical-padding" data-expected-scroll-height="65">
+<div class="flexbox wrap-reverse vertical-padding" data-expected-scroll-height="215">
     <div></div>
     <div></div>
 </div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/overflow-auto-005.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/overflow-auto-005.html
index 98e55a9..65b6d73 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/overflow-auto-005.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/overflow-auto-005.html
@@ -4,6 +4,7 @@
 <link rel="help" href="https://www.w3.org/TR/css-overflow-3/#propdef-overflow">
 <link rel="help" href="https://www.w3.org/TR/css-overflow-4/#classic-scrollbars">
 <link rel="match" href="reference/overflow-auto-005-ref.html">
+<meta name="fuzzy" content="0-3;0-3">
 <meta name="assert" content="This test ensures that flexbox with 'overflow: auto' is supported, including in combination with different writing-mode and flex-direction values."/>
 <style>
 .test-row {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/overflow-top-left-ref.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/overflow-top-left-ref.html
index 48b2aa8..8e58953 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/overflow-top-left-ref.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/overflow-top-left-ref.html
@@ -17,21 +17,24 @@
 }
 
 .column-wrapper > div {
-  margin: 4px;
+  /* This border represents the expected rendering of the testcase's
+     "margin:4px". This border should occupy the same space as that margin
+     would, and it should create the same amount of scrollable overflow.  (We
+     can't just use "margin:4px" here, because this reference case uses block
+     layout, and margins have different behavior with respect to collapsing and
+     scrollable-overflow impact in block vs. flexbox layout.) */
+  border: 4px solid white;
   height: 30px;
   background: #CCC;
 }
 
-.column-wrapper > .h-overflow {
-  margin-top: 8px;  // Compensate for margin collapsing.
-}
-
 .h-overflow {
   width: 500px;
 }
 
 .row-wrapper > div {
-  margin: 4px;
+  /* As noted above, this is a mockup for the "margin:4px" in the testcase. */
+  border: 4px solid white;
   width: 30px;
   background: #CCC;
 }
@@ -40,10 +43,6 @@
   height: 500px;
 }
 
-.row-wrapper > .v-overflow {
-  margin-right: 8px;  // Compensate for margin collapsing.
-}
-
 </style>
 
 <div class=column-wrapper>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/percentage-max-height-004-ref.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/percentage-max-height-004-ref.html
new file mode 100644
index 0000000..e7cdafa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/percentage-max-height-004-ref.html
@@ -0,0 +1,3 @@
+<!-- quirks mode -->
+<div style="width:100px; height:100px; background:green;"></div>
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/percentage-max-height-004.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/percentage-max-height-004.html
new file mode 100644
index 0000000..3d155e3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/percentage-max-height-004.html
@@ -0,0 +1,29 @@
+<!doctype quirks>
+<title>CSS Flexbox Test: replaced element in nested flexboxes has correct height to resolve percentage against </title>
+<link rel="author" title="Ziran Sun" href="mailto:zsun@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-containers">
+<link rel="help" href="https://drafts.csswg.org/css-sizing-3/#percentage-sizing">
+<link href="support/flexbox.css" rel="stylesheet">
+<link rel="match" href="percentage-max-height-004-ref.html">
+<meta name="assert" content="Replaced children with % max-height are sized correctly when their parents are flex items with percentage heights in quirks mode." />
+
+
+<style>
+.flex {
+  display:flex;
+  flex-direction:column;
+}
+.percent-height {
+  height: 100%;
+}
+.max-sizes {
+  max-height: 100%;
+  max-width: 100%;
+}
+</style>
+<div class="percent-height flex">
+  <div class="percent-height">
+    <img class="max-sizes" src="support/100x100-green.png" alt="Image download support must be enabled">
+  </div>
+</div>
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/reference/align-items-baseline-overflow-non-visible-ref.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/reference/align-items-baseline-overflow-non-visible-ref.html
index 89f1025..c2f6d23 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/reference/align-items-baseline-overflow-non-visible-ref.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/reference/align-items-baseline-overflow-non-visible-ref.html
@@ -1,8 +1,10 @@
 <!DOCTYPE html>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
 <style>
 .flex {
   display: flex;
   align-items: baseline;
+  font: 25px/1 Ahem;
 }
 </style>
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/reference/overflow-auto-005-ref.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/reference/overflow-auto-005-ref.html
index ace792e..6336239 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/reference/overflow-auto-005-ref.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/reference/overflow-auto-005-ref.html
@@ -28,6 +28,11 @@
     height: 200px;
     background: radial-gradient(at right 60%, red, yellow, green);
 }
+
+.vertical-rl {
+  writing-mode: vertical-rl;
+}
+
 </style>
 </head>
 <body>
@@ -45,9 +50,17 @@
         testContents += "<div class='test-row'>";
 
     var containerClass = 'container ' + results[i];
+
+    // Use vertical-rl here because Firefox and WebKit put vertical scrollbars
+    // on the left in the vertical-rl test cases, and this is the easiest way to
+    // match that.
+    let maybe_vertical = "";
+    if (i > 3 && i < 8)
+      maybe_vertical = " vertical-rl";
+
     testContents +=
         "<div class='" + containerClass + "'>" +
-        "<div class='flexbox'>" +
+        "<div class='flexbox" + maybe_vertical + "'>" +
         "<div></div>" +
         "</div>" +
         "</div>";
@@ -57,6 +70,10 @@
 
 document.body.innerHTML += testContents;
 
+Array.prototype.forEach.call(document.querySelectorAll(".left"), function(element) {
+    element.firstChild.scrollLeft = -1000;
+});
+
 Array.prototype.forEach.call(document.querySelectorAll(".right"), function(element) {
     element.firstChild.scrollLeft = 1000;
 });
diff --git a/third_party/blink/web_tests/external/wpt/css/css-overflow/overflow-no-frameset-propagation.html b/third_party/blink/web_tests/external/wpt/css/css-overflow/overflow-no-frameset-propagation.html
new file mode 100644
index 0000000..687adbe0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-overflow/overflow-no-frameset-propagation.html
@@ -0,0 +1,6 @@
+<!doctype html>
+<title>CSS Overflow Test: Frameset overflow does not propagate to viewport</title>
+<meta name="assert" content="The computed overflow should not propagate from frameset to thte viewport">
+<link rel="help" href="https://drafts.csswg.org/css-overflow/#overflow-propagation">
+<link rel="match" href="/common/blank.html">
+<frameset style="overflow:scroll"></frameset>
diff --git a/third_party/blink/web_tests/fast/beacon/beacon-basic-expected.txt b/third_party/blink/web_tests/fast/beacon/beacon-basic-expected.txt
index 63660ef6..f9ffbc6 100644
--- a/third_party/blink/web_tests/fast/beacon/beacon-basic-expected.txt
+++ b/third_party/blink/web_tests/fast/beacon/beacon-basic-expected.txt
@@ -1,4 +1,4 @@
-CONSOLE WARNING: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
 Exercising the Beacon API
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/fast/beacon/beacon-basic.html b/third_party/blink/web_tests/fast/beacon/beacon-basic.html
index faa5fa2..9eb2e9e 100644
--- a/third_party/blink/web_tests/fast/beacon/beacon-basic.html
+++ b/third_party/blink/web_tests/fast/beacon/beacon-basic.html
@@ -1,5 +1,6 @@
 <!DOCTYPE HTML>
 <script src="../../resources/js-test.js"></script>
+<script src="../../resources/sab-polyfill.js"></script>
 <script>
 description("Exercising the Beacon API");
 
@@ -8,9 +9,6 @@
 shouldThrow("navigator.sendBeacon()");
 shouldThrow("navigator.sendBeacon('http:')");
 shouldThrow("navigator.sendBeacon('javascript:alert(1);')");
-
-if (window.SharedArrayBuffer) {
-  shouldThrow("navigator.sendBeacon('https:', new Uint8Array(new SharedArrayBuffer(10)))");
-}
+shouldThrow("navigator.sendBeacon('https:', new Uint8Array(new SharedArrayBuffer(10)))");
 
 </script>
diff --git a/third_party/blink/web_tests/fast/css/fontface-arraybuffer-expected.txt b/third_party/blink/web_tests/fast/css/fontface-arraybuffer-expected.txt
index ef6deffe..1b66ab06 100644
--- a/third_party/blink/web_tests/fast/css/fontface-arraybuffer-expected.txt
+++ b/third_party/blink/web_tests/fast/css/fontface-arraybuffer-expected.txt
@@ -1,4 +1,4 @@
-CONSOLE WARNING: line 29: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
 Tests ArrayBuffer / ArrayBufferView constructors of FontFace.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/fast/css/fontface-arraybuffer.html b/third_party/blink/web_tests/fast/css/fontface-arraybuffer.html
index 31457b6..4607e6e37 100644
--- a/third_party/blink/web_tests/fast/css/fontface-arraybuffer.html
+++ b/third_party/blink/web_tests/fast/css/fontface-arraybuffer.html
@@ -1,6 +1,7 @@
 <html>
 <head>
 <script src="../../resources/js-test.js"></script>
+<script src="../../resources/sab-polyfill.js"></script>
 <script>
 description('Tests ArrayBuffer / ArrayBufferView constructors of FontFace.');
 
@@ -23,14 +24,12 @@
 shouldBeEqualToString('face2.status', 'loaded');
 document.fonts.add(face2);
 
-if (window.SharedArrayBuffer) {
-    try {
-        new FontFace('FontFromSharedArrayBufferView',
-                     new Uint8Array(new SharedArrayBuffer(4)));
-    } catch (e) {
-        rejectionValue = e;
-        shouldBeEqualToString('rejectionValue.name', 'TypeError');
-    }
+try {
+    new FontFace('FontFromSharedArrayBufferView',
+                 new Uint8Array(new SharedArrayBuffer(4)));
+} catch (e) {
+    rejectionValue = e;
+    shouldBeEqualToString('rejectionValue.name', 'TypeError');
 }
 
 var face3 = new FontFace('FontFromEmptyArrayBuffer', new ArrayBuffer(0));
diff --git a/third_party/blink/web_tests/fast/dom/geometry-interfaces-dom-matrix-expected.txt b/third_party/blink/web_tests/fast/dom/geometry-interfaces-dom-matrix-expected.txt
index 09b692c..ac5cc4a 100644
--- a/third_party/blink/web_tests/fast/dom/geometry-interfaces-dom-matrix-expected.txt
+++ b/third_party/blink/web_tests/fast/dom/geometry-interfaces-dom-matrix-expected.txt
@@ -1,4 +1,4 @@
-CONSOLE WARNING: line 125: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
 This is a testharness.js-based test.
 Harness Error. harness_status.status = 1 , harness_status.message = 1 duplicate test name: "DOMMatrix(numberSequence) constructor"
 PASS DOMMatrix() constructor
diff --git a/third_party/blink/web_tests/fast/dom/geometry-interfaces-dom-matrix.html b/third_party/blink/web_tests/fast/dom/geometry-interfaces-dom-matrix.html
index ada5a48..01e5e93 100644
--- a/third_party/blink/web_tests/fast/dom/geometry-interfaces-dom-matrix.html
+++ b/third_party/blink/web_tests/fast/dom/geometry-interfaces-dom-matrix.html
@@ -1,6 +1,7 @@
 <!DOCTYPE html>
 <script src="../../resources/testharness.js"></script>
 <script src="../../resources/testharnessreport.js"></script>
+<script src="../../resources/sab-polyfill.js"></script>
 <script src="./resources/geometry-interfaces-test-helpers.js"></script>
 <script>
 test(() => {
@@ -120,14 +121,12 @@
     "fromFloat64Array function only accepts 1 Float64Array with 6 or 16 elements");
 }, "DOMMatrix fromFloat*Array - invalid array size");
 
-if (window.SharedArrayBuffer) {
-  test(() => {
-    assert_throws_js(TypeError, () => { DOMMatrix.fromFloat32Array(new Float32Array(new SharedArrayBuffer(24))); },
-      "");
-    assert_throws_js(TypeError, () => { DOMMatrix.fromFloat64Array(new Float64Array(new SharedArrayBuffer(32))); },
-      "");
-  }, "DOMMatrix fromFloat*Array - can't use SharedArrayBuffer view");
-}
+test(() => {
+  assert_throws_js(TypeError, () => { DOMMatrix.fromFloat32Array(new Float32Array(new SharedArrayBuffer(24))); },
+    "");
+  assert_throws_js(TypeError, () => { DOMMatrix.fromFloat64Array(new Float64Array(new SharedArrayBuffer(32))); },
+    "");
+}, "DOMMatrix fromFloat*Array - can't use SharedArrayBuffer view");
 
 test(() => {
   assert_identity_2d_matrix(DOMMatrix.fromMatrix());
diff --git a/third_party/blink/web_tests/fast/events/constructors/midi-message-event-constructor-expected.txt b/third_party/blink/web_tests/fast/events/constructors/midi-message-event-constructor-expected.txt
index db97d36..c1c827b 100644
--- a/third_party/blink/web_tests/fast/events/constructors/midi-message-event-constructor-expected.txt
+++ b/third_party/blink/web_tests/fast/events/constructors/midi-message-event-constructor-expected.txt
@@ -1,4 +1,4 @@
-CONSOLE WARNING: line 35: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
 This tests the constructor for the MIDIMessageEvent DOM class.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/fast/events/constructors/midi-message-event-constructor.html b/third_party/blink/web_tests/fast/events/constructors/midi-message-event-constructor.html
index 46e2da7..82fd7b1 100644
--- a/third_party/blink/web_tests/fast/events/constructors/midi-message-event-constructor.html
+++ b/third_party/blink/web_tests/fast/events/constructors/midi-message-event-constructor.html
@@ -2,6 +2,7 @@
 <html>
 <head>
 <script src="../../../resources/js-test.js"></script>
+<script src="../../../resources/sab-polyfill.js"></script>
 </head>
 <body>
 <script>
@@ -31,10 +32,8 @@
 shouldBe("new MIDIMessageEvent('eventType', { bubbles: true, cancelable: true, data: data }).cancelable", "true");
 shouldEvaluateTo("new MIDIMessageEvent('eventType', { bubbles: true, cancelable: true, data: data }).data", data);
 
-if (window.SharedArrayBuffer) {
-    data = new Uint8Array(new SharedArrayBuffer(3));
-    shouldThrow("new MIDIMessageEvent('eventType', { data: data })");
-}
+data = new Uint8Array(new SharedArrayBuffer(3));
+shouldThrow("new MIDIMessageEvent('eventType', { data: data })");
 
 </script>
 </body>
diff --git a/third_party/blink/web_tests/fast/files/blob-constructor-expected.txt b/third_party/blink/web_tests/fast/files/blob-constructor-expected.txt
index 2cfd83c..790b64c 100644
--- a/third_party/blink/web_tests/fast/files/blob-constructor-expected.txt
+++ b/third_party/blink/web_tests/fast/files/blob-constructor-expected.txt
@@ -1,4 +1,4 @@
-CONSOLE WARNING: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
 Test the Blob constructor.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/fast/files/blob-constructor.html b/third_party/blink/web_tests/fast/files/blob-constructor.html
index d060319..3dac0a0a 100644
--- a/third_party/blink/web_tests/fast/files/blob-constructor.html
+++ b/third_party/blink/web_tests/fast/files/blob-constructor.html
@@ -1,5 +1,6 @@
 <!DOCTYPE html>
 
+<script src="../../resources/sab-polyfill.js"></script>
 <script src="../../resources/js-test.js"></script>
 <script>
 description("Test the Blob constructor.");
@@ -36,8 +37,6 @@
 shouldBe("new Blob([(new Float64Array(100)).buffer, (new Int32Array(100)).buffer, (new Uint8Array(100)).buffer, (new DataView(new ArrayBuffer(100))).buffer]).size", "1400");
 shouldBe("new Blob([new Blob([(new Int32Array(100)).buffer]), (new Uint8Array(100)).buffer, (new Float32Array(100)).buffer, (new DataView(new ArrayBuffer(100))).buffer]).size", "1000");
 
-if (window.SharedArrayBuffer) {
-  // Test SharedArrayBuffer parameters.
-  shouldThrow("new Blob([new Uint8Array(new SharedArrayBuffer(4))])", '"TypeError: Failed to construct \'Blob\': The provided ArrayBufferView value must not be shared."');
-}
+// Test SharedArrayBuffer parameters.
+shouldThrow("new Blob([new Uint8Array(new SharedArrayBuffer(4))])", '"TypeError: Failed to construct \'Blob\': The provided ArrayBufferView value must not be shared."');
 </script>
diff --git a/third_party/blink/web_tests/fast/webgl/webgl-sharedarraybuffer-expected.txt b/third_party/blink/web_tests/fast/webgl/webgl-sharedarraybuffer-expected.txt
new file mode 100644
index 0000000..a9c81a7
--- /dev/null
+++ b/third_party/blink/web_tests/fast/webgl/webgl-sharedarraybuffer-expected.txt
@@ -0,0 +1,34 @@
+CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+This is a testharness.js-based test.
+PASS bufferData
+PASS compressedTexImage2D
+PASS compressedTexSubImage2D
+PASS readPixels
+PASS texImage2D
+PASS texSubImage2D
+PASS uniformMatrix2fv
+PASS uniformMatrix3fv
+PASS uniformMatrix4fv
+PASS vertexAttrib1fv
+PASS vertexAttrib2fv
+PASS vertexAttrib3fv
+PASS vertexAttrib4fv
+PASS bufferSubData
+PASS getBufferSubData
+PASS compressedTexImage3D
+PASS compressedTexSubImage3D
+PASS texImage3D
+PASS texSubImage3D
+PASS uniformMatrix2x3fv
+PASS uniformMatrix3x2fv
+PASS uniformMatrix2x4fv
+PASS uniformMatrix4x2fv
+PASS uniformMatrix3x4fv
+PASS uniformMatrix4x3fv
+PASS vertexAttribI4iv
+PASS vertexAttribI4uiv
+PASS clearBufferiv
+PASS clearBufferuiv
+PASS clearBufferfv
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/fast/webgl/webgl-sharedarraybuffer.html b/third_party/blink/web_tests/fast/webgl/webgl-sharedarraybuffer.html
index 04f6b9f..f9b5cee 100644
--- a/third_party/blink/web_tests/fast/webgl/webgl-sharedarraybuffer.html
+++ b/third_party/blink/web_tests/fast/webgl/webgl-sharedarraybuffer.html
@@ -3,6 +3,7 @@
 <head>
 <script src="../../resources/testharness.js"></script>
 <script src="../../resources/testharnessreport.js"></script>
+<script src="../../resources/sab-polyfill.js"></script>
 <script src="resources/webgl-test.js"></script>
 <script src="resources/webgl-test-utils.js"></script>
 </head>
diff --git a/third_party/blink/web_tests/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers-expected.txt b/third_party/blink/web_tests/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers-expected.txt
index f859c05..64bf5d6 100644
--- a/third_party/blink/web_tests/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers-expected.txt
+++ b/third_party/blink/web_tests/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers-expected.txt
@@ -1,85 +1,4 @@
-CONSOLE WARNING: line 119: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
-CONSOLE WARNING: line 27: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
-CONSOLE WARNING: line 27: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
 Test sharing SharedArrayBuffers between dedicated workers.
 
-Running SharedArrayBuffer test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred data is OK.
-PASS: Transferred data is OK.
-Running Int8Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Uint8Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Uint8ClampedArray test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Int16Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Uint16Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Int32Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Uint32Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Float32Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Float64Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-DONE
+SharedArrayBuffers are not enabled -- skipping test.
 
diff --git a/third_party/blink/web_tests/fast/workers/worker-atomics-wait-expected.txt b/third_party/blink/web_tests/fast/workers/worker-atomics-wait-expected.txt
index 21fcba3..f10bb142 100644
--- a/third_party/blink/web_tests/fast/workers/worker-atomics-wait-expected.txt
+++ b/third_party/blink/web_tests/fast/workers/worker-atomics-wait-expected.txt
@@ -1,8 +1,4 @@
-CONSOLE WARNING: line 18: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
-CONSOLE WARNING: line 2: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
 Test that Atomics.wait is not allowed on the main thread.
 
-PASS: Calling Atomics.wait on the main thread throws.
-PASS: Atomics.wait is allowed in a worker.
-DONE
+SharedArrayBuffers are not enabled -- skipping test.
 
diff --git a/third_party/blink/web_tests/fast/workers/worker-sharedarraybuffer-transfer-expected.txt b/third_party/blink/web_tests/fast/workers/worker-sharedarraybuffer-transfer-expected.txt
index 2ee37cfdb..64bf5d6 100644
--- a/third_party/blink/web_tests/fast/workers/worker-sharedarraybuffer-transfer-expected.txt
+++ b/third_party/blink/web_tests/fast/workers/worker-sharedarraybuffer-transfer-expected.txt
@@ -1,75 +1,4 @@
-CONSOLE WARNING: line 113: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
-CONSOLE WARNING: line 27: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
 Test sharing SharedArrayBuffers between dedicated workers.
 
-Running SharedArrayBuffer test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred data is OK.
-Running Int8Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Uint8Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Uint8ClampedArray test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Int16Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Uint16Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Int32Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Uint32Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Float32Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running Float64Array test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: SharedArrayBuffer not neutered during transfer.
-PASS: Original data not changed during transfer.
-PASS: Transferred array type is OK.
-PASS: Transferred data is OK.
-Running SendSharedArrayBufferTwice test case
-PASS: Transferred data is OK.
-Running TransferArrayBufferAndSharedArrayBuffer test case
-PASS: ArrayBuffer was neutered during transfer.
-PASS: Transferred data is OK.
-PASS: Transferred data is OK.
-Running SharedArrayBufferInTransferListViaMessagePort test case
-PASS: Passing SharedArrayBuffer in the transfer list threw.
-PASS: ArrayBuffer 'ab1' was not neutered.
-PASS: ArrayBuffer 'ab2' was not neutered.
-DONE
+SharedArrayBuffers are not enabled -- skipping test.
 
diff --git a/third_party/blink/web_tests/fast/xmlhttprequest/xmlhttprequest-send-sharedarraybuffer-expected.txt b/third_party/blink/web_tests/fast/xmlhttprequest/xmlhttprequest-send-sharedarraybuffer-expected.txt
new file mode 100644
index 0000000..42e1de3
--- /dev/null
+++ b/third_party/blink/web_tests/fast/xmlhttprequest/xmlhttprequest-send-sharedarraybuffer-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+Harness Error. harness_status.status = 1 , harness_status.message = done() was called without first defining any tests
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/http/tests/devtools/local-object-properties-section.js b/third_party/blink/web_tests/http/tests/devtools/local-object-properties-section.js
index 8c5c8c8..b08fd21 100644
--- a/third_party/blink/web_tests/http/tests/devtools/local-object-properties-section.js
+++ b/third_party/blink/web_tests/http/tests/devtools/local-object-properties-section.js
@@ -4,8 +4,8 @@
 
 (async function() {
   TestRunner.addResult(`Test that ObjectPropertiesSection works with local remote objects.\n`);
-  await TestRunner.loadModule('object_ui');
-  await TestRunner.loadLegacyModule('object_ui');
+  await TestRunner.loadModule('ui/legacy/components/object_ui');
+  await TestRunner.loadLegacyModule('ui/legacy/components/object_ui');
 
   var d = [];
   for (var i = 1000; i < 1256; ++i)
diff --git a/third_party/blink/web_tests/http/tests/devtools/unit/object-properties-expand-recursively.js b/third_party/blink/web_tests/http/tests/devtools/unit/object-properties-expand-recursively.js
index 778a595..748191b 100644
--- a/third_party/blink/web_tests/http/tests/devtools/unit/object-properties-expand-recursively.js
+++ b/third_party/blink/web_tests/http/tests/devtools/unit/object-properties-expand-recursively.js
@@ -4,8 +4,8 @@
 
 (async function() {
   TestRunner.addResult(`Test that ObjectPropertiesSection expands recursively.\n`);
-  await TestRunner.loadModule('object_ui');
-  await TestRunner.loadLegacyModule('object_ui');
+  await TestRunner.loadModule('ui/legacy/components/object_ui');
+  await TestRunner.loadLegacyModule('ui/legacy/components/object_ui');
 
   var object = {
     "foo": {
diff --git a/third_party/blink/web_tests/http/tests/websocket/send-arraybufferview-expected.txt b/third_party/blink/web_tests/http/tests/websocket/send-arraybufferview-expected.txt
index 5ba5379..e939eae9 100644
--- a/third_party/blink/web_tests/http/tests/websocket/send-arraybufferview-expected.txt
+++ b/third_party/blink/web_tests/http/tests/websocket/send-arraybufferview-expected.txt
@@ -1,9 +1,7 @@
-CONSOLE WARNING: line 45: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
 WebSocket: Send ArrayBufferViews.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
-PASS ws.send(createSharedArrayBufferView()) threw exception TypeError: Failed to execute 'send' on 'WebSocket': The provided ArrayBufferView value must not be shared..
 PASS PASS: Message #0.
 PASS PASS: Message #1.
 PASS PASS: Message #2.
diff --git a/third_party/blink/web_tests/images/resources/jxl/3x3.png b/third_party/blink/web_tests/images/resources/jxl/3x3.png
new file mode 100644
index 0000000..96f86420
--- /dev/null
+++ b/third_party/blink/web_tests/images/resources/jxl/3x3.png
Binary files differ
diff --git a/third_party/blink/web_tests/images/resources/jxl/3x3_gbr_lossless.jxl b/third_party/blink/web_tests/images/resources/jxl/3x3_gbr_lossless.jxl
new file mode 100644
index 0000000..36f666e
--- /dev/null
+++ b/third_party/blink/web_tests/images/resources/jxl/3x3_gbr_lossless.jxl
Binary files differ
diff --git a/third_party/blink/web_tests/images/resources/jxl/3x3_gbr_lossy.jxl b/third_party/blink/web_tests/images/resources/jxl/3x3_gbr_lossy.jxl
new file mode 100644
index 0000000..84da377
--- /dev/null
+++ b/third_party/blink/web_tests/images/resources/jxl/3x3_gbr_lossy.jxl
Binary files differ
diff --git a/third_party/blink/web_tests/images/resources/jxl/3x3_pq_lossless.jxl b/third_party/blink/web_tests/images/resources/jxl/3x3_pq_lossless.jxl
new file mode 100644
index 0000000..eed73f8
--- /dev/null
+++ b/third_party/blink/web_tests/images/resources/jxl/3x3_pq_lossless.jxl
Binary files differ
diff --git a/third_party/blink/web_tests/images/resources/jxl/3x3_pq_lossy.jxl b/third_party/blink/web_tests/images/resources/jxl/3x3_pq_lossy.jxl
new file mode 100644
index 0000000..d14d489
--- /dev/null
+++ b/third_party/blink/web_tests/images/resources/jxl/3x3_pq_lossy.jxl
Binary files differ
diff --git a/third_party/blink/web_tests/images/resources/jxl/3x3_srgb_lossless.jxl b/third_party/blink/web_tests/images/resources/jxl/3x3_srgb_lossless.jxl
new file mode 100644
index 0000000..5e52b33
--- /dev/null
+++ b/third_party/blink/web_tests/images/resources/jxl/3x3_srgb_lossless.jxl
Binary files differ
diff --git a/third_party/blink/web_tests/images/resources/jxl/3x3_srgb_lossy.jxl b/third_party/blink/web_tests/images/resources/jxl/3x3_srgb_lossy.jxl
new file mode 100644
index 0000000..ad199fb
--- /dev/null
+++ b/third_party/blink/web_tests/images/resources/jxl/3x3_srgb_lossy.jxl
Binary files differ
diff --git a/third_party/blink/web_tests/images/resources/jxl/3x3a.png b/third_party/blink/web_tests/images/resources/jxl/3x3a.png
new file mode 100644
index 0000000..338887e
--- /dev/null
+++ b/third_party/blink/web_tests/images/resources/jxl/3x3a.png
Binary files differ
diff --git a/third_party/blink/web_tests/images/resources/jxl/3x3a_gbr_lossless.jxl b/third_party/blink/web_tests/images/resources/jxl/3x3a_gbr_lossless.jxl
new file mode 100644
index 0000000..06a78bc
--- /dev/null
+++ b/third_party/blink/web_tests/images/resources/jxl/3x3a_gbr_lossless.jxl
Binary files differ
diff --git a/third_party/blink/web_tests/images/resources/jxl/3x3a_gbr_lossy.jxl b/third_party/blink/web_tests/images/resources/jxl/3x3a_gbr_lossy.jxl
new file mode 100644
index 0000000..d2ad6d4
--- /dev/null
+++ b/third_party/blink/web_tests/images/resources/jxl/3x3a_gbr_lossy.jxl
Binary files differ
diff --git a/third_party/blink/web_tests/images/resources/jxl/3x3a_pq_lossless.jxl b/third_party/blink/web_tests/images/resources/jxl/3x3a_pq_lossless.jxl
new file mode 100644
index 0000000..b35e9de1
--- /dev/null
+++ b/third_party/blink/web_tests/images/resources/jxl/3x3a_pq_lossless.jxl
Binary files differ
diff --git a/third_party/blink/web_tests/images/resources/jxl/3x3a_pq_lossy.jxl b/third_party/blink/web_tests/images/resources/jxl/3x3a_pq_lossy.jxl
new file mode 100644
index 0000000..0fd9344d
--- /dev/null
+++ b/third_party/blink/web_tests/images/resources/jxl/3x3a_pq_lossy.jxl
Binary files differ
diff --git a/third_party/blink/web_tests/images/resources/jxl/3x3a_srgb_lossless.jxl b/third_party/blink/web_tests/images/resources/jxl/3x3a_srgb_lossless.jxl
new file mode 100644
index 0000000..5b3d75e
--- /dev/null
+++ b/third_party/blink/web_tests/images/resources/jxl/3x3a_srgb_lossless.jxl
Binary files differ
diff --git a/third_party/blink/web_tests/images/resources/jxl/3x3a_srgb_lossy.jxl b/third_party/blink/web_tests/images/resources/jxl/3x3a_srgb_lossy.jxl
new file mode 100644
index 0000000..4344458
--- /dev/null
+++ b/third_party/blink/web_tests/images/resources/jxl/3x3a_srgb_lossy.jxl
Binary files differ
diff --git a/third_party/blink/web_tests/images/resources/jxl/README.md b/third_party/blink/web_tests/images/resources/jxl/README.md
index c0dec17..e4db254d 100644
--- a/third_party/blink/web_tests/images/resources/jxl/README.md
+++ b/third_party/blink/web_tests/images/resources/jxl/README.md
@@ -2,13 +2,16 @@
 
 ## How to generate the test set
 
-We assume to have a the following pngs (from `third_party/blink/web_tests/images/resources/`) available:
+We assume to have a the following images (from
+`third_party/blink/web_tests/images/resources/`) available:
 ```
 red-10.png
 green-10.png
 blue-10.png
 png_per_row_alpha.png
 icc-v2-gbr.jpg
+jxl/3x3.png
+jxl/3x3a.png
 ```
 Then we run:
 ```
@@ -19,4 +22,35 @@
 cjxl -d 0 blue-10.png blue-10-lossless.jxl
 cjxl -d 0 png_per_row_alpha.png alpha-lossless.jxl
 cjxl icc-v2-gbr.jpg icc-v2-gbr.jxl
+
+cjxl 3x3.png temp.jxl -d 0
+djxl temp.jxl 3x3_srgb.png
+cjxl 3x3_srgb.png 3x3_srgb_lossy.jxl -d 0.1 -s 3
+cjxl 3x3_srgb.png 3x3_srgb_lossless.jxl -d 0
+
+cjxl 3x3a.png temp.jxl -d 0
+djxl temp.jxl 3x3a_srgb.png
+cjxl 3x3a_srgb.png 3x3a_srgb_lossy.jxl -d 0.1 -s 3
+cjxl 3x3a_srgb.png 3x3a_srgb_lossless.jxl -d 0
+
+cjxl 3x3.png temp.jxl -x color_space=RGB_D65_202_Rel_PeQ -d 0
+djxl temp.jxl 3x3_pq.png
+cjxl 3x3_pq.png 3x3_pq_lossy.jxl -d 0.1 -s 3
+cjxl 3x3_pq.png 3x3_pq_lossless.jxl -d 0
+
+cjxl 3x3a.png temp.jxl -x color_space=RGB_D65_202_Rel_PeQ -d 0
+djxl temp.jxl 3x3a_pq.png
+cjxl 3x3a_pq.png 3x3a_pq_lossy.jxl -d 0.1 -s 3
+cjxl 3x3a_pq.png 3x3a_pq_lossless.jxl -d 0
+
+convert icc-v2-gbr.jpg icc-v2-gbr.icc
+cjxl 3x3.png temp.jxl -x icc_pathname=icc-v2-gbr.icc -d 0
+djxl temp.jxl 3x3_gbr.png
+cjxl 3x3_gbr.png 3x3_gbr_lossy.jxl -d 0.1 -s 3
+cjxl 3x3_gbr.png 3x3_gbr_lossless.jxl -d 0
+
+cjxl 3x3a.png temp.jxl -x icc_pathname=icc-v2-gbr.icc -d 0
+djxl temp.jxl 3x3a_gbr.png
+cjxl 3x3a_gbr.png 3x3a_gbr_lossy.jxl -d 0.1 -s 3
+cjxl 3x3a_gbr.png 3x3a_gbr_lossless.jxl -d 0
 ```
diff --git a/third_party/blink/web_tests/resources/sab-polyfill.js b/third_party/blink/web_tests/resources/sab-polyfill.js
new file mode 100644
index 0000000..54f287f
--- /dev/null
+++ b/third_party/blink/web_tests/resources/sab-polyfill.js
@@ -0,0 +1,10 @@
+// See https://github.com/whatwg/html/issues/5380 for why the SharedArrayBuffer
+// constructor doesn't always exist.
+if (!self.SharedArrayBuffer) {
+  const sabConstructor = new WebAssembly.Memory({
+    shared:true, initial:0, maximum:0 }).buffer.constructor;
+  if (sabConstructor.name !== "SharedArrayBuffer") {
+    throw new Error("WebAssembly.Memory does not support shared:true");
+  }
+  self.SharedArrayBuffer = sabConstructor;
+}
diff --git a/third_party/blink/web_tests/storage/indexeddb/shared-array-buffer-throws-expected.txt b/third_party/blink/web_tests/storage/indexeddb/shared-array-buffer-throws-expected.txt
new file mode 100644
index 0000000..42e1de3
--- /dev/null
+++ b/third_party/blink/web_tests/storage/indexeddb/shared-array-buffer-throws-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+Harness Error. harness_status.status = 1 , harness_status.message = done() was called without first defining any tests
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/virtual/plz-dedicated-worker/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers-expected.txt b/third_party/blink/web_tests/virtual/plz-dedicated-worker/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers-expected.txt
new file mode 100644
index 0000000..f859c05
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/plz-dedicated-worker/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers-expected.txt
@@ -0,0 +1,85 @@
+CONSOLE WARNING: line 119: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 27: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 27: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+Test sharing SharedArrayBuffers between dedicated workers.
+
+Running SharedArrayBuffer test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred data is OK.
+PASS: Transferred data is OK.
+Running Int8Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint8Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint8ClampedArray test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Int16Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint16Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Int32Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint32Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Float32Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Float64Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+DONE
+
diff --git a/third_party/blink/web_tests/virtual/plz-dedicated-worker/fast/workers/worker-atomics-wait-expected.txt b/third_party/blink/web_tests/virtual/plz-dedicated-worker/fast/workers/worker-atomics-wait-expected.txt
new file mode 100644
index 0000000..21fcba3
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/plz-dedicated-worker/fast/workers/worker-atomics-wait-expected.txt
@@ -0,0 +1,8 @@
+CONSOLE WARNING: line 18: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 2: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+Test that Atomics.wait is not allowed on the main thread.
+
+PASS: Calling Atomics.wait on the main thread throws.
+PASS: Atomics.wait is allowed in a worker.
+DONE
+
diff --git a/third_party/blink/web_tests/virtual/plz-dedicated-worker/fast/workers/worker-sharedarraybuffer-transfer-expected.txt b/third_party/blink/web_tests/virtual/plz-dedicated-worker/fast/workers/worker-sharedarraybuffer-transfer-expected.txt
new file mode 100644
index 0000000..2ee37cfdb
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/plz-dedicated-worker/fast/workers/worker-sharedarraybuffer-transfer-expected.txt
@@ -0,0 +1,75 @@
+CONSOLE WARNING: line 113: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 27: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+Test sharing SharedArrayBuffers between dedicated workers.
+
+Running SharedArrayBuffer test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred data is OK.
+Running Int8Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint8Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint8ClampedArray test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Int16Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint16Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Int32Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint32Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Float32Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Float64Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running SendSharedArrayBufferTwice test case
+PASS: Transferred data is OK.
+Running TransferArrayBufferAndSharedArrayBuffer test case
+PASS: ArrayBuffer was neutered during transfer.
+PASS: Transferred data is OK.
+PASS: Transferred data is OK.
+Running SharedArrayBufferInTransferListViaMessagePort test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: ArrayBuffer 'ab1' was not neutered.
+PASS: ArrayBuffer 'ab2' was not neutered.
+DONE
+
diff --git a/third_party/blink/web_tests/virtual/scroll-unification/fast/events/constructors/midi-message-event-constructor-expected.txt b/third_party/blink/web_tests/virtual/scroll-unification/fast/events/constructors/midi-message-event-constructor-expected.txt
new file mode 100644
index 0000000..db97d36
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/scroll-unification/fast/events/constructors/midi-message-event-constructor-expected.txt
@@ -0,0 +1,21 @@
+CONSOLE WARNING: line 35: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+This tests the constructor for the MIDIMessageEvent DOM class.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+PASS new MIDIMessageEvent('eventType').bubbles is false
+PASS new MIDIMessageEvent('eventType').cancelable is false
+PASS new MIDIMessageEvent('eventType').data is null
+PASS new MIDIMessageEvent('eventType', { bubbles: false }).bubbles is false
+PASS new MIDIMessageEvent('eventType', { bubbles: true }).bubbles is true
+PASS new MIDIMessageEvent('eventType', { cancelable: false }).cancelable is false
+PASS new MIDIMessageEvent('eventType', { cancelable: true }).cancelable is true
+PASS new MIDIMessageEvent('eventType', { data: data }).data == '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0' is true
+PASS new MIDIMessageEvent('eventType', { bubbles: true, cancelable: true, data: data }).bubbles is true
+PASS new MIDIMessageEvent('eventType', { bubbles: true, cancelable: true, data: data }).cancelable is true
+PASS new MIDIMessageEvent('eventType', { bubbles: true, cancelable: true, data: data }).data == '0,0,0' is true
+PASS new MIDIMessageEvent('eventType', { data: data }) threw exception TypeError: Failed to construct 'MIDIMessageEvent': The provided ArrayBufferView value must not be shared..
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/crypto/random-values-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/crypto/random-values-expected.txt
new file mode 100644
index 0000000..0756889f
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/crypto/random-values-expected.txt
@@ -0,0 +1,14 @@
+CONSOLE WARNING: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+Tests crypto.randomValues.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+PASS 'crypto' in self is true
+PASS 'getRandomValues' in self.crypto is true
+PASS self.crypto.__proto__.hasOwnProperty('getRandomValues') is true
+PASS matchingBytes < 100 is true
+PASS crypto.getRandomValues(new Uint8Array(new SharedArrayBuffer(100))) threw exception TypeError: Failed to execute 'getRandomValues' on 'Crypto': The provided ArrayBufferView value must not be shared..
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/crypto/subtle/importKey-badParameters-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/crypto/subtle/importKey-badParameters-expected.txt
new file mode 100644
index 0000000..97b3780
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/crypto/subtle/importKey-badParameters-expected.txt
@@ -0,0 +1,18 @@
+CONSOLE WARNING: line 69: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+Tests calling cypto.subtle.importKey with bad parameters
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+error is: TypeError: Key data must be a BufferSource for non-JWK formats
+error is: TypeError: Key data must be a BufferSource for non-JWK formats
+error is: TypeError: Failed to execute 'importKey' on 'SubtleCrypto': Failed to convert value to 'object'.
+error is: TypeError: Invalid keyFormat argument
+error is: TypeError: Invalid keyUsages argument
+error is: TypeError: Invalid keyFormat argument
+error is: TypeError: Failed to execute 'importKey' on 'SubtleCrypto': HmacImportParams: hash: Missing or not an AlgorithmIdentifier
+error is: NotSupportedError: Failed to execute 'importKey' on 'SubtleCrypto': SHA-1: Unsupported operation: importKey
+error is: TypeError: Failed to execute 'importKey' on 'SubtleCrypto': The provided ArrayBufferView value must not be shared.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/crypto/worker-random-values-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/crypto/worker-random-values-expected.txt
new file mode 100644
index 0000000..07ff656
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/crypto/worker-random-values-expected.txt
@@ -0,0 +1,15 @@
+CONSOLE WARNING: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+[Worker] Tests crypto.randomValues.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+Starting worker: random-values.js
+PASS [Worker] 'crypto' in self is true
+PASS [Worker] 'getRandomValues' in self.crypto is true
+PASS [Worker] self.crypto.__proto__.hasOwnProperty('getRandomValues') is true
+PASS [Worker] matchingBytes < 100 is true
+PASS [Worker] crypto.getRandomValues(new Uint8Array(new SharedArrayBuffer(100))) threw exception TypeError: Failed to execute 'getRandomValues' on 'Crypto': The provided ArrayBufferView value must not be shared..
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/beacon/beacon-basic-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/beacon/beacon-basic-expected.txt
new file mode 100644
index 0000000..63660ef6
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/beacon/beacon-basic-expected.txt
@@ -0,0 +1,15 @@
+CONSOLE WARNING: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+Exercising the Beacon API
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+PASS Object.getPrototypeOf(navigator).hasOwnProperty('sendBeacon') is true
+PASS typeof navigator.sendBeacon is "function"
+PASS navigator.sendBeacon() threw exception TypeError: Failed to execute 'sendBeacon' on 'Navigator': 1 argument required, but only 0 present..
+PASS navigator.sendBeacon('http:') threw exception TypeError: Failed to execute 'sendBeacon' on 'Navigator': The URL argument is ill-formed or unsupported..
+PASS navigator.sendBeacon('javascript:alert(1);') threw exception TypeError: Failed to execute 'sendBeacon' on 'Navigator': Beacons are only supported over HTTP(S)..
+PASS navigator.sendBeacon('https:', new Uint8Array(new SharedArrayBuffer(10))) threw exception TypeError: Failed to execute 'sendBeacon' on 'Navigator': The provided ArrayBufferView value must not be shared..
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/css/fontface-arraybuffer-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/css/fontface-arraybuffer-expected.txt
new file mode 100644
index 0000000..ef6deffe
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/css/fontface-arraybuffer-expected.txt
@@ -0,0 +1,19 @@
+CONSOLE WARNING: line 29: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+Tests ArrayBuffer / ArrayBufferView constructors of FontFace.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+PASS face1.status is "loaded"
+PASS face2.status is "loaded"
+PASS rejectionValue.name is "TypeError"
+PASS face3.status is "error"
+PASS rejectionValue.name is "SyntaxError"
+PASS document.getElementById('FontFromArrayBuffer').offsetWidth is document.getElementById('ref').offsetWidth
+PASS document.getElementById('FontFromArrayBufferView').offsetWidth is document.getElementById('ref').offsetWidth
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
+abc
+abc
+abc
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/dom/geometry-interfaces-dom-matrix-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/dom/geometry-interfaces-dom-matrix-expected.txt
new file mode 100644
index 0000000..09b692c
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/dom/geometry-interfaces-dom-matrix-expected.txt
@@ -0,0 +1,32 @@
+CONSOLE WARNING: line 125: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+This is a testharness.js-based test.
+Harness Error. harness_status.status = 1 , harness_status.message = 1 duplicate test name: "DOMMatrix(numberSequence) constructor"
+PASS DOMMatrix() constructor
+PASS DOMMatrix fromFloat32Array - 2D matrix
+PASS DOMMatrix fromFloat64Array - 2D matrix
+PASS DOMMatrix fromFloat32Array - 3D matrix
+PASS DOMMatrix fromFloat64Array - 3D matrix
+PASS DOMMatrix(transformList) - emptyString
+PASS DOMMatrix(transformList) - transformList
+PASS DOMMatrix(numberSequence) constructor
+PASS DOMMatrix(numberSequence) constructor
+PASS DOMMatrix attributes
+PASS DOMMatrix.is2D can never be set to 'true' when it was set to 'false' before calling setMatrixValue()
+PASS DOMMatrix fromFloat*Array - invalid array size of nearby 6
+PASS DOMMatrix fromFloat*Array - invalid array size of nearby 16
+PASS DOMMatrix fromFloat*Array - invalid array size
+PASS DOMMatrix fromFloat*Array - can't use SharedArrayBuffer view
+PASS DOMMatrix.fromMatrix() with no parameter
+PASS DOMMatrix.fromMatrix() with null
+PASS DOMMatrix.fromMatrix() with undefined
+PASS DOMMatrix.fromMatrix() with empty object
+PASS DOMMatrix.fromMatrix({a: 1, b: 2, c: 3, d: 4, e: 5, f: 6}) should create a 2D DOMMatrix
+PASS DOMMatrix.fromMatrix({m11: 1, m22: 2, m33: 3, m44: 4, m23: 5, m43: 6}) should create a 3D DOMMatrix
+PASS If 2d related properties don't be set, should set to fallback
+PASS DOMMatrix.fromMatrix(): NaN test
+PASS DOMMatrix toJSON() - identity matrix
+PASS DOMMatrix toJSON() - 2D matrix
+PASS DOMMatrix toJSON() - 3D matrix
+PASS DOMMatrix.fromMatrix(): Exception test
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/events/constructors/midi-message-event-constructor-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/events/constructors/midi-message-event-constructor-expected.txt
new file mode 100644
index 0000000..db97d36
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/events/constructors/midi-message-event-constructor-expected.txt
@@ -0,0 +1,21 @@
+CONSOLE WARNING: line 35: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+This tests the constructor for the MIDIMessageEvent DOM class.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+PASS new MIDIMessageEvent('eventType').bubbles is false
+PASS new MIDIMessageEvent('eventType').cancelable is false
+PASS new MIDIMessageEvent('eventType').data is null
+PASS new MIDIMessageEvent('eventType', { bubbles: false }).bubbles is false
+PASS new MIDIMessageEvent('eventType', { bubbles: true }).bubbles is true
+PASS new MIDIMessageEvent('eventType', { cancelable: false }).cancelable is false
+PASS new MIDIMessageEvent('eventType', { cancelable: true }).cancelable is true
+PASS new MIDIMessageEvent('eventType', { data: data }).data == '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0' is true
+PASS new MIDIMessageEvent('eventType', { bubbles: true, cancelable: true, data: data }).bubbles is true
+PASS new MIDIMessageEvent('eventType', { bubbles: true, cancelable: true, data: data }).cancelable is true
+PASS new MIDIMessageEvent('eventType', { bubbles: true, cancelable: true, data: data }).data == '0,0,0' is true
+PASS new MIDIMessageEvent('eventType', { data: data }) threw exception TypeError: Failed to construct 'MIDIMessageEvent': The provided ArrayBufferView value must not be shared..
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/files/blob-constructor-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/files/blob-constructor-expected.txt
new file mode 100644
index 0000000..2cfd83c
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/files/blob-constructor-expected.txt
@@ -0,0 +1,37 @@
+CONSOLE WARNING: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+Test the Blob constructor.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+PASS (new Blob([])).lastModified is undefined
+PASS (new Blob([], {})).lastModified is undefined
+PASS (new Blob([], {lastModified: new Date()})).lastModified is undefined
+PASS new Blob([new DataView(new ArrayBuffer(100))]).size is 100
+PASS new Blob([new Uint8Array(100)]).size is 100
+PASS new Blob([new Uint8ClampedArray(100)]).size is 100
+PASS new Blob([new Uint16Array(100)]).size is 200
+PASS new Blob([new Uint32Array(100)]).size is 400
+PASS new Blob([new Int8Array(100)]).size is 100
+PASS new Blob([new Int16Array(100)]).size is 200
+PASS new Blob([new Int32Array(100)]).size is 400
+PASS new Blob([new Float32Array(100)]).size is 400
+PASS new Blob([new Float64Array(100)]).size is 800
+PASS new Blob([new Float64Array(100), new Int32Array(100), new Uint8Array(100), new DataView(new ArrayBuffer(100))]).size is 1400
+PASS new Blob([new Blob([new Int32Array(100)]), new Uint8Array(100), new Float32Array(100), new DataView(new ArrayBuffer(100))]).size is 1000
+PASS new Blob([(new DataView(new ArrayBuffer(100))).buffer]).size is 100
+PASS new Blob([(new Uint8Array(100)).buffer]).size is 100
+PASS new Blob([(new Uint8ClampedArray(100)).buffer]).size is 100
+PASS new Blob([(new Uint16Array(100)).buffer]).size is 200
+PASS new Blob([(new Uint32Array(100)).buffer]).size is 400
+PASS new Blob([(new Int8Array(100)).buffer]).size is 100
+PASS new Blob([(new Int16Array(100)).buffer]).size is 200
+PASS new Blob([(new Int32Array(100)).buffer]).size is 400
+PASS new Blob([(new Float32Array(100)).buffer]).size is 400
+PASS new Blob([(new Float64Array(100)).buffer]).size is 800
+PASS new Blob([(new Float64Array(100)).buffer, (new Int32Array(100)).buffer, (new Uint8Array(100)).buffer, (new DataView(new ArrayBuffer(100))).buffer]).size is 1400
+PASS new Blob([new Blob([(new Int32Array(100)).buffer]), (new Uint8Array(100)).buffer, (new Float32Array(100)).buffer, (new DataView(new ArrayBuffer(100))).buffer]).size is 1000
+PASS new Blob([new Uint8Array(new SharedArrayBuffer(4))]) threw exception TypeError: Failed to construct 'Blob': The provided ArrayBufferView value must not be shared..
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/webgl/webgl-sharedarraybuffer-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/webgl/webgl-sharedarraybuffer-expected.txt
new file mode 100644
index 0000000..e448b9121
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/webgl/webgl-sharedarraybuffer-expected.txt
@@ -0,0 +1,34 @@
+CONSOLE WARNING: line 29: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+This is a testharness.js-based test.
+PASS bufferData
+PASS compressedTexImage2D
+PASS compressedTexSubImage2D
+PASS readPixels
+PASS texImage2D
+PASS texSubImage2D
+PASS uniformMatrix2fv
+PASS uniformMatrix3fv
+PASS uniformMatrix4fv
+PASS vertexAttrib1fv
+PASS vertexAttrib2fv
+PASS vertexAttrib3fv
+PASS vertexAttrib4fv
+PASS bufferSubData
+PASS getBufferSubData
+PASS compressedTexImage3D
+PASS compressedTexSubImage3D
+PASS texImage3D
+PASS texSubImage3D
+PASS uniformMatrix2x3fv
+PASS uniformMatrix3x2fv
+PASS uniformMatrix2x4fv
+PASS uniformMatrix4x2fv
+PASS uniformMatrix3x4fv
+PASS uniformMatrix4x3fv
+PASS vertexAttribI4iv
+PASS vertexAttribI4uiv
+PASS clearBufferiv
+PASS clearBufferuiv
+PASS clearBufferfv
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers-expected.txt
new file mode 100644
index 0000000..f859c05
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers-expected.txt
@@ -0,0 +1,85 @@
+CONSOLE WARNING: line 119: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 27: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 27: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+Test sharing SharedArrayBuffers between dedicated workers.
+
+Running SharedArrayBuffer test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred data is OK.
+PASS: Transferred data is OK.
+Running Int8Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint8Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint8ClampedArray test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Int16Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint16Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Int32Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint32Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Float32Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Float64Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+DONE
+
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/workers/worker-atomics-wait-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/workers/worker-atomics-wait-expected.txt
new file mode 100644
index 0000000..21fcba3
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/workers/worker-atomics-wait-expected.txt
@@ -0,0 +1,8 @@
+CONSOLE WARNING: line 18: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 2: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+Test that Atomics.wait is not allowed on the main thread.
+
+PASS: Calling Atomics.wait on the main thread throws.
+PASS: Atomics.wait is allowed in a worker.
+DONE
+
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/workers/worker-sharedarraybuffer-transfer-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/workers/worker-sharedarraybuffer-transfer-expected.txt
new file mode 100644
index 0000000..2ee37cfdb
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/workers/worker-sharedarraybuffer-transfer-expected.txt
@@ -0,0 +1,75 @@
+CONSOLE WARNING: line 113: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 27: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+Test sharing SharedArrayBuffers between dedicated workers.
+
+Running SharedArrayBuffer test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred data is OK.
+Running Int8Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint8Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint8ClampedArray test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Int16Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint16Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Int32Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Uint32Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Float32Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running Float64Array test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: SharedArrayBuffer not neutered during transfer.
+PASS: Original data not changed during transfer.
+PASS: Transferred array type is OK.
+PASS: Transferred data is OK.
+Running SendSharedArrayBufferTwice test case
+PASS: Transferred data is OK.
+Running TransferArrayBufferAndSharedArrayBuffer test case
+PASS: ArrayBuffer was neutered during transfer.
+PASS: Transferred data is OK.
+PASS: Transferred data is OK.
+Running SharedArrayBufferInTransferListViaMessagePort test case
+PASS: Passing SharedArrayBuffer in the transfer list threw.
+PASS: ArrayBuffer 'ab1' was not neutered.
+PASS: ArrayBuffer 'ab2' was not neutered.
+DONE
+
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/xmlhttprequest/xmlhttprequest-send-sharedarraybuffer-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/xmlhttprequest/xmlhttprequest-send-sharedarraybuffer-expected.txt
new file mode 100644
index 0000000..626853eb
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/fast/xmlhttprequest/xmlhttprequest-send-sharedarraybuffer-expected.txt
@@ -0,0 +1,5 @@
+CONSOLE WARNING: line 12: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+This is a testharness.js-based test.
+PASS sending SharedArrayBuffer
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/http/tests/websocket/send-arraybufferview-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/http/tests/websocket/send-arraybufferview-expected.txt
new file mode 100644
index 0000000..5ba5379
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/http/tests/websocket/send-arraybufferview-expected.txt
@@ -0,0 +1,14 @@
+CONSOLE WARNING: line 45: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+WebSocket: Send ArrayBufferViews.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+PASS ws.send(createSharedArrayBufferView()) threw exception TypeError: Failed to execute 'send' on 'WebSocket': The provided ArrayBufferView value must not be shared..
+PASS PASS: Message #0.
+PASS PASS: Message #1.
+PASS PASS: Message #2.
+PASS closeEvent.wasClean is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/storage/indexeddb/shared-array-buffer-throws-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/storage/indexeddb/shared-array-buffer-throws-expected.txt
new file mode 100644
index 0000000..8913974f
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/storage/indexeddb/shared-array-buffer-throws-expected.txt
@@ -0,0 +1,5 @@
+CONSOLE WARNING: line 14: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+This is a testharness.js-based test.
+PASS Serializing SharedArrayBuffer throws DataClone error.
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/webaudio/dom-exceptions-expected.txt b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/webaudio/dom-exceptions-expected.txt
new file mode 100644
index 0000000..dfb7f67
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/shared_array_buffer_on_desktop/webaudio/dom-exceptions-expected.txt
@@ -0,0 +1,281 @@
+CONSOLE WARNING: line 139: The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
+CONSOLE WARNING: line 143: The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
+CONSOLE WARNING: line 253: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 348: The provided value 'fancy' is not a valid enum value of type ChannelCountMode.
+CONSOLE WARNING: line 354: The provided value 'undefined' is not a valid enum value of type ChannelInterpretation.
+CONSOLE WARNING: line 524: The provided value '9x' is not a valid enum value of type OverSampleType.
+CONSOLE WARNING: line 770: The provided value 'junk' is not a valid enum value of type ChannelCountMode.
+CONSOLE WARNING: line 780: The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
+CONSOLE WARNING: line 801: The provided value 'junk' is not a valid enum value of type ChannelCountMode.
+This is a testharness.js-based test.
+PASS # AUDIT TASK RUNNER STARTED.
+PASS Executing "initialize"
+PASS Executing "createBuffer"
+PASS Executing "createMediaElementSource"
+PASS Executing "createMediaStreamSource"
+PASS Executing "createScriptProcessor"
+PASS Executing "createChannelSplitter"
+PASS Executing "createChannelMerger"
+PASS Executing "createPeriodicWave"
+PASS Executing "createAnalyser"
+PASS Executing "Init test nodes"
+PASS Executing "connections"
+PASS Executing "channel-stuff"
+PASS Executing "audioparam"
+PASS Executing "biquad"
+PASS Executing "offline-audio-context"
+PASS Executing "invalid-offline-audio-context-parameters"
+PASS Executing "invalid-frame-length"
+PASS Executing "waveshaper"
+PASS Executing "audio-buffer-source"
+PASS Executing "oscillator"
+PASS Executing "convolver"
+PASS Executing "panner"
+PASS Executing "script-processor"
+PASS Executing "misc"
+PASS Audit report
+PASS > [initialize] Initialize contexts for testing
+PASS   context = new AudioContext() did not throw an exception.
+PASS   otherContext = new AudioContext() did not throw an exception.
+PASS < [initialize] All assertions passed. (total 2 assertions)
+PASS > [createBuffer] 
+PASS   context.createBuffer(99, 1, context.sampleRate) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The number of channels provided (99) is outside the range [1, 32].".
+PASS   context.createBuffer(0, 1, context.sampleRate) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The number of channels provided (0) is outside the range [1, 32].".
+PASS   context.createBuffer(1, 1, 1) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The sample rate provided (1) is outside the range [3000, 768000].".
+PASS   context.createBuffer(1, 1, 2999) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The sample rate provided (2999) is outside the range [3000, 768000].".
+PASS   context.createBuffer(1, 1, 768001) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The sample rate provided (768001) is outside the range [3000, 768000].".
+PASS   context.createBuffer(1, 1, 1e6) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The sample rate provided (1.00000e+6) is outside the range [3000, 768000].".
+PASS   context.createBuffer(1, 1, 3000) did not throw an exception.
+PASS   context.createBuffer(1, 1, 192000) did not throw an exception.
+PASS   context.createBuffer(1, 1, 768000) did not throw an exception.
+PASS   context.createBuffer(1, 0, context.sampleRate) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The number of frames provided (0) is less than or equal to the minimum bound (0).".
+PASS   context.createBuffer(new ArrayBuffer(100), true) threw TypeError: "Failed to execute 'createBuffer' on 'BaseAudioContext': 3 arguments required, but only 2 present.".
+PASS < [createBuffer] All assertions passed. (total 11 assertions)
+PASS > [createMediaElementSource] 
+PASS   context.createMediaElementSource(null) threw TypeError: "Failed to execute 'createMediaElementSource' on 'AudioContext': parameter 1 is not of type 'HTMLMediaElement'.".
+PASS < [createMediaElementSource] All assertions passed. (total 1 assertions)
+PASS > [createMediaStreamSource] 
+PASS   context.createMediaStreamSource(null) threw TypeError: "Failed to execute 'createMediaStreamSource' on 'AudioContext': parameter 1 is not of type 'MediaStream'.".
+PASS < [createMediaStreamSource] All assertions passed. (total 1 assertions)
+PASS > [createScriptProcessor] 
+PASS   context.createScriptProcessor(1, 1, 1) threw IndexSizeError: "Failed to execute 'createScriptProcessor' on 'BaseAudioContext': buffer size (1) must be 0 or a power of two between 256 and 16384.".
+PASS   context.createScriptProcessor(4096, 100, 1) threw IndexSizeError: "Failed to execute 'createScriptProcessor' on 'BaseAudioContext': number of input channels (100) exceeds maximum (32).".
+PASS   context.createScriptProcessor(4096, 1, 100) threw IndexSizeError: "Failed to execute 'createScriptProcessor' on 'BaseAudioContext': number of output channels (100) exceeds maximum (32).".
+PASS   context.createScriptProcessor() did not throw an exception.
+PASS   context.createScriptProcessor(0) did not throw an exception.
+PASS < [createScriptProcessor] All assertions passed. (total 5 assertions)
+PASS > [createChannelSplitter] 
+PASS   context.createChannelSplitter(0) threw IndexSizeError: "Failed to execute 'createChannelSplitter' on 'BaseAudioContext': The number of outputs provided (0) is outside the range [1, 32].".
+PASS   context.createChannelSplitter(99) threw IndexSizeError: "Failed to execute 'createChannelSplitter' on 'BaseAudioContext': The number of outputs provided (99) is outside the range [1, 32].".
+PASS   context.createChannelMerger(0) threw IndexSizeError: "Failed to execute 'createChannelMerger' on 'BaseAudioContext': The number of inputs provided (0) is outside the range [1, 32].".
+PASS < [createChannelSplitter] All assertions passed. (total 3 assertions)
+PASS > [createChannelMerger] 
+PASS   context.createChannelMerger(99) threw IndexSizeError: "Failed to execute 'createChannelMerger' on 'BaseAudioContext': The number of inputs provided (99) is outside the range [1, 32].".
+PASS < [createChannelMerger] All assertions passed. (total 1 assertions)
+PASS > [createPeriodicWave] 
+PASS   context.createPeriodicWave(null, null) threw TypeError: "Failed to execute 'createPeriodicWave' on 'BaseAudioContext': The provided value cannot be converted to a sequence.".
+PASS   context.createPeriodicWave(new Float32Array(10), null) threw TypeError: "Failed to execute 'createPeriodicWave' on 'BaseAudioContext': The provided value cannot be converted to a sequence.".
+PASS   context.createPeriodicWave(new Float32Array(4100), new Float32Array(4100)) did not throw an exception.
+PASS   context.createPeriodicWave(new Float32Array(8192), new Float32Array(8192)) did not throw an exception.
+PASS   context.createPeriodicWave(new Float32Array(10000), new Float32Array(10000)) did not throw an exception.
+PASS   context.createPeriodicWave(new Float32Array(10), new Float32Array(7)) threw IndexSizeError: "Failed to execute 'createPeriodicWave' on 'BaseAudioContext': length of real array (10) and length of imaginary array (7) must match.".
+PASS < [createPeriodicWave] All assertions passed. (total 6 assertions)
+PASS > [createAnalyser] 
+PASS   AnalyserNode.fftSize = 42 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The value provided (42) is not a power of two.".
+PASS   AnalyserNode.fftSize is not equal to 42.
+PASS   AnalyserNode.fftSize = 16 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (16) is outside the range [32, 32768].".
+PASS   AnalyserNode.fftSize is not equal to 16.
+PASS   AnalyserNode.fftSize = 32768 did not throw an exception.
+PASS   AnalyserNode.fftSize = 65536 threw IndexSizeError: "Failed to set the 'fftSize' property on 'AnalyserNode': The FFT size provided (65536) is outside the range [32, 32768].".
+PASS   AnalyserNode.fftSize is not equal to 65536.
+PASS   AnalyserNode.minDecibels = -10 threw IndexSizeError: "Failed to set the 'minDecibels' property on 'AnalyserNode': The minDecibels provided (-10) is greater than the maximum bound (-30).".
+PASS   AnalyserNode.minDecibels is not equal to -10.
+PASS   AnalyserNode.maxDecibels = -150 threw IndexSizeError: "Failed to set the 'maxDecibels' property on 'AnalyserNode': The maxDecibels provided (-150) is less than the minimum bound (-100).".
+PASS   AnalyserNode.maxDecibels is not equal to -150.
+PASS   AnalyserNode.minDecibels = -30 threw IndexSizeError: "Failed to set the 'minDecibels' property on 'AnalyserNode': The minDecibels provided (-30) is greater than or equal to the maximum bound (-30).".
+PASS   AnalyserNode.minDecibels is not equal to -30.
+PASS   AnalyserNode.maxDecibels = -100 threw IndexSizeError: "Failed to set the 'maxDecibels' property on 'AnalyserNode': The maxDecibels provided (-100) is less than or equal to the minimum bound (-100).".
+PASS   AnalyserNode.maxDecibels is not equal to -100.
+PASS   AnalyserNode.smoothingTimeConstant = -0.1 threw IndexSizeError: "Failed to set the 'smoothingTimeConstant' property on 'AnalyserNode': The smoothing value provided (-0.1) is outside the range [0, 1].".
+PASS   AnalyserNode.smoothingTimeConstant is not equal to -0.1.
+PASS   AnalyserNode.smoothingTimeConstant = 1.5 threw IndexSizeError: "Failed to set the 'smoothingTimeConstant' property on 'AnalyserNode': The smoothing value provided (1.5) is outside the range [0, 1].".
+PASS   AnalyserNode.smoothingTimeConstant is not equal to 1.5.
+PASS   AnalyserNode.getFloatFrequencyData(null) threw TypeError: "Failed to execute 'getFloatFrequencyData' on 'AnalyserNode': parameter 1 is not of type 'Float32Array'.".
+PASS   AnalyserNode.getByteFrequencyData(null) threw TypeError: "Failed to execute 'getByteFrequencyData' on 'AnalyserNode': parameter 1 is not of type 'Uint8Array'.".
+PASS   AnalyserNode.getFloatTimeDomainData(null) threw TypeError: "Failed to execute 'getFloatTimeDomainData' on 'AnalyserNode': parameter 1 is not of type 'Float32Array'.".
+PASS   AnalyserNode.getByteTimeDomainData(null) threw TypeError: "Failed to execute 'getByteTimeDomainData' on 'AnalyserNode': parameter 1 is not of type 'Uint8Array'.".
+PASS   AnalyserNode.getFloatFrequencyData(SharedArrayBuffer view) threw TypeError: "Failed to execute 'getFloatFrequencyData' on 'AnalyserNode': The provided ArrayBufferView value must not be shared.".
+PASS   AnalyserNode.getByteFrequencyData(SharedArrayBuffer view) threw TypeError: "Failed to execute 'getByteFrequencyData' on 'AnalyserNode': The provided ArrayBufferView value must not be shared.".
+PASS   AnalyserNode.getFloatTimeDomainData(SharedArrayBuffer view) threw TypeError: "Failed to execute 'getFloatTimeDomainData' on 'AnalyserNode': The provided ArrayBufferView value must not be shared.".
+PASS   AnalyserNode.getByteTimeDomainData(SharedArrayBuffer view) threw TypeError: "Failed to execute 'getByteTimeDomainData' on 'AnalyserNode': The provided ArrayBufferView value must not be shared.".
+PASS   AudioBuffer.getChannelData(2) threw IndexSizeError: "Failed to execute 'getChannelData' on 'AudioBuffer': channel index (2) exceeds number of channels (1)".
+PASS < [createAnalyser] All assertions passed. (total 28 assertions)
+PASS > [Init test nodes] Create test nodes for the following tests
+PASS   node = context.createGain() did not throw an exception.
+PASS   node2 = context.createGain() did not throw an exception.
+PASS < [Init test nodes] All assertions passed. (total 2 assertions)
+PASS > [connections] AudioNode connections
+PASS   node.connect(null, 0, 0) threw TypeError: "Failed to execute 'connect' on 'AudioNode': parameter 1 is not of type 'AudioNode'.".
+PASS   node.connect(context.destination, 100, 0) threw IndexSizeError: "Failed to execute 'connect' on 'AudioNode': output index (100) exceeds number of outputs (1).".
+PASS   node.connect(context.destination, 0, 100) threw IndexSizeError: "Failed to execute 'connect' on 'AudioNode': input index (100) exceeds number of inputs (1).".
+PASS   node.connect(node2.gain, 100) threw IndexSizeError: "Failed to execute 'connect' on 'AudioNode': output index (100) exceeds number of outputs (1).".
+PASS   node.disconnect(99) threw IndexSizeError: "Failed to execute 'disconnect' on 'AudioNode': The output index provided (99) is outside the range [0, 0].".
+PASS   node.connect(otherContext.destination) threw InvalidAccessError: "Failed to execute 'connect' on 'AudioNode': cannot connect to a destination belonging to a different audio context.".
+PASS < [connections] All assertions passed. (total 6 assertions)
+PASS > [channel-stuff] channelCount, channelCountMode, channelInterpretation
+PASS   GainNode.channelCount = 99 threw NotSupportedError: "Failed to set the 'channelCount' property on 'AudioNode': The channel count provided (99) is outside the range [1, 32].".
+PASS   GainNode.channelCount is not equal to 99.
+PASS   node.channelCountMode = "fancy" did not throw an exception.
+PASS   node.channelCountMode is equal to max.
+PASS   node.channelInterpretation = mode did not throw an exception.
+PASS   node.channelInterpretation is equal to speakers.
+PASS   context.destination.channelCount = 99 threw IndexSizeError: [error message omitted].
+PASS < [channel-stuff] All assertions passed. (total 7 assertions)
+PASS > [audioparam] 
+PASS   param.setValueCurveAtTime(null, 0, 0) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided value cannot be converted to a sequence.".
+PASS   node.gain.exponentialRampToValueAtTime(-1, 0.1) did not throw an exception.
+PASS   node.gain.exponentialRampToValueAtTime(0, 0.1) threw RangeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The float target value provided (0) should not be in the range (-1.40130e-45, 1.40130e-45).".
+PASS   node.gain.exponentialRampToValueAtTime(1e-100, 0.1) threw RangeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The float target value provided (0) should not be in the range (-1.40130e-45, 1.40130e-45).".
+PASS   node.gain.exponentialRampToValueAtTime(Math.pow(2, -149), 0.1) did not throw an exception.
+PASS   node.gain.exponentialRampToValueAtTime(Math.pow(2, -150), 0.1) threw RangeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The float target value provided (0) should not be in the range (-1.40130e-45, 1.40130e-45).".
+PASS < [audioparam] All assertions passed. (total 6 assertions)
+PASS > [biquad] 
+PASS   node.getFrequencyResponse(new Float32Array(1), new Float32Array(1), new Float32Array(1)) did not throw an exception.
+PASS   node.getFrequencyResponse(null, new Float32Array(1), new Float32Array(1)) threw TypeError: "Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': parameter 1 is not of type 'Float32Array'.".
+PASS   node.getFrequencyResponse(new Float32Array(1), null, new Float32Array(1)) threw TypeError: "Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': parameter 2 is not of type 'Float32Array'.".
+PASS   node.getFrequencyResponse(new Float32Array(1), new Float32Array(1), null) threw TypeError: "Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': parameter 3 is not of type 'Float32Array'.".
+PASS   node.getFrequencyResponse(shared_view, nonshared_view, nonshared_view) threw TypeError: "Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': The provided ArrayBufferView value must not be shared.".
+PASS   node.getFrequencyResponse(nonshared_view, shared_view, nonshared_view) threw TypeError: "Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': The provided ArrayBufferView value must not be shared.".
+PASS   node.getFrequencyResponse(nonshared_view, nonshared_view, shared_view) threw TypeError: "Failed to execute 'getFrequencyResponse' on 'BiquadFilterNode': The provided ArrayBufferView value must not be shared.".
+PASS < [biquad] All assertions passed. (total 7 assertions)
+PASS > [offline-audio-context] supports 32 channels
+PASS   new OfflineAudioContext(32, 100, context.sampleRate) did not throw an exception.
+PASS < [offline-audio-context] All assertions passed. (total 1 assertions)
+PASS > [invalid-offline-audio-context-parameters] errors for invalid channel counts
+PASS   new OfflineAudioContext(0, 100, context.sampleRate) threw NotSupportedError: "Failed to construct 'OfflineAudioContext': The number of channels provided (0) is outside the range [1, 32].".
+PASS   new OfflineAudioContext(99, 100, context.sampleRate) threw NotSupportedError: "Failed to construct 'OfflineAudioContext': The number of channels provided (99) is outside the range [1, 32].".
+PASS   new OfflineAudioContext(1, 100, 1) threw NotSupportedError: "Failed to construct 'OfflineAudioContext': The sampleRate provided (1) is outside the range [3000, 768000].".
+PASS   new OfflineAudioContext(1, 100, 1e6) threw NotSupportedError: "Failed to construct 'OfflineAudioContext': The sampleRate provided (1.00000e+6) is outside the range [3000, 768000].".
+PASS   new OfflineAudioContext(1, 0, 44100) threw NotSupportedError: "Failed to construct 'OfflineAudioContext': The number of frames provided (0) is less than the minimum bound (1).".
+PASS < [invalid-offline-audio-context-parameters] All assertions passed. (total 5 assertions)
+PASS > [invalid-frame-length] 
+PASS   testContext = new OfflineAudioContext(1, -88200000000000, 44100) did not throw an exception.
+PASS   testContext.startRendering() rejected correctly with NotSupportedError: Failed to execute 'startRendering' on 'OfflineAudioContext': startRendering failed to create AudioBuffer(1, 1448390656, 44100).
+PASS < [invalid-frame-length] All assertions passed. (total 2 assertions)
+PASS > [waveshaper] 
+PASS   node.oversample = "9x" did not throw an exception.
+PASS   node.oversample is equal to none.
+PASS   node.curve = {} threw TypeError: "Failed to set the 'curve' property on 'WaveShaperNode': Failed to convert value to 'Float32Array'.".
+PASS   node.curve = new Float32Array(1) threw InvalidAccessError: "Failed to set the 'curve' property on 'WaveShaperNode': The curve length provided (1) is less than the minimum bound (2).".
+PASS   node.curve is equal to null.
+PASS   node.curve = new Float32Array(2) did not throw an exception.
+PASS   node.curve = null did not throw an exception.
+PASS < [waveshaper] All assertions passed. (total 7 assertions)
+PASS > [audio-buffer-source] AudioBufferSource start/stop
+PASS   source = context.createBufferSource() did not throw an exception.
+PASS   source.buffer = buffer did not throw an exception.
+PASS   source.buffer = context.createBuffer(1, 10, context.sampleRate) threw InvalidStateError: "Failed to set the 'buffer' property on 'AudioBufferSourceNode': Cannot set buffer to non-null after it has been already been set to a non-null buffer".
+PASS   source.start(-1) threw RangeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The start time provided (-1) is less than the minimum bound (0).".
+PASS   source.start(Infinity) threw TypeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The provided double value is non-finite.".
+PASS   source.start(-Infinity) threw TypeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The provided double value is non-finite.".
+PASS   source.start(NaN) threw TypeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The provided double value is non-finite.".
+PASS   source.start(1, Infinity) threw TypeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The provided double value is non-finite.".
+PASS   source.start(1, -Infinity) threw TypeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The provided double value is non-finite.".
+PASS   source.start(1, NaN) threw TypeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The provided double value is non-finite.".
+PASS   source.start(1, -1) threw RangeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The offset provided (-1) is less than the minimum bound (0).".
+PASS   source.start(1, -Number.MIN_VALUE) threw RangeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The offset provided (-4.94066e-324) is less than the minimum bound (0).".
+PASS   source.start(1, 1, Infinity) threw TypeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The provided double value is non-finite.".
+PASS   source.start(1, 1, -Infinity) threw TypeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The provided double value is non-finite.".
+PASS   source.start(1, 1, NaN) threw TypeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The provided double value is non-finite.".
+PASS   source.start(1, 1, -1) threw RangeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The duration provided (-1) is less than the minimum bound (0).".
+PASS   source.start(1, 1, -Number.MIN_VALUE) threw RangeError: "Failed to execute 'start' on 'AudioBufferSourceNode': The duration provided (-4.94066e-324) is less than the minimum bound (0).".
+PASS   source.start() did not throw an exception.
+PASS   source.stop(-Number.MIN_VALUE) threw RangeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The stop time provided (-4.94066e-324) is less than the minimum bound (0).".
+PASS   source.stop(Infinity) threw TypeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.".
+PASS   source.stop(-Infinity) threw TypeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.".
+PASS   source.stop(NaN) threw TypeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.".
+PASS   source.stop() did not throw an exception.
+PASS   source2 = context.createBufferSource() did not throw an exception.
+PASS   source2.buffer = buffer did not throw an exception.
+PASS   source2.start(0, 0) did not throw an exception.
+PASS   source3 = context.createBufferSource() did not throw an exception.
+PASS   source3.buffer = buffer did not throw an exception.
+PASS   source3.start(0, -1/Infinity) did not throw an exception.
+PASS   source4 = context.createBufferSource() did not throw an exception.
+PASS   source4.start() did not throw an exception.
+PASS   source5 = context.createBufferSource() did not throw an exception.
+PASS   source5.buffer = buffer did not throw an exception.
+PASS   source5.stop() threw InvalidStateError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': cannot call stop without calling start first.".
+PASS   source6 = context.createBufferSource() did not throw an exception.
+PASS   source6.buffer = buffer did not throw an exception.
+PASS   source6.start() did not throw an exception.
+PASS   source6.start() threw InvalidStateError: "Failed to execute 'start' on 'AudioBufferSourceNode': cannot call start more than once.".
+PASS   source7 = context.createBufferSource() did not throw an exception.
+PASS   source7.buffer = buffer did not throw an exception.
+PASS   source7.start() did not throw an exception.
+PASS   source7.stop() did not throw an exception.
+PASS < [audio-buffer-source] All assertions passed. (total 42 assertions)
+PASS > [oscillator] start/stop
+PASS   source8 = context.createOscillator() did not throw an exception.
+PASS   source8.start(-Number.MIN_VALUE) threw RangeError: "Failed to execute 'start' on 'AudioScheduledSourceNode': The start time provided (-4.94066e-324) is less than the minimum bound (0).".
+PASS   source8.start(Infinity) threw TypeError: "Failed to execute 'start' on 'AudioScheduledSourceNode': The provided double value is non-finite.".
+PASS   source8.start(-Infinity) threw TypeError: "Failed to execute 'start' on 'AudioScheduledSourceNode': The provided double value is non-finite.".
+PASS   source8.start(NaN) threw TypeError: "Failed to execute 'start' on 'AudioScheduledSourceNode': The provided double value is non-finite.".
+PASS   source8.start() did not throw an exception.
+PASS   source8.stop(-Number.MIN_VALUE) threw RangeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The stop time provided (-4.94066e-324) is less than the minimum bound (0).".
+PASS   source8.stop(Infinity) threw TypeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.".
+PASS   source8.stop(-Infinity) threw TypeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.".
+PASS   source8.stop(NaN) threw TypeError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': The provided double value is non-finite.".
+PASS   source8.stop() did not throw an exception.
+PASS   osc = context.createOscillator() did not throw an exception.
+PASS   osc.stop() threw InvalidStateError: "Failed to execute 'stop' on 'AudioScheduledSourceNode': cannot call stop without calling start first.".
+PASS   osc1 = context.createOscillator() did not throw an exception.
+PASS   osc1.start() did not throw an exception.
+PASS   osc1.stop() did not throw an exception.
+PASS   osc.setPeriodicWave(null) threw TypeError: "Failed to execute 'setPeriodicWave' on 'OscillatorNode': parameter 1 is not of type 'PeriodicWave'.".
+PASS < [oscillator] All assertions passed. (total 17 assertions)
+PASS > [convolver] 
+PASS   oc = new OfflineAudioContext(1, 44100, 44100) did not throw an exception.
+PASS   conv = oc.createConvolver() did not throw an exception.
+PASS   conv.buffer = {} threw TypeError: "Failed to set the 'buffer' property on 'ConvolverNode': Failed to convert value to 'AudioBuffer'.".
+PASS   conv.buffer = oc.createBuffer(1, 100, 22050) threw NotSupportedError: "Failed to set the 'buffer' property on 'ConvolverNode': The buffer sample rate of 22050 does not match the context rate of 44100 Hz.".
+PASS   conv.buffer is equal to null.
+PASS < [convolver] All assertions passed. (total 5 assertions)
+PASS > [panner] 
+PASS   panner.channelCount = 1 did not throw an exception.
+PASS   panner.channelCount = 2 did not throw an exception.
+PASS   PannerNode.channelCount = 0 threw NotSupportedError: "Failed to set the 'channelCount' property on 'AudioNode': The channelCount provided (0) is outside the range [1, 2].".
+PASS   PannerNode.channelCount is not equal to 0.
+PASS   PannerNode.channelCount = 3 threw NotSupportedError: "Failed to set the 'channelCount' property on 'AudioNode': The channelCount provided (3) is outside the range [1, 2].".
+PASS   PannerNode.channelCount is not equal to 3.
+PASS   PannerNode.channelCountMode = max threw NotSupportedError: "Failed to set the 'channelCountMode' property on 'AudioNode': Panner: 'max' is not allowed".
+PASS   PannerNode.channelCountMode is not equal to max.
+PASS   panner.channelCountMode = "explicit" did not throw an exception.
+PASS   panner.channelCountMode = "clamped-max" did not throw an exception.
+PASS   panner.channelCountMode = "junk" did not throw an exception.
+PASS < [panner] All assertions passed. (total 11 assertions)
+PASS > [script-processor] 
+PASS   script = context.createScriptProcessor(256, 3) did not throw an exception.
+PASS   script.channelCount is equal to 3.
+PASS   script.channelCountMode is equal to explicit.
+PASS   script.channelCount = 3 did not throw an exception.
+PASS   ScriptProcessorNode.channelCount = 1 threw NotSupportedError: "Failed to set the 'channelCount' property on 'AudioNode': channelCount cannot be changed from 3 to 1".
+PASS   ScriptProcessorNode.channelCount is not equal to 1.
+PASS   ScriptProcessorNode.channelCount = 7 threw NotSupportedError: "Failed to set the 'channelCount' property on 'AudioNode': channelCount cannot be changed from 3 to 7".
+PASS   ScriptProcessorNode.channelCount is not equal to 7.
+PASS   script.channelCountMode = "explicit" did not throw an exception.
+PASS   ScriptProcessorNode.channelCountMode = max threw NotSupportedError: "Failed to set the 'channelCountMode' property on 'AudioNode': channelCountMode cannot be changed from 'explicit' to 'max'".
+PASS   ScriptProcessorNode.channelCountMode is not equal to max.
+PASS   ScriptProcessorNode.channelCountMode = clamped-max threw NotSupportedError: "Failed to set the 'channelCountMode' property on 'AudioNode': channelCountMode cannot be changed from 'explicit' to 'clamped-max'".
+PASS   ScriptProcessorNode.channelCountMode is not equal to clamped-max.
+PASS   script.channelCountMode = "junk" did not throw an exception.
+PASS < [script-processor] All assertions passed. (total 14 assertions)
+PASS > [misc] Miscellaneous tests
+PASS   osc.noteOn is equal to undefined.
+PASS   osc.noteOff is equal to undefined.
+PASS   source.noteOn is equal to undefined.
+PASS   source.noteOff is equal to undefined.
+PASS < [misc] All assertions passed. (total 4 assertions)
+PASS # AUDIT TASK RUNNER FINISHED: 24 tasks ran successfully.
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/fast/css/fontface-arraybuffer-expected.txt b/third_party/blink/web_tests/virtual/synchronous_html_parser/fast/css/fontface-arraybuffer-expected.txt
new file mode 100644
index 0000000..ef6deffe
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/fast/css/fontface-arraybuffer-expected.txt
@@ -0,0 +1,19 @@
+CONSOLE WARNING: line 29: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+Tests ArrayBuffer / ArrayBufferView constructors of FontFace.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+PASS face1.status is "loaded"
+PASS face2.status is "loaded"
+PASS rejectionValue.name is "TypeError"
+PASS face3.status is "error"
+PASS rejectionValue.name is "SyntaxError"
+PASS document.getElementById('FontFromArrayBuffer').offsetWidth is document.getElementById('ref').offsetWidth
+PASS document.getElementById('FontFromArrayBufferView').offsetWidth is document.getElementById('ref').offsetWidth
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
+abc
+abc
+abc
diff --git a/third_party/blink/web_tests/webaudio/dom-exceptions-expected.txt b/third_party/blink/web_tests/webaudio/dom-exceptions-expected.txt
index 54e3ae0..30f0f5eb 100644
--- a/third_party/blink/web_tests/webaudio/dom-exceptions-expected.txt
+++ b/third_party/blink/web_tests/webaudio/dom-exceptions-expected.txt
@@ -1,12 +1,12 @@
-CONSOLE WARNING: line 138: The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
-CONSOLE WARNING: line 142: The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
-CONSOLE WARNING: line 252: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
-CONSOLE WARNING: line 347: The provided value 'fancy' is not a valid enum value of type ChannelCountMode.
-CONSOLE WARNING: line 353: The provided value 'undefined' is not a valid enum value of type ChannelInterpretation.
-CONSOLE WARNING: line 523: The provided value '9x' is not a valid enum value of type OverSampleType.
-CONSOLE WARNING: line 769: The provided value 'junk' is not a valid enum value of type ChannelCountMode.
-CONSOLE WARNING: line 779: The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
-CONSOLE WARNING: line 800: The provided value 'junk' is not a valid enum value of type ChannelCountMode.
+CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.
+CONSOLE WARNING: line 139: The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
+CONSOLE WARNING: line 143: The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
+CONSOLE WARNING: line 348: The provided value 'fancy' is not a valid enum value of type ChannelCountMode.
+CONSOLE WARNING: line 354: The provided value 'undefined' is not a valid enum value of type ChannelInterpretation.
+CONSOLE WARNING: line 524: The provided value '9x' is not a valid enum value of type OverSampleType.
+CONSOLE WARNING: line 770: The provided value 'junk' is not a valid enum value of type ChannelCountMode.
+CONSOLE WARNING: line 780: The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
+CONSOLE WARNING: line 801: The provided value 'junk' is not a valid enum value of type ChannelCountMode.
 This is a testharness.js-based test.
 PASS # AUDIT TASK RUNNER STARTED.
 PASS Executing "initialize"
@@ -41,13 +41,13 @@
 PASS > [createBuffer] 
 PASS   context.createBuffer(99, 1, context.sampleRate) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The number of channels provided (99) is outside the range [1, 32].".
 PASS   context.createBuffer(0, 1, context.sampleRate) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The number of channels provided (0) is outside the range [1, 32].".
-PASS   context.createBuffer(1, 1, 1) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The sample rate provided (1) is outside the range [3000, 384000].".
-PASS   context.createBuffer(1, 1, 2999) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The sample rate provided (2999) is outside the range [3000, 384000].".
-PASS   context.createBuffer(1, 1, 384001) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The sample rate provided (384001) is outside the range [3000, 384000].".
-PASS   context.createBuffer(1, 1, 1e6) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The sample rate provided (1.00000e+6) is outside the range [3000, 384000].".
+PASS   context.createBuffer(1, 1, 1) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The sample rate provided (1) is outside the range [3000, 768000].".
+PASS   context.createBuffer(1, 1, 2999) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The sample rate provided (2999) is outside the range [3000, 768000].".
+PASS   context.createBuffer(1, 1, 768001) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The sample rate provided (768001) is outside the range [3000, 768000].".
+PASS   context.createBuffer(1, 1, 1e6) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The sample rate provided (1.00000e+6) is outside the range [3000, 768000].".
 PASS   context.createBuffer(1, 1, 3000) did not throw an exception.
 PASS   context.createBuffer(1, 1, 192000) did not throw an exception.
-PASS   context.createBuffer(1, 1, 384000) did not throw an exception.
+PASS   context.createBuffer(1, 1, 768000) did not throw an exception.
 PASS   context.createBuffer(1, 0, context.sampleRate) threw NotSupportedError: "Failed to execute 'createBuffer' on 'BaseAudioContext': The number of frames provided (0) is less than or equal to the minimum bound (0).".
 PASS   context.createBuffer(new ArrayBuffer(100), true) threw TypeError: "Failed to execute 'createBuffer' on 'BaseAudioContext': 3 arguments required, but only 2 present.".
 PASS < [createBuffer] All assertions passed. (total 11 assertions)
@@ -154,8 +154,8 @@
 PASS > [invalid-offline-audio-context-parameters] errors for invalid channel counts
 PASS   new OfflineAudioContext(0, 100, context.sampleRate) threw NotSupportedError: "Failed to construct 'OfflineAudioContext': The number of channels provided (0) is outside the range [1, 32].".
 PASS   new OfflineAudioContext(99, 100, context.sampleRate) threw NotSupportedError: "Failed to construct 'OfflineAudioContext': The number of channels provided (99) is outside the range [1, 32].".
-PASS   new OfflineAudioContext(1, 100, 1) threw NotSupportedError: "Failed to construct 'OfflineAudioContext': The sampleRate provided (1) is outside the range [3000, 384000].".
-PASS   new OfflineAudioContext(1, 100, 1e6) threw NotSupportedError: "Failed to construct 'OfflineAudioContext': The sampleRate provided (1.00000e+6) is outside the range [3000, 384000].".
+PASS   new OfflineAudioContext(1, 100, 1) threw NotSupportedError: "Failed to construct 'OfflineAudioContext': The sampleRate provided (1) is outside the range [3000, 768000].".
+PASS   new OfflineAudioContext(1, 100, 1e6) threw NotSupportedError: "Failed to construct 'OfflineAudioContext': The sampleRate provided (1.00000e+6) is outside the range [3000, 768000].".
 PASS   new OfflineAudioContext(1, 0, 44100) threw NotSupportedError: "Failed to construct 'OfflineAudioContext': The number of frames provided (0) is less than the minimum bound (1).".
 PASS < [invalid-offline-audio-context-parameters] All assertions passed. (total 5 assertions)
 PASS > [invalid-frame-length] 
diff --git a/third_party/blink/web_tests/webaudio/dom-exceptions.html b/third_party/blink/web_tests/webaudio/dom-exceptions.html
index d5694fd..b9fdcfb 100644
--- a/third_party/blink/web_tests/webaudio/dom-exceptions.html
+++ b/third_party/blink/web_tests/webaudio/dom-exceptions.html
@@ -8,6 +8,7 @@
     <script src="../resources/testharnessreport.js"></script>
     <script src="resources/audit-util.js"></script>
     <script src="resources/audit.js"></script>
+    <script src="../resources/sab-polyfill.js"></script>
   </head>
   <body>
     <script id="layout-test-code">
@@ -66,8 +67,8 @@
             'context.createBuffer(1, 1, 2999)')
             .throw(DOMException, 'NotSupportedError');
         should(
-            () => context.createBuffer(1, 1, 384001),
-            'context.createBuffer(1, 1, 384001)')
+            () => context.createBuffer(1, 1, 768001),
+            'context.createBuffer(1, 1, 768001)')
             .throw(DOMException, 'NotSupportedError');
         should(
             () => context.createBuffer(1, 1, 1e6),
@@ -83,8 +84,8 @@
             'context.createBuffer(1, 1, 192000)')
             .notThrow();
         should(
-            () => context.createBuffer(1, 1, 384000),
-            'context.createBuffer(1, 1, 384000)')
+            () => context.createBuffer(1, 1, 768000),
+            'context.createBuffer(1, 1, 768000)')
             .notThrow();
         // Invalid number of frames: NotSupportedError
         should(
diff --git a/third_party/blink/web_tests/wpt_internal/document-transition/shared-transition-half.manual.html b/third_party/blink/web_tests/wpt_internal/document-transition/shared-transition-half.manual.html
new file mode 100644
index 0000000..4c041b6c
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/document-transition/shared-transition-half.manual.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+<title>Shared transitions of different elements and shapes</title>
+<link rel="help" href="https://github.com/vmpstr/shared-element-transitions">
+<link rel="author" href="mailto:vmpstr@chromium.org">
+
+<style>
+body {
+  background: lightpink;
+  overflow: hidden;
+}
+
+input {
+  position: absolute;
+  left: 8px;
+  top: 8px;
+  z-index: 10;
+}
+
+.top {
+  top: 0px;
+}
+.bottom {
+  bottom: 0px;
+}
+
+div {
+  position: absolute;
+  left: 0px;
+  right: 0px;
+  height: 40vh;
+  background: green;
+  contain: paint;
+}
+</style>
+
+<input id=toggle type=button value="Toggle!"></input>
+<div id=target class=top>
+The green div should alternate being at the bottom and at the top.
+Other than green and pink background no other colors should appear.
+</div>
+
+<script>
+let classes = ["top", "bottom"]
+let i = 0;
+async function runAnimation() {
+  await document.documentTransition.prepare({
+    rootTransition: "none",
+    sharedElements: [target]
+  });
+
+  target.classList.remove(classes[i]);
+  i = (i + 1) % classes.length;
+  target.classList.add(classes[i]);
+
+  await document.documentTransition.start({
+    sharedElements: [target]
+  });
+}
+
+function init() {
+  toggle.addEventListener("click", runAnimation);
+}
+onload = init;
+</script>
diff --git a/third_party/blink/web_tests/wpt_internal/document-transition/shared-transition-shapes.manual.html b/third_party/blink/web_tests/wpt_internal/document-transition/shared-transition-shapes.manual.html
new file mode 100644
index 0000000..7de5adbf
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/document-transition/shared-transition-shapes.manual.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+<html>
+<title>Shared transitions of different elements and shapes</title>
+<link rel="help" href="https://github.com/vmpstr/shared-element-transitions">
+<link rel="author" href="mailto:vmpstr@chromium.org">
+
+<style>
+body {
+  background: lightpink;
+}
+
+#container {
+  width: max-content;
+  position: relative;
+}
+
+.left {
+  left: 50px;
+}
+.right {
+  left: 550px;
+}
+
+div {
+  margin: 10px;
+  contain: paint;
+}
+
+.square {
+  width: 100px;
+  height: 100px;
+  background: green;
+}
+.rounded {
+  width: 100px;
+  height: 100px;
+  background: green;
+  border-radius: 20%;
+}
+.translucent {
+  opacity: 0.5;
+}
+.text {
+  width: 100px;
+  height: 100px;
+}
+</style>
+
+<input id=toggle type=button value="Toggle!"></input>
+<span>Same shape should move right and left</span>
+<div id=container class=left>
+  <div id=e1 class=square></div>
+  <div id=e2 class=rounded></div>
+  <div id=e3 class="square translucent"></div>
+  <div id=e4 class="rounded translucent"></div>
+  <div id=e5 class=text>Lorem Ipsum</div>
+</div>
+
+<script>
+let classes = ["left", "right"]
+let i = 0;
+async function runAnimation() {
+  await document.documentTransition.prepare({
+    rootTransition: "none",
+    sharedElements: [e1, e2, e3, e4, e5]
+  });
+
+  container.classList.remove(classes[i]);
+  i = (i + 1) % classes.length;
+  container.classList.add(classes[i]);
+
+  await document.documentTransition.start({
+    sharedElements: [e1, e2, e3, e4, e5]
+  });
+}
+
+function init() {
+  toggle.addEventListener("click", runAnimation);
+}
+onload = init;
+</script>
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/resources/notification.html b/third_party/blink/web_tests/wpt_internal/prerender/resources/notification.html
new file mode 100644
index 0000000..f48af99
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/prerender/resources/notification.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<script src="utils.js"></script>
+<script>
+
+const params = new URLSearchParams(location.search);
+
+// The main test page (restriction-notification.https.html) loads the initiator
+// page, then the initiator page will prerender itself with the `prerendering`
+// parameter.
+const isPrerendering = params.has('prerendering');
+
+if (!isPrerendering) {
+  loadInitiatorPage();
+} else {
+  // Used to communicate with the initiator page.
+  const prerenderChannel = new BroadcastChannel('prerender-channel');
+  // Used to communicate with the main test page.
+  const testChannel = new BroadcastChannel('test-channel');
+
+  window.addEventListener('load', () => {
+    // Inform the initiator page that this page was loaded.
+    prerenderChannel.postMessage('loaded');
+    prerenderChannel.close();
+  });
+
+  document.addEventListener('prerenderingchange', () => {
+    // Accessing the Notification API is allowed after the prerendering state
+    // changed.
+    const notification = new Notification('New Notification');
+
+    notification.onerror = function(_) {
+      testChannel.postMessage('notification error');
+      testChannel.close();
+    }
+    notification.onshow = function() {
+      testChannel.postMessage('notification showed');
+      notification.close();
+      testChannel.close();
+    };
+  });
+}
+
+</script>
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/restriction-notification.https.html b/third_party/blink/web_tests/wpt_internal/prerender/restriction-notification.https.html
new file mode 100644
index 0000000..90a2fc4
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/prerender/restriction-notification.https.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<!--
+This file cannot be upstreamed to WPT until:
+* startPrerendering() usage is replaced with a WebDriver API
+* internals.setPermission() usage is replaced with a WebDriver API
+
+TODO(https://crbug.com/1198110): Add the following tests:
+* Test the deferral of the promise if it is used during prerendering.
+* Test Notification.permission returns "default" synchronously.
+-->
+<title>Access to the Notification API is allowed after the prerendering state
+  changed </title>
+
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+<body>
+<script>
+
+promise_test(async t => {
+  const bc = new BroadcastChannel('test-channel');
+  t.add_cleanup(_ => bc.close());
+
+  await internals.setPermission({name: 'notifications'}, 'granted',
+                                location.origin, location.origin);
+  const gotMessage = new Promise(resolve => {
+    bc.addEventListener('message', e => {
+      resolve(e.data);
+    }, {
+      once: true
+    });
+  });
+  const url = `resources/notification.html`;
+  window.open(url, '_blank', 'noopener');
+
+  const result = await gotMessage;
+  assert_equals(result, 'notification showed');
+}, `it is allowed to access the notification API in the prerenderingchange
+    event`);
+
+</script>
+</body>
diff --git a/third_party/closure_compiler/externs/management.js b/third_party/closure_compiler/externs/management.js
index 7900492..d07bd59 100644
--- a/third_party/closure_compiler/externs/management.js
+++ b/third_party/closure_compiler/externs/management.js
@@ -1,4 +1,4 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
+// Copyright 2021 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
@@ -167,7 +167,9 @@
 chrome.management.setEnabled = function(id, enabled, callback) {};
 
 /**
- * Uninstalls a currently installed app or extension.
+ * Uninstalls a currently installed app or extension. Note: This function does
+ * not work in managed environments when the user is not allowed to uninstall
+ * the specified extension/app.
  * @param {string} id This should be the id from an item of
  *     $(ref:management.ExtensionInfo).
  * @param {!chrome.management.UninstallOptions=} options
@@ -178,7 +180,9 @@
 
 /**
  * Uninstalls the calling extension. Note: This function can be used without
- * requesting the 'management' permission in the manifest.
+ * requesting the 'management' permission in the manifest. This function does
+ * not work in managed environments when the user is not allowed to uninstall
+ * the specified extension/app.
  * @param {!chrome.management.UninstallOptions=} options
  * @param {function(): void=} callback
  * @see https://developer.chrome.com/extensions/management#method-uninstallSelf
diff --git a/third_party/highway/README.chromium b/third_party/highway/README.chromium
index 38e7b408..32e69c8 100644
--- a/third_party/highway/README.chromium
+++ b/third_party/highway/README.chromium
@@ -1,4 +1,4 @@
-Name: Descriptive name of the package
+Name: Highway: C++ library for SIMD
 Short Name: highway
 URL: https://github.com/google/highway
 Version: 0.11.x
diff --git a/third_party/usrsctp/README.chromium b/third_party/usrsctp/README.chromium
index e30db20..cf4b05b 100644
--- a/third_party/usrsctp/README.chromium
+++ b/third_party/usrsctp/README.chromium
@@ -2,8 +2,8 @@
 URL: http://github.com/sctplab/usrsctp
 Version: 0
 CPEPrefix: cpe:/a:usrsctp_project:usrsctp:2019-12-20
-Date: Jan 5, 2021
-Revision: 4191ca1784d8774dbf62d48ab9426c7311a91bc5
+Date: Apr 6, 2021
+Revision: 70d42ae95a1de83bd317c8cc9503f894671d1392
 License: New BSD
 License File: LICENSE
 Security Critical: yes
diff --git a/tools/memory/partition_allocator/OWNERS b/tools/memory/partition_allocator/OWNERS
new file mode 100644
index 0000000..bb390d8c
--- /dev/null
+++ b/tools/memory/partition_allocator/OWNERS
@@ -0,0 +1,2 @@
+lizeb@chromium.org
+bartekn@chromium.org
diff --git a/tools/memory/partition_allocator/profile_allocations.py b/tools/memory/partition_allocator/profile_allocations.py
new file mode 100755
index 0000000..dffd3137
--- /dev/null
+++ b/tools/memory/partition_allocator/profile_allocations.py
@@ -0,0 +1,182 @@
+#!/usr/bin/python3
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""Parses allocation profiles from a trace and graphs the results."""
+
+import argparse
+import gzip
+import json
+import logging
+import os
+
+from matplotlib import pylab as plt
+import numpy as np
+
+
+def _LoadTrace(filename: str) -> dict:
+  """Loads a JSON trace, gzipped or not.
+
+  Args:
+    filename: Filename, gzipped or not.
+
+  Returns:
+    A dictionary with the trace content.
+  """
+  try:
+    f = None
+    if filename.endswith('.gz'):
+      f = gzip.open(filename, 'r')
+    else:
+      f = open(filename, 'r')
+    return json.load(f)
+  finally:
+    if f is not None:
+      f.close()
+
+
+def _ParseTrace(trace: dict) -> dict:
+  """Parses a trace, and returns thread cache stats.
+
+  Args:
+    trace: As returned by _LoadTrace()
+
+  Returns:
+    {pid  -> {'name': str, 'labels': str, 'data': np.array}.
+    Where the data array contains 'size' and 'count' columns.
+  """
+  events = trace['traceEvents']
+  memory_infra_events = [
+      e for e in events if e['cat'] == 'disabled-by-default-memory-infra'
+  ]
+  dumps = [
+      e for e in memory_infra_events
+      if e['name'] == 'periodic_interval' and e['args']['dumps']
+      ['level_of_detail'] == 'detailed' and 'allocators' in e['args']['dumps']
+  ]
+
+  # Process names and labels.
+  pid_to_name = {}
+  pid_to_labels = {}
+
+  metadata_events = [
+      e for e in trace['traceEvents'] if e['cat'] == '__metadata'
+  ]
+
+  process_name_events = [
+      e for e in metadata_events if e['name'] == 'process_name'
+  ]
+  for e in process_name_events:
+    pid_to_name[e['pid']] = e['args']['name']
+
+  process_labels_events = [
+      e for e in metadata_events if e['name'] == 'process_labels'
+  ]
+  for e in process_labels_events:
+    pid_to_labels[e['pid']] = e['args']['labels']
+
+  result = {}
+  for dump in dumps:
+    pid = dump['pid']
+    allocators = dump['args']['dumps']['allocators']
+
+    # The browser process also has global dumps, we do not care about these.
+    if 'global' in allocators:
+      continue
+
+    result[pid] = {
+        'name': pid_to_name[pid],
+        'labels': pid_to_labels.get(pid, '')
+    }
+    size_counts = []
+    for allocator in allocators:
+      if 'malloc/thread_cache/buckets_alloc/' not in allocator:
+        continue
+      size = int(allocator[allocator.rindex('/') + 1:])
+      count = int(allocators[allocator]['attrs']['count']['value'], 16)
+      size_counts.append((size, count))
+      size_counts.sort()
+      result[pid]['data'] = np.array(size_counts,
+                                     dtype=[('size', np.int),
+                                            ('count', np.int)])
+
+  return result
+
+
+def _PlotProcess(all_data: dict, pid: int, output_prefix: str):
+  """Represents the allocation size distribution.
+
+  Args:
+    all_data: As returned by _ParseTrace().
+    pid: PID to plot the data for.
+    output_prefix: Prefix of the output file.
+  """
+  data = all_data[pid]
+  logging.info('Plotting data for PID %d' % pid)
+
+  # Allocations vs size.
+  plt.figure(figsize=(16, 8))
+  plt.title('Allocation count vs Size - %s - %s' %
+            (data['name'], data['labels']))
+  plt.stem(data['data']['size'], data['data']['count'])
+  plt.xscale('log')
+  plt.yscale('log')
+  plt.xlabel('Size (log)')
+  plt.ylabel('Allocations (log)')
+  plt.savefig('%s_%d_count.png' % (output_prefix, pid), bbox_inches='tight')
+
+  # CDF.
+  plt.figure(figsize=(16, 8))
+  plt.title('CDF of allocation size - %s - %s' % (data['name'], data['labels']))
+  cdf = np.cumsum(100. * data['data']['count']) / np.sum(data['data']['count'])
+
+  for value in [512, 1024, 2048, 4096, 8192]:
+    index = np.where(data['data']['size'] == value)[0]
+    cdf_value = cdf[index]
+    plt.axvline(x=value, ymin=0, ymax=cdf_value / 100., color='lightgrey')
+
+  plt.step(data['data']['size'], cdf, color='black', where='post')
+  plt.ylim(ymin=0, ymax=100)
+  plt.xlim(xmin=10, xmax=1e6)
+  plt.xscale('log')
+  plt.xlabel('Size (log)')
+  plt.ylabel('CDF (%)')
+  plt.savefig('%s_%d_cdf.png' % (output_prefix, pid),
+              bbox_inches='tight',
+              dpi=300)
+
+
+def _CreateArgumentParser():
+  parser = argparse.ArgumentParser()
+  parser.add_argument(
+      '--trace',
+      type=str,
+      required=True,
+      help='Path to a trace.json[.gz] with memory-infra enabled.')
+  parser.add_argument('--output-dir',
+                      type=str,
+                      required=True,
+                      help='Output directory for graphs.')
+  return parser
+
+
+def main():
+  logging.basicConfig(level=logging.INFO)
+  parser = _CreateArgumentParser()
+  args = parser.parse_args()
+
+  logging.info('Loading the trace')
+  trace = _LoadTrace(args.trace)
+
+  logging.info('Parsing the trace')
+  stats_per_process = _ParseTrace(trace)
+
+  logging.info('Plotting the results')
+  for pid in stats_per_process:
+    if 'data' in stats_per_process[pid]:
+      _PlotProcess(stats_per_process, pid,
+                   os.path.join(args.output_dir, 'result'))
+
+
+if __name__ == '__main__':
+  main()
diff --git a/tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS b/tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS
index ae9aabaf..bcd419b 100644
--- a/tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS
+++ b/tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS
@@ -6,10 +6,12 @@
 csharrison@chromium.org
 cthomp@chromium.org
 dschinazi@chromium.org
+harrisonsean@chromium.org
 javierrobles@chromium.org
 mlippautz@chromium.org
 sebmarchand@chromium.org
 mthiesse@chromium.org
+rayankans@chromium.org
 schenney@chromium.org
 sophiechang@chromium.org
 tbansal@chromium.org
diff --git a/tools/metrics/histograms/histograms_xml/background/OWNERS b/tools/metrics/histograms/histograms_xml/background/OWNERS
new file mode 100644
index 0000000..3249a7e3
--- /dev/null
+++ b/tools/metrics/histograms/histograms_xml/background/OWNERS
@@ -0,0 +1,5 @@
+per-file OWNERS=file://tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS
+
+# Prefer sending CLs to the owners listed below.
+# Use chromium-metrics-reviews@google.com as a backup.
+rayankans@chromium.org
diff --git a/tools/metrics/histograms/histograms_xml/blink/histograms.xml b/tools/metrics/histograms/histograms_xml/blink/histograms.xml
index 8275aaf..68bb5c7 100644
--- a/tools/metrics/histograms/histograms_xml/blink/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/blink/histograms.xml
@@ -1118,6 +1118,34 @@
   </summary>
 </histogram>
 
+<histogram name="Blink.HTMLParsing.ChunkCount2" units="chunks"
+    expires_after="2021-10-04">
+  <owner>schenney@chromium.org</owner>
+  <owner>dom-dev@chromium.org</owner>
+  <summary>
+    The number of chunks parsed while loading a page. Each chunk represents a
+    piece of the HTML content that can be loaded without blocking or yielding.
+    This version is for Forced Synchronous HTML Parsing.
+
+    This histogram does not record metrics on machines with low-resolution
+    clocks.
+  </summary>
+</histogram>
+
+<histogram name="Blink.HTMLParsing.InputCharacterCount" units="characters"
+    expires_after="2021-10-04">
+  <owner>schenney@chromium.org</owner>
+  <owner>dom-dev@chromium.org</owner>
+  <summary>
+    The number of characters processed while parsing a document during page
+    load. This is computed as the sum of all the characters appended to the
+    input string sequence for the parser.
+
+    This histogram does not record metrics on machines with low-resolution
+    clocks.
+  </summary>
+</histogram>
+
 <histogram name="Blink.HTMLParsing.ParsingTimeMax" units="microseconds"
     expires_after="2021-10-04">
   <owner>schenney@chromium.org</owner>
@@ -1131,6 +1159,20 @@
   </summary>
 </histogram>
 
+<histogram name="Blink.HTMLParsing.ParsingTimeMax2" units="microseconds"
+    expires_after="2021-10-04">
+  <owner>schenney@chromium.org</owner>
+  <owner>dom-dev@chromium.org</owner>
+  <summary>
+    While parsing a page, the maximum time used to parse a single chunk before
+    being blocked, yielding or completing, in microseconds. This version is for
+    Forced Synchronous HTML Parsing.
+
+    This histogram does not record metrics on machines with low-resolution
+    clocks.
+  </summary>
+</histogram>
+
 <histogram name="Blink.HTMLParsing.ParsingTimeMin" units="microseconds"
     expires_after="2021-10-04">
   <owner>schenney@chromium.org</owner>
@@ -1144,6 +1186,20 @@
   </summary>
 </histogram>
 
+<histogram name="Blink.HTMLParsing.ParsingTimeMin2" units="microseconds"
+    expires_after="2021-10-04">
+  <owner>schenney@chromium.org</owner>
+  <owner>dom-dev@chromium.org</owner>
+  <summary>
+    While parsing a page, the minimum time used to parse a single chunk before
+    being blocked, yielding or completing, in microseconds. This version is for
+    Forced Synchronous HTML Parsing.
+
+    This histogram does not record metrics on machines with low-resolution
+    clocks.
+  </summary>
+</histogram>
+
 <histogram name="Blink.HTMLParsing.ParsingTimeTotal" units="microseconds"
     expires_after="2021-10-04">
   <owner>schenney@chromium.org</owner>
@@ -1157,12 +1213,43 @@
   </summary>
 </histogram>
 
+<histogram name="Blink.HTMLParsing.ParsingTimeTotal2" units="microseconds"
+    expires_after="2021-10-04">
+  <owner>schenney@chromium.org</owner>
+  <owner>dom-dev@chromium.org</owner>
+  <summary>
+    While parsing a page, the total amount of time spent in the
+    HTMLDocumentParser performing parsing, in microseconds. This version is for
+    Forced Synchronous HTML Parsing.
+
+    This histogram does not record metrics on machines with low-resolution
+    clocks.
+  </summary>
+</histogram>
+
 <histogram name="Blink.HTMLParsing.TokensParsedAverage" units="tokens"
     expires_after="2021-10-04">
   <owner>schenney@chromium.org</owner>
   <owner>dom-dev@chromium.org</owner>
   <summary>
     While parsing a page, the average number of tokens parsed across all chunks.
+
+    This histogram does not record metrics on machines with low-resolution
+    clocks.
+  </summary>
+</histogram>
+
+<histogram name="Blink.HTMLParsing.TokensParsedAverage2" units="tokens"
+    expires_after="2021-10-04">
+  <owner>schenney@chromium.org</owner>
+  <owner>dom-dev@chromium.org</owner>
+  <summary>
+    While parsing a page, the average number of tokens parsed across all chunks.
+    This version is for Forced Synchronous HTML Parsing. This version is for
+    Forced Synchronous HTML Parsing.
+
+    This histogram does not record metrics on machines with low-resolution
+    clocks.
   </summary>
 </histogram>
 
@@ -1172,6 +1259,22 @@
   <owner>dom-dev@chromium.org</owner>
   <summary>
     While parsing a page, the maximum number of tokens parsed as a chunk.
+
+    This histogram does not record metrics on machines with low-resolution
+    clocks.
+  </summary>
+</histogram>
+
+<histogram name="Blink.HTMLParsing.TokensParsedMax2" units="tokens"
+    expires_after="2021-10-04">
+  <owner>schenney@chromium.org</owner>
+  <owner>dom-dev@chromium.org</owner>
+  <summary>
+    While parsing a page, the maximum number of tokens parsed as a chunk. This
+    version is for Forced Synchronous HTML Parsing.
+
+    This histogram does not record metrics on machines with low-resolution
+    clocks.
   </summary>
 </histogram>
 
@@ -1181,6 +1284,22 @@
   <owner>dom-dev@chromium.org</owner>
   <summary>
     While parsing a page, the minimum number of tokens parsed as a chunk.
+
+    This histogram does not record metrics on machines with low-resolution
+    clocks.
+  </summary>
+</histogram>
+
+<histogram name="Blink.HTMLParsing.TokensParsedMin2" units="tokens"
+    expires_after="2021-10-04">
+  <owner>schenney@chromium.org</owner>
+  <owner>dom-dev@chromium.org</owner>
+  <summary>
+    While parsing a page, the minimum number of tokens parsed as a chunk. This
+    version is for Forced Synchronous HTML Parsing.
+
+    This histogram does not record metrics on machines with low-resolution
+    clocks.
   </summary>
 </histogram>
 
@@ -1197,6 +1316,20 @@
   </summary>
 </histogram>
 
+<histogram name="Blink.HTMLParsing.YieldedTimeAverage2" units="microseconds"
+    expires_after="2021-10-04">
+  <owner>schenney@chromium.org</owner>
+  <owner>dom-dev@chromium.org</owner>
+  <summary>
+    While parsing a page, the average time between parsing of two chunks, in
+    microseconds. Will not be recorded if only one chunk was parsed. This
+    version is for Forced Synchronous HTML Parsing.
+
+    This histogram does not record metrics on machines with low-resolution
+    clocks.
+  </summary>
+</histogram>
+
 <histogram name="Blink.HTMLParsing.YieldedTimeMax" units="microseconds"
     expires_after="2021-10-04">
   <owner>schenney@chromium.org</owner>
@@ -1210,6 +1343,20 @@
   </summary>
 </histogram>
 
+<histogram name="Blink.HTMLParsing.YieldedTimeMax2" units="microseconds"
+    expires_after="2021-10-04">
+  <owner>schenney@chromium.org</owner>
+  <owner>dom-dev@chromium.org</owner>
+  <summary>
+    While parsing a page, the maximum time between parsing of two chunks, in
+    microseconds. Will not be recorded if only one chunk was parsed. This
+    version is for Forced Synchronous HTML Parsing.
+
+    This histogram does not record metrics on machines with low-resolution
+    clocks.
+  </summary>
+</histogram>
+
 <histogram name="Blink.HTMLParsing.YieldedTimeMin" units="microseconds"
     expires_after="2021-10-04">
   <owner>schenney@chromium.org</owner>
@@ -1223,6 +1370,20 @@
   </summary>
 </histogram>
 
+<histogram name="Blink.HTMLParsing.YieldedTimeMin2" units="microseconds"
+    expires_after="2021-10-04">
+  <owner>schenney@chromium.org</owner>
+  <owner>dom-dev@chromium.org</owner>
+  <summary>
+    While parsing a page, the minimum time between parsing of two chunks, in
+    microseconds. Will not be recorded if only one chunk was parsed. This
+    version is for Forced Synchronous HTML Parsing.
+
+    This histogram does not record metrics on machines with low-resolution
+    clocks.
+  </summary>
+</histogram>
+
 <histogram name="Blink.ImageDecoders.IncrementalDecodeNeeded"
     enum="IncrementalDecodeNeeded" expires_after="2021-09-05">
   <owner>mbarowsky@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/content/OWNERS b/tools/metrics/histograms/histograms_xml/content/OWNERS
new file mode 100644
index 0000000..3249a7e3
--- /dev/null
+++ b/tools/metrics/histograms/histograms_xml/content/OWNERS
@@ -0,0 +1,5 @@
+per-file OWNERS=file://tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS
+
+# Prefer sending CLs to the owners listed below.
+# Use chromium-metrics-reviews@google.com as a backup.
+rayankans@chromium.org
diff --git a/tools/metrics/histograms/histograms_xml/settings/OWNERS b/tools/metrics/histograms/histograms_xml/settings/OWNERS
new file mode 100644
index 0000000..b8222e5
--- /dev/null
+++ b/tools/metrics/histograms/histograms_xml/settings/OWNERS
@@ -0,0 +1,5 @@
+per-file OWNERS=file://tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS
+
+# Prefer sending CLs to the owners listed below.
+# Use chromium-metrics-reviews@google.com as a backup.
+harrisonsean@chromium.org
diff --git a/tools/metrics/histograms/histograms_xml/sharing/histograms.xml b/tools/metrics/histograms/histograms_xml/sharing/histograms.xml
index 0491b0a..62a740a 100644
--- a/tools/metrics/histograms/histograms_xml/sharing/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/sharing/histograms.xml
@@ -79,6 +79,17 @@
   </summary>
 </histogram>
 
+<histogram name="Sharing.ClickToCallPhoneNumberValid" units="BooleanValid"
+    expires_after="M95">
+  <owner>knollr@chromium.org</owner>
+  <owner>peter@chromium.org</owner>
+  <summary>
+    Records if a received phone number is valid. Invalid numbers might suggest
+    that the remote device tried to send malicious data. Logged when handling a
+    Click to Call message on Android received from a Chrome desktop instance.
+  </summary>
+</histogram>
+
 <histogram name="Sharing.ClickToCallSelectedAppIndex" units="index"
     expires_after="2021-08-22">
 <!-- Name completed by histogram_suffixes name="SharingClickToCallUi" -->
diff --git a/tools/metrics/histograms/histograms_xml/web_apk/OWNERS b/tools/metrics/histograms/histograms_xml/web_apk/OWNERS
new file mode 100644
index 0000000..3249a7e3
--- /dev/null
+++ b/tools/metrics/histograms/histograms_xml/web_apk/OWNERS
@@ -0,0 +1,5 @@
+per-file OWNERS=file://tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS
+
+# Prefer sending CLs to the owners listed below.
+# Use chromium-metrics-reviews@google.com as a backup.
+rayankans@chromium.org
diff --git a/tools/metrics/ukm/ukm.xml b/tools/metrics/ukm/ukm.xml
index 99e99d2..ed339154 100644
--- a/tools/metrics/ukm/ukm.xml
+++ b/tools/metrics/ukm/ukm.xml
@@ -7060,6 +7060,14 @@
       BackForwardCache::DisableForRenderFrameHost calls.
     </summary>
   </metric>
+  <metric name="BackForwardCache.IsAmpPage" enum="Boolean">
+    <summary>
+      Boolean whether the now-restored page uses AMP (see https://amp.dev). If
+      the page wasn't restored from the back-forward cache, this metric will not
+      be populated. This metric will never be true when
+      BackForwardCache.IsServedFromBackForwardCache is false.
+    </summary>
+  </metric>
   <metric name="BackForwardCache.IsServedFromBackForwardCache">
     <summary>
       Boolean whether the page was restored from the back-forward cache or not.
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index a0cd681..dd17551 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": "79cc7b45b9f8ef15a9cf2f3d70a99fd8d4e8362d",
-            "remote_path": "perfetto_binaries/trace_processor_shell/win/e122069ff360b18b0d2a34e8286cc610892eaa71/trace_processor_shell.exe"
+            "hash": "ef6eb7e91f84d4a394823f3346d3d93f606ae132",
+            "remote_path": "perfetto_binaries/trace_processor_shell/win/44c468ffa7093e54020bf6cb5ecdd1e558715e9b/trace_processor_shell.exe"
         },
         "mac": {
-            "hash": "9fd9ee5b19e2fe3195c78df2571dfb073514f0bb",
-            "remote_path": "perfetto_binaries/trace_processor_shell/mac/e122069ff360b18b0d2a34e8286cc610892eaa71/trace_processor_shell"
+            "hash": "80ce85e4ff8f0b99d3ec6c9baf4bdd2345bd697a",
+            "remote_path": "perfetto_binaries/trace_processor_shell/mac/8430ec6a509d54a64ce9924a237920332abe2f73/trace_processor_shell"
         },
         "linux": {
-            "hash": "32b316e2cc31f3ff4f3f9453643cf96cbd9030e9",
-            "remote_path": "perfetto_binaries/trace_processor_shell/linux/e122069ff360b18b0d2a34e8286cc610892eaa71/trace_processor_shell"
+            "hash": "011c1fb22f8830dbb50fb88b0f3a7c3cc9e0ed48",
+            "remote_path": "perfetto_binaries/trace_processor_shell/linux/44c468ffa7093e54020bf6cb5ecdd1e558715e9b/trace_processor_shell"
         }
     },
     "power_profile.sql": {
diff --git a/tools/perf/core/tbmv3/metrics/power_rails_metric.proto b/tools/perf/core/tbmv3/metrics/power_rails_metric.proto
index 44faf1f..ffe61c8 100644
--- a/tools/perf/core/tbmv3/metrics/power_rails_metric.proto
+++ b/tools/perf/core/tbmv3/metrics/power_rails_metric.proto
@@ -10,16 +10,21 @@
 // different sensors. See go/power-mobile-benchmark for the list of
 // supported devices.
 // Output values are in Joules (Watt-seconds).
-
+//
+// Next id: 26.
 message PowerRailsMetric {
   // story_* values - power consumption over the duration of the story run.
   // This doesn't include Chrome starting and loading a page.
   optional float story_total_j = 1 [(unit) = "J_smallerIsBetter"];
   optional float story_cpu_big_core_cluster_j = 2
       [(unit) = "J_smallerIsBetter"];
+  optional float story_cpu_mid_core_cluster_j = 24
+      [(unit) = "J_smallerIsBetter"];
   optional float story_cpu_little_core_cluster_j = 3
       [(unit) = "J_smallerIsBetter"];
   optional float story_soc_j = 4 [(unit) = "J_smallerIsBetter"];
+  optional float story_mem_j = 20 [(unit) = "J_smallerIsBetter"];
+  optional float story_gpu_j = 21 [(unit) = "J_smallerIsBetter"];
   optional float story_cellular_j = 5 [(unit) = "J_smallerIsBetter"];
   optional float story_wifi_j = 6 [(unit) = "J_smallerIsBetter"];
   optional float story_display_j = 7 [(unit) = "J_smallerIsBetter"];
@@ -31,9 +36,13 @@
   optional float interaction_total_j = 11 [(unit) = "J_smallerIsBetter"];
   optional float interaction_cpu_big_core_cluster_j = 12
       [(unit) = "J_smallerIsBetter"];
+  optional float interaction_cpu_mid_core_cluster_j = 25
+      [(unit) = "J_smallerIsBetter"];
   optional float interaction_cpu_little_core_cluster_j = 13
       [(unit) = "J_smallerIsBetter"];
   optional float interaction_soc_j = 14 [(unit) = "J_smallerIsBetter"];
+  optional float interaction_mem_j = 22 [(unit) = "J_smallerIsBetter"];
+  optional float interaction_gpu_j = 23 [(unit) = "J_smallerIsBetter"];
   optional float interaction_cellular_j = 15 [(unit) = "J_smallerIsBetter"];
   optional float interaction_wifi_j = 16 [(unit) = "J_smallerIsBetter"];
   optional float interaction_display_j = 17 [(unit) = "J_smallerIsBetter"];
diff --git a/tools/perf/core/tbmv3/metrics/power_rails_metric.sql b/tools/perf/core/tbmv3/metrics/power_rails_metric.sql
index b3fc61ce..161d6e3 100644
--- a/tools/perf/core/tbmv3/metrics/power_rails_metric.sql
+++ b/tools/perf/core/tbmv3/metrics/power_rails_metric.sql
@@ -54,10 +54,16 @@
       (SELECT sum(drain_j) FROM story_drain),
   'story_cpu_big_core_cluster_j',
       (SELECT drain_j FROM story_drain WHERE subsystem = 'cpu_big'),
+  'story_cpu_mid_core_cluster_j',
+      (SELECT drain_j FROM story_drain WHERE subsystem = 'cpu_mid'),
   'story_cpu_little_core_cluster_j',
       (SELECT drain_j FROM story_drain WHERE subsystem = 'cpu_little'),
   'story_soc_j',
       (SELECT drain_j FROM story_drain WHERE subsystem = 'soc'),
+  'story_mem_j',
+      (SELECT drain_j FROM story_drain WHERE subsystem = 'mem'),
+  'story_gpu_j',
+      (SELECT drain_j FROM story_drain WHERE subsystem = 'gpu'),
   'story_cellular_j',
       (SELECT drain_j FROM story_drain WHERE subsystem = 'cellular'),
   'story_wifi_j',
@@ -66,17 +72,23 @@
       (SELECT drain_j FROM story_drain WHERE subsystem = 'display'),
   'story_cpu_and_system_j',
       (SELECT sum(drain_j) FROM story_drain WHERE
-          subsystem IN ('cpu_big', 'cpu_little', 'soc')),
+          subsystem IN ('cpu_big', 'cpu_mid', 'cpu_little', 'soc')),
   'story_duration_ms',
       (SELECT dur_ms FROM story_drain WHERE subsystem = 'display'),
   'interaction_total_j',
       (SELECT sum(drain_j) FROM interaction_drain),
   'interaction_cpu_big_core_cluster_j',
       (SELECT drain_j FROM interaction_drain WHERE subsystem = 'cpu_big'),
+  'interaction_cpu_mid_core_cluster_j',
+      (SELECT drain_j FROM interaction_drain WHERE subsystem = 'cpu_mid'),
   'interaction_cpu_little_core_cluster_j',
       (SELECT drain_j FROM interaction_drain WHERE subsystem = 'cpu_little'),
   'interaction_soc_j',
       (SELECT drain_j FROM interaction_drain WHERE subsystem = 'soc'),
+  'interaction_mem_j',
+      (SELECT drain_j FROM interaction_drain WHERE subsystem = 'mem'),
+  'interaction_gpu_j',
+      (SELECT drain_j FROM interaction_drain WHERE subsystem = 'gpu'),
   'interaction_cellular_j',
       (SELECT drain_j FROM interaction_drain WHERE subsystem = 'cellular'),
   'interaction_wifi_j',
@@ -85,7 +97,7 @@
       (SELECT drain_j FROM interaction_drain WHERE subsystem = 'display'),
   'interaction_cpu_and_system_j',
       (SELECT sum(drain_j) FROM interaction_drain WHERE
-          subsystem IN ('cpu_big', 'cpu_little', 'soc')),
+          subsystem IN ('cpu_big', 'cpu_mid', 'cpu_little', 'soc')),
   'interaction_duration_ms',
       (SELECT dur_ms FROM interaction_drain WHERE subsystem = 'display')
 );
diff --git a/ui/accessibility/ax_node.cc b/ui/accessibility/ax_node.cc
index 789fff5..4f6ca79 100644
--- a/ui/accessibility/ax_node.cc
+++ b/ui/accessibility/ax_node.cc
@@ -1507,7 +1507,6 @@
     case ax::mojom::Role::kGraphicsSymbol:
     case ax::mojom::Role::kMeter:
     case ax::mojom::Role::kScrollBar:
-    case ax::mojom::Role::kSpinButton:
     case ax::mojom::Role::kSlider:
     case ax::mojom::Role::kSplitter:
     case ax::mojom::Role::kProgressIndicator:
diff --git a/ui/accessibility/platform/ax_platform_node_win.cc b/ui/accessibility/platform/ax_platform_node_win.cc
index d3c6d19..5c9a74f8 100644
--- a/ui/accessibility/platform/ax_platform_node_win.cc
+++ b/ui/accessibility/platform/ax_platform_node_win.cc
@@ -1851,7 +1851,13 @@
 IFACEMETHODIMP AXPlatformNodeWin::get_Column(int* result) {
   WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GRIDITEM_GET_COLUMN);
   UIA_VALIDATE_CALL_1_ARG(result);
-  base::Optional<int> column = GetTableColumn();
+
+  base::Optional<int> column;
+  if (HasIntAttribute(ax::mojom::IntAttribute::kAriaCellColumnIndex))
+    column = GetDelegate()->GetTableCellAriaColIndex();
+  else
+    column = GetTableColumn();
+
   if (!column)
     return E_FAIL;
   *result = *column;
@@ -1886,7 +1892,13 @@
 IFACEMETHODIMP AXPlatformNodeWin::get_Row(int* result) {
   WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GRIDITEM_GET_ROW);
   UIA_VALIDATE_CALL_1_ARG(result);
-  base::Optional<int> row = GetTableRow();
+
+  base::Optional<int> row;
+  if (HasIntAttribute(ax::mojom::IntAttribute::kAriaCellRowIndex))
+    row = GetDelegate()->GetTableCellAriaRowIndex();
+  else
+    row = GetTableRow();
+
   if (!row)
     return E_FAIL;
   *result = *row;
diff --git a/ui/chromeos/translations/ui_chromeos_strings_as.xtb b/ui/chromeos/translations/ui_chromeos_strings_as.xtb
index cb7e8c8c..d4ce9e3 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_as.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_as.xtb
@@ -41,6 +41,7 @@
 <translation id="1395262318152388157">ছীক স্লাইডাৰ</translation>
 <translation id="1404323374378969387">ন’ৰৱেজিয়ান</translation>
 <translation id="1430915738399379752">প্ৰিণ্ট কৰক</translation>
+<translation id="1433628812591023318">Parallels Desktopত ফাইল ৰাখিবলৈ, ফাইলটো Windows ফাইললৈ নিবই লাগিব।</translation>
 <translation id="1435838927755162558">Parallels Desktopৰ জৰিয়তে ফ’ল্ডাৰটো শ্বেয়াৰ কৰক</translation>
 <translation id="1467432559032391204">বাওঁফালে</translation>
 <translation id="1471718551822868769">শ্ল’ভাক</translation>
@@ -606,6 +607,7 @@
 <translation id="7417453074306512035">ইথিঅ’পিক কীব’র্ড</translation>
 <translation id="7417705661718309329">Google মেপ</translation>
 <translation id="7460898608667578234">ইউক্ৰেনিয়ান</translation>
+<translation id="7486315294984620427">Parallels Desktopত ফাইল টানি আনি এৰিবলৈ, ফাইলটো Windows ফাইললৈ প্ৰতিলিপি কৰিবই লাগিব।</translation>
 <translation id="7489215562877293245"><ph name="FILE_COUNT" /> বিচাৰি পোৱা গৈছে
     <ph name="LINE_BREAK1" />
     <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />ত বেক আপ কৰিবলৈ সাজু আছে</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
index 74ef992d..c437ec0 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
@@ -41,6 +41,7 @@
 <translation id="1395262318152388157">স্লাইডার খুঁজুন</translation>
 <translation id="1404323374378969387">নরওয়েজিয়ান</translation>
 <translation id="1430915738399379752">প্রিন্ট</translation>
+<translation id="1433628812591023318">Parallels Desktop-এ ফাইল রাখতে হলে ফাইলকে অবশ্যই Windows ফাইলের ফোল্ডারে সরাতে হবে।</translation>
 <translation id="1435838927755162558">Parallels Desktop-এর সাথে ফোল্ডার শেয়ার করুন</translation>
 <translation id="1467432559032391204">বামে</translation>
 <translation id="1471718551822868769">স্লোভাক</translation>
@@ -610,6 +611,7 @@
 <translation id="7417453074306512035">ইথিওপিক কীবোর্ড</translation>
 <translation id="7417705661718309329">Google ম্যাপ</translation>
 <translation id="7460898608667578234">ইউক্রেনীয়</translation>
+<translation id="7486315294984620427">Parallels Desktop-এ ফাইল রাখতে হলে ফাইলকে অবশ্যই Windows ফাইলের ফোল্ডারে কপি করতে হবে।</translation>
 <translation id="7489215562877293245"><ph name="FILE_COUNT" />টি পাওয়া গেছে
     <ph name="LINE_BREAK1" />
     <ph name="BEGIN_LINK" />Google ড্রাইভ<ph name="END_LINK" />-এ ব্যাক-আপ করার জন্য প্রস্তুত</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_de.xtb b/ui/chromeos/translations/ui_chromeos_strings_de.xtb
index b15b2835..9ed91403 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_de.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_de.xtb
@@ -41,6 +41,7 @@
 <translation id="1395262318152388157">Schieberegler für die Suche</translation>
 <translation id="1404323374378969387">Norwegisch</translation>
 <translation id="1430915738399379752">Drucken</translation>
+<translation id="1433628812591023318">Um Dateien in Parallels Desktop per Drag-and-drop abzulegen, muss die Datei in „Windows-Dateien“ verschoben werden.</translation>
 <translation id="1435838927755162558">Ordner für Parallels Desktop freigeben</translation>
 <translation id="1467432559032391204">Links</translation>
 <translation id="1471718551822868769">Slowakisch</translation>
@@ -611,6 +612,7 @@
 <translation id="7417453074306512035">Äthiopische Tastatur</translation>
 <translation id="7417705661718309329">Google-Karte</translation>
 <translation id="7460898608667578234">Ukrainisch</translation>
+<translation id="7486315294984620427">Um Dateien in Parallels Desktop per Drag-and-drop abzulegen, muss die Datei in „Windows-Dateien“ kopiert werden.</translation>
 <translation id="7489215562877293245"><ph name="FILE_COUNT" /> gefunden
     <ph name="LINE_BREAK1" />
     Bereit für die Sicherung auf <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
index 75f1fcb..f194b23d 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
@@ -41,6 +41,7 @@
 <translation id="1395262318152388157">Barre de recherche</translation>
 <translation id="1404323374378969387">Norvégien</translation>
 <translation id="1430915738399379752">Imprimer</translation>
+<translation id="1433628812591023318">Pour déposer des fichiers dans Parallels Desktop, vous devez déplacer le fichier dans le dossier "Fichiers Windows".</translation>
 <translation id="1435838927755162558">Partager le dossier avec Parallels Desktop</translation>
 <translation id="1467432559032391204">À gauche</translation>
 <translation id="1471718551822868769">Slovaque</translation>
@@ -611,6 +612,7 @@
 <translation id="7417453074306512035">Clavier éthiopien</translation>
 <translation id="7417705661718309329">Carte Google</translation>
 <translation id="7460898608667578234">Ukrainien</translation>
+<translation id="7486315294984620427">Pour déposer des fichiers dans Parallels Desktop, vous devez copier le fichier dans le dossier "Fichiers Windows".</translation>
 <translation id="7489215562877293245"><ph name="FILE_COUNT" /> trouvées
     <ph name="LINE_BREAK1" />
     Prêt à sauvegarder sur <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
index 1863f11..d0e62fa 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
@@ -41,6 +41,7 @@
 <translation id="1395262318152388157">સ્લાઇડર શોધો</translation>
 <translation id="1404323374378969387">નૉર્વેજીયન</translation>
 <translation id="1430915738399379752">પ્રિન્ટ</translation>
+<translation id="1433628812591023318">ડેસ્કટૉપની સમાંતર ફાઇલો છોડવા માટે, ફાઇલને Windows ફાઇલોમાં ખસેડવી આવશ્યક છે.</translation>
 <translation id="1435838927755162558">Parallels ડેસ્કટૉપ સાથે ફોલ્ડર શેર કરો</translation>
 <translation id="1467432559032391204">ડાબું</translation>
 <translation id="1471718551822868769">સ્લોવાક</translation>
@@ -611,6 +612,7 @@
 <translation id="7417453074306512035">ઇથિઓપિક કીબોર્ડ</translation>
 <translation id="7417705661718309329">Google નકશો</translation>
 <translation id="7460898608667578234">યુક્રેનિયન</translation>
+<translation id="7486315294984620427">ડેસ્કટૉપની સમાંતર ફાઇલો છોડવા માટે, ફાઇલને Windows ફાઇલોમાં કૉપિ કરવી આવશ્યક છે.</translation>
 <translation id="7489215562877293245"><ph name="FILE_COUNT" /> મળ્યા
     <ph name="LINE_BREAK1" />
     <ph name="BEGIN_LINK" />Google ડ્રાઇવ<ph name="END_LINK" /> પર બૅકઅપ માટે તૈયાર</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
index 428d0a90..516f7a6e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
@@ -41,6 +41,7 @@
 <translation id="1395262318152388157">स्लायाडर शोधा</translation>
 <translation id="1404323374378969387">नॉर्वेजियन</translation>
 <translation id="1430915738399379752">प्रिंट</translation>
+<translation id="1433628812591023318">Parallels Desktop मध्ये फाइल ड्रॉप करण्यासाठी, Windows च्या फाइलमध्ये फाइल हलवणे आवश्यक आहे.</translation>
 <translation id="1435838927755162558">Parallels Desktop सोबत फोल्डर शेअर करा</translation>
 <translation id="1467432559032391204">डावे</translation>
 <translation id="1471718551822868769">स्लोव्हाक</translation>
@@ -611,6 +612,7 @@
 <translation id="7417453074306512035">इथिओपिक कीबोर्ड</translation>
 <translation id="7417705661718309329">Google नकाशा</translation>
 <translation id="7460898608667578234">यूक्रेनियन</translation>
+<translation id="7486315294984620427">Parallels Desktop मध्ये फाइल ड्रॉप करण्यासाठी, Windows च्या फाइलमध्ये फाइल कॉपी करणे आवश्यक आहे.</translation>
 <translation id="7489215562877293245"><ph name="FILE_COUNT" /> आढळले
     <ph name="LINE_BREAK1" />
     <ph name="BEGIN_LINK" />Google ड्राइव्ह<ph name="END_LINK" /> वर बॅकअप करण्यास तयार</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_or.xtb b/ui/chromeos/translations/ui_chromeos_strings_or.xtb
index 767948ac..687fe04 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_or.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_or.xtb
@@ -41,6 +41,7 @@
 <translation id="1395262318152388157">ସୀକ୍ ସ୍ଲାଇଡର୍‍</translation>
 <translation id="1404323374378969387">ନରୱେଜୀୟ</translation>
 <translation id="1430915738399379752">ପ୍ରିଣ୍ଟ କରନ୍ତୁ</translation>
+<translation id="1433628812591023318">Parallels Desktopରେ ଫାଇଲଗୁଡ଼ିକୁ ଡ୍ରପ୍ କରିବା ପାଇଁ ଫାଇଲକୁ Windows ଫାଇଲ୍ ଫୋଲ୍ଡରକୁ ମୁଭ୍ କରିବା ଆବଶ୍ୟକ।</translation>
 <translation id="1435838927755162558">Parallels Desktop ସହ ଫୋଲ୍ଡର ସେୟାର୍ କରନ୍ତୁ</translation>
 <translation id="1467432559032391204">ବାମ</translation>
 <translation id="1471718551822868769">ସ୍ଲୋଭାକ୍</translation>
@@ -605,6 +606,7 @@
 <translation id="7417453074306512035">ଇଥିଓପିକ୍ କୀବୋର୍ଡ</translation>
 <translation id="7417705661718309329">Google ମ୍ୟାପ୍‌</translation>
 <translation id="7460898608667578234">ୟୁକ୍ରାନିଆନ୍</translation>
+<translation id="7486315294984620427">Parallels Desktopରେ ଫାଇଲଗୁଡ଼ିକୁ ଡ୍ରପ୍ କରିବା ପାଇଁ ଫାଇଲକୁ Windows ଫାଇଲ୍ ଫୋଲ୍ଡରରେ କପି କରିବା ଆବଶ୍ୟକ।</translation>
 <translation id="7489215562877293245"><ph name="FILE_COUNT" />ଟି ମିଳିଛି
     <ph name="LINE_BREAK1" />
     <ph name="BEGIN_LINK" />Google ଡ୍ରାଇଭ୍‍<ph name="END_LINK" />ରେ ବ୍ୟାକ୍‌ଅପ୍‌ ପାଇଁ ପ୍ରସ୍ତୁତ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb b/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb
index ed037b5..29ebe25c 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb
@@ -41,7 +41,7 @@
 <translation id="1395262318152388157">Controle deslizante de busca</translation>
 <translation id="1404323374378969387">Norueguês</translation>
 <translation id="1430915738399379752">Imprimir</translation>
-<translation id="1433628812591023318">Para arrastar arquivos até o Parallels Desktop, é necessário primeiro movê-los para os arquivos do Windows.</translation>
+<translation id="1433628812591023318">Para arrastar arquivos até o Parallels Desktop, é necessário primeiro movê-los para a pasta "Arquivos" do Windows.</translation>
 <translation id="1435838927755162558">Compartilhar pasta com o Parallels Desktop</translation>
 <translation id="1467432559032391204">À esquerda</translation>
 <translation id="1471718551822868769">Eslovaco</translation>
@@ -612,7 +612,7 @@
 <translation id="7417453074306512035">Teclado etíope</translation>
 <translation id="7417705661718309329">Mapa do Google</translation>
 <translation id="7460898608667578234">Ucraniano</translation>
-<translation id="7486315294984620427">Para arrastar arquivos até o Parallels Desktop, é necessário primeiro copiá-los para os arquivos do Windows.</translation>
+<translation id="7486315294984620427">Para arrastar arquivos até o Parallels Desktop, é necessário primeiro copiá-los para a pasta "Arquivos" do Windows.</translation>
 <translation id="7489215562877293245">Total de arquivos encontrados: <ph name="FILE_COUNT" />
     <ph name="LINE_BREAK1" />
     Pronto para fazer backup para o <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
index 7f726e3..cd17170 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
@@ -41,6 +41,7 @@
 <translation id="1395262318152388157">தேடுவதற்கான ஸ்லைடர்</translation>
 <translation id="1404323374378969387">நார்வேஜியன்</translation>
 <translation id="1430915738399379752">அச்சிடுக</translation>
+<translation id="1433628812591023318">Parallels Desktopபிற்குள் கோப்புகளை இழுத்து விட, அவற்றை ’Windows கோப்புகள்’ கோப்புறைக்கு நகர்த்த வேண்டும்.</translation>
 <translation id="1435838927755162558">Parallels Desktop மூலம் கோப்புறையைப் பகிருங்கள்</translation>
 <translation id="1467432559032391204">இடது</translation>
 <translation id="1471718551822868769">ஸ்லோவாக்</translation>
@@ -611,6 +612,7 @@
 <translation id="7417453074306512035">எத்தியோபிக் கீபோர்டு</translation>
 <translation id="7417705661718309329">Google Maps</translation>
 <translation id="7460898608667578234">உக்ரைனியன்</translation>
+<translation id="7486315294984620427">Parallels Desktopபிற்குள் கோப்புகளை இழுத்து விட, அவற்றை ’Windows கோப்புகள்’ கோப்புறைக்கு நகலெடுக்க வேண்டும்.</translation>
 <translation id="7489215562877293245"><ph name="FILE_COUNT" /> உள்ளது
     <ph name="LINE_BREAK1" />
     <ph name="BEGIN_LINK" />Google இயக்ககத்திற்குக்<ph name="END_LINK" /> காப்புப் பிரதி எடுக்கத் தயாராக உள்ளது</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ur.xtb b/ui/chromeos/translations/ui_chromeos_strings_ur.xtb
index 6aacec5..14e1def 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ur.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ur.xtb
@@ -41,6 +41,7 @@
 <translation id="1395262318152388157">تلاش کرنے کا سلائیڈر</translation>
 <translation id="1404323374378969387">نارويجين</translation>
 <translation id="1430915738399379752">پرنٹ کریں</translation>
+<translation id="1433628812591023318">‏فائلز کو Parallels Desktop میں ڈراپ کرنے کے لیے، فائل کو Windows کی فائلز میں منتقل کرنا ضروری ہے۔</translation>
 <translation id="1435838927755162558">‏Parallels ڈیسک ٹاپ کے ساتھ فولڈر کا اشتراک کریں</translation>
 <translation id="1467432559032391204">بائیں</translation>
 <translation id="1471718551822868769">سلاواکی</translation>
@@ -610,6 +611,7 @@
 <translation id="7417453074306512035">ایتھوپیائی کی بورڈ</translation>
 <translation id="7417705661718309329">‏Google نقشہ</translation>
 <translation id="7460898608667578234">يُوکرينی</translation>
+<translation id="7486315294984620427">‏فائلز کو Parallels Desktop میں ڈراپ کرنے کے لیے، فائل کو Windows کی فائلز میں کاپی کرنا ضروری ہے۔</translation>
 <translation id="7489215562877293245">‏<ph name="FILE_COUNT" /> ملیں
     <ph name="LINE_BREAK1" />
     <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> پر بیک اپ لینے کیلئے تیار</translation>
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc
index 1cbf8f5..26f483c 100644
--- a/ui/compositor/layer.cc
+++ b/ui/compositor/layer.cc
@@ -232,7 +232,7 @@
     content_layer_->ClearClient();
   cc_layer_->RemoveFromParent();
   if (transfer_release_callback_)
-    transfer_release_callback_->Run(gpu::SyncToken(), false);
+    std::move(transfer_release_callback_).Run(gpu::SyncToken(), false);
 
   ResetSubtreeReflectedLayer();
 }
@@ -299,8 +299,7 @@
     // freed up until the original layer releases it.
     mirror->SetTransferableResource(
         transfer_resource_,
-        viz::SingleReleaseCallback::Create(base::BindOnce(
-            [](const gpu::SyncToken& sync_token, bool is_lost) {})),
+        base::BindOnce([](const gpu::SyncToken& sync_token, bool is_lost) {}),
         frame_size_in_dip_);
   }
 
@@ -927,10 +926,9 @@
   return it != mirrors_.end();
 }
 
-void Layer::SetTransferableResource(
-    const viz::TransferableResource& resource,
-    std::unique_ptr<viz::SingleReleaseCallback> release_callback,
-    gfx::Size texture_size_in_dip) {
+void Layer::SetTransferableResource(const viz::TransferableResource& resource,
+                                    viz::ReleaseCallback release_callback,
+                                    gfx::Size texture_size_in_dip) {
   DCHECK(type_ == LAYER_TEXTURED || type_ == LAYER_SOLID_COLOR);
   DCHECK(!resource.mailbox_holder.mailbox.IsZero());
   DCHECK(release_callback);
@@ -948,7 +946,7 @@
     frame_size_in_dip_ = gfx::Size();
   }
   if (transfer_release_callback_)
-    transfer_release_callback_->Run(gpu::SyncToken(), false);
+    std::move(transfer_release_callback_).Run(gpu::SyncToken(), false);
   transfer_release_callback_ = std::move(release_callback);
   transfer_resource_ = resource;
   SetTextureSize(texture_size_in_dip);
@@ -958,8 +956,7 @@
     // should be able to release the texture resource.
     mirror->dest()->SetTransferableResource(
         transfer_resource_,
-        viz::SingleReleaseCallback::Create(base::BindOnce(
-            [](const gpu::SyncToken& sync_token, bool is_lost) {})),
+        base::BindOnce([](const gpu::SyncToken& sync_token, bool is_lost) {}),
         frame_size_in_dip_);
   }
 }
@@ -1068,8 +1065,7 @@
 
   transfer_resource_ = viz::TransferableResource();
   if (transfer_release_callback_) {
-    transfer_release_callback_->Run(gpu::SyncToken(), false);
-    transfer_release_callback_.reset();
+    std::move(transfer_release_callback_).Run(gpu::SyncToken(), false);
   }
   RecomputeDrawsContentAndUVRect();
 
@@ -1342,7 +1338,7 @@
 bool Layer::PrepareTransferableResource(
     cc::SharedBitmapIdRegistrar* bitmap_registar,
     viz::TransferableResource* resource,
-    std::unique_ptr<viz::SingleReleaseCallback>* release_callback) {
+    viz::ReleaseCallback* release_callback) {
   if (!transfer_release_callback_)
     return false;
   *resource = transfer_resource_;
diff --git a/ui/compositor/layer.h b/ui/compositor/layer.h
index ead7a30..78a5a4b 100644
--- a/ui/compositor/layer.h
+++ b/ui/compositor/layer.h
@@ -356,10 +356,9 @@
 
   // Set new TransferableResource for this layer. This method only supports
   // a gpu-backed |resource|.
-  void SetTransferableResource(
-      const viz::TransferableResource& resource,
-      std::unique_ptr<viz::SingleReleaseCallback> release_callback,
-      gfx::Size texture_size_in_dip);
+  void SetTransferableResource(const viz::TransferableResource& resource,
+                               viz::ReleaseCallback release_callback,
+                               gfx::Size texture_size_in_dip);
   void SetTextureSize(gfx::Size texture_size_in_dip);
   void SetTextureFlipped(bool flipped);
   bool TextureFlipped() const;
@@ -470,7 +469,7 @@
   bool PrepareTransferableResource(
       cc::SharedBitmapIdRegistrar* bitmap_registar,
       viz::TransferableResource* resource,
-      std::unique_ptr<viz::SingleReleaseCallback>* release_callback) override;
+      viz::ReleaseCallback* release_callback) override;
 
   float device_scale_factor() const { return device_scale_factor_; }
 
@@ -736,7 +735,7 @@
 
   // The callback to release the mailbox. This is only set after
   // SetTransferableResource() is called, before we give it to the TextureLayer.
-  std::unique_ptr<viz::SingleReleaseCallback> transfer_release_callback_;
+  viz::ReleaseCallback transfer_release_callback_;
 
   // The size of the frame or texture in DIP, set when SetShowDelegatedContent
   // or SetTransferableResource() was called.
diff --git a/ui/compositor/layer_unittest.cc b/ui/compositor/layer_unittest.cc
index fb1e5fd3..c6357a1 100644
--- a/ui/compositor/layer_unittest.cc
+++ b/ui/compositor/layer_unittest.cc
@@ -567,11 +567,9 @@
   auto resource = viz::TransferableResource::MakeGL(
       gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, gpu::SyncToken(),
       size, false /* is_overlay_candidate */);
-  layer->SetTransferableResource(
-      resource,
-      viz::SingleReleaseCallback::Create(
-          base::BindOnce(ReturnMailbox, &callback_run)),
-      gfx::Size(10, 10));
+  layer->SetTransferableResource(resource,
+                                 base::BindOnce(ReturnMailbox, &callback_run),
+                                 gfx::Size(10, 10));
   EXPECT_FALSE(callback_run);
   layer.reset();
   EXPECT_TRUE(callback_run);
@@ -1050,8 +1048,7 @@
       gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, gpu::SyncToken(),
       size, false /* is_overlay_candidate */);
   l1->SetTransferableResource(resource,
-                              viz::SingleReleaseCallback::Create(base::BindOnce(
-                                  ReturnMailbox, &callback1_run)),
+                              base::BindOnce(ReturnMailbox, &callback1_run),
                               gfx::Size(10, 10));
 
   EXPECT_NE(before_layer, l1->cc_layer_for_testing());
@@ -1074,8 +1071,7 @@
       gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, gpu::SyncToken(),
       size, false /* is_overlay_candidate */);
   l1->SetTransferableResource(resource,
-                              viz::SingleReleaseCallback::Create(base::BindOnce(
-                                  ReturnMailbox, &callback2_run)),
+                              base::BindOnce(ReturnMailbox, &callback2_run),
                               gfx::Size(10, 10));
   EXPECT_TRUE(callback1_run);
   EXPECT_FALSE(callback2_run);
@@ -1100,8 +1096,7 @@
       gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, gpu::SyncToken(),
       size, false /* is_overlay_candidate */);
   l1->SetTransferableResource(resource,
-                              viz::SingleReleaseCallback::Create(base::BindOnce(
-                                  ReturnMailbox, &callback3_run)),
+                              base::BindOnce(ReturnMailbox, &callback3_run),
                               gfx::Size(10, 10));
 
   EXPECT_NE(before_layer, l1->cc_layer_for_testing());
@@ -1423,9 +1418,8 @@
   auto resource = viz::TransferableResource::MakeGL(
       gpu::Mailbox::Generate(), GL_LINEAR, GL_TEXTURE_2D, gpu::SyncToken(),
       size, false /* is_overlay_candidate */);
-  root->SetTransferableResource(
-      resource, viz::SingleReleaseCallback::Create(std::move(callback)),
-      gfx::Size(10, 10));
+  root->SetTransferableResource(resource, std::move(callback),
+                                gfx::Size(10, 10));
   compositor()->SetRootLayer(root.get());
 
   root->SetBounds(gfx::Rect(0, 0, 10, 10));
@@ -2326,9 +2320,7 @@
   bool release_callback_run = false;
 
   layer->SetTransferableResource(
-      resource,
-      viz::SingleReleaseCallback::Create(
-          base::BindOnce(ReturnMailbox, &release_callback_run)),
+      resource, base::BindOnce(ReturnMailbox, &release_callback_run),
       gfx::Size(10, 10));
   EXPECT_FALSE(release_callback_run);
   EXPECT_TRUE(layer->has_external_content());
@@ -2359,9 +2351,7 @@
   // Setting a transferable resource on the source layer should set it on the
   // mirror layers as well.
   layer->SetTransferableResource(
-      resource,
-      viz::SingleReleaseCallback::Create(
-          base::BindOnce(ReturnMailbox, &release_callback_run)),
+      resource, base::BindOnce(ReturnMailbox, &release_callback_run),
       gfx::Size(10, 10));
   EXPECT_FALSE(release_callback_run);
   EXPECT_TRUE(layer->has_external_content());
diff --git a/ui/ozone/platform/wayland/host/wayland_popup.cc b/ui/ozone/platform/wayland/host/wayland_popup.cc
index 0133a7f..4c26b05 100644
--- a/ui/ozone/platform/wayland/host/wayland_popup.cc
+++ b/ui/ozone/platform/wayland/host/wayland_popup.cc
@@ -182,33 +182,33 @@
   // if the primary display's scale is different from parents' scale (and this'
   // scale), fix bounds accordingly. Otherwise, popup is located using wrong
   // bounds in DIP.
-  auto primary_display_scale_factor = connection()
-                                          ->wayland_output_manager()
-                                          ->GetPrimaryOutput()
-                                          ->scale_factor();
+  if (auto* primary_output =
+          connection()->wayland_output_manager()->GetPrimaryOutput()) {
+    const auto primary_display_scale_factor = primary_output->scale_factor();
 
-  gfx::RectF float_rect = gfx::RectF(GetBounds());
-  gfx::Transform transform;
-  float scale = primary_display_scale_factor;
-  // The bounds are initially given in the scale of the primary display, so we
-  // have to upscale or downscale the rect to the scale of the target display,
-  // if that scale is different.
-  if (primary_display_scale_factor < buffer_scale()) {
-    scale = static_cast<float>(buffer_scale()) /
-            static_cast<float>(primary_display_scale_factor);
-    transform.Scale(scale, scale);
-    transform.TransformRect(&float_rect);
-  } else if (primary_display_scale_factor > buffer_scale()) {
-    scale = static_cast<float>(primary_display_scale_factor) /
-            static_cast<float>(buffer_scale());
-    transform.Scale(scale, scale);
-    transform.TransformRectReverse(&float_rect);
+    gfx::RectF float_rect = gfx::RectF(GetBounds());
+    gfx::Transform transform;
+    float scale = primary_display_scale_factor;
+    // The bounds are initially given in the scale of the primary display, so we
+    // have to upscale or downscale the rect to the scale of the target display,
+    // if that scale is different.
+    if (primary_display_scale_factor < buffer_scale()) {
+      scale = static_cast<float>(buffer_scale()) /
+              static_cast<float>(primary_display_scale_factor);
+      transform.Scale(scale, scale);
+      transform.TransformRect(&float_rect);
+    } else if (primary_display_scale_factor > buffer_scale()) {
+      scale = static_cast<float>(primary_display_scale_factor) /
+              static_cast<float>(buffer_scale());
+      transform.Scale(scale, scale);
+      transform.TransformRectReverse(&float_rect);
+    }
+
+    // delegate()->OnBoundsChanged cannot be called at this point. Thus, set
+    // pending internal bounds and call SetBounds later when CreateShellPopup is
+    // called.
+    pending_initial_bounds_px_ = gfx::ToEnclosingRect(float_rect);
   }
-
-  // delegate()->OnBoundsChanged cannot be called at this point. Thus, set
-  // pending internal bounds and call SetBounds later when CreateShellPopup is
-  // called.
-  pending_initial_bounds_px_ = gfx::ToEnclosingRect(float_rect);
   return true;
 }
 
diff --git a/ui/ozone/platform/wayland/host/wayland_window.cc b/ui/ozone/platform/wayland/host/wayland_window.cc
index 7d6862e4..9ab376b 100644
--- a/ui/ozone/platform/wayland/host/wayland_window.cc
+++ b/ui/ozone/platform/wayland/host/wayland_window.cc
@@ -84,7 +84,9 @@
   if (root_surface_)
     connection_->wayland_window_manager()->RemoveWindow(GetWidget());
 
-  if (parent_window_)
+  // This might have already been hidden and another window has been shown.
+  // Thus, the parent will have another child window. Do not reset it.
+  if (parent_window_ && parent_window_->child_window() == this)
     parent_window_->set_child_window(nullptr);
 }
 
@@ -556,7 +558,7 @@
   // Wayland does weird things for menus so instead of tracking outputs that
   // we entered or left, we take that from the parent window and ignore this
   // event.
-  if (AsWaylandPopup() || type() == ui::PlatformWindowType::kTooltip)
+  if (AsWaylandPopup())
     return;
 
   entered_outputs_.emplace_back(
diff --git a/ui/ozone/platform/wayland/host/wayland_window_factory.cc b/ui/ozone/platform/wayland/host/wayland_window_factory.cc
index d350c231..a49ecc2 100644
--- a/ui/ozone/platform/wayland/host/wayland_window_factory.cc
+++ b/ui/ozone/platform/wayland/host/wayland_window_factory.cc
@@ -43,6 +43,7 @@
       }
       window = std::make_unique<WaylandToplevelWindow>(delegate, connection);
       break;
+    case PlatformWindowType::kTooltip:
     case PlatformWindowType::kMenu:
       // Set the parent window in advance otherwise it is not possible to know
       // if the popup is able to find one and if WaylandWindow::Initialize()
@@ -61,11 +62,6 @@
         window = std::make_unique<WaylandToplevelWindow>(delegate, connection);
       }
       break;
-    case PlatformWindowType::kTooltip:
-      window = std::make_unique<WaylandAuxiliaryWindow>(
-          delegate, connection,
-          GetParentWindow(connection, properties.parent_widget));
-      break;
     case PlatformWindowType::kWindow:
     case PlatformWindowType::kBubble:
     case PlatformWindowType::kDrag:
diff --git a/ui/ozone/platform/wayland/host/wayland_window_unittest.cc b/ui/ozone/platform/wayland/host/wayland_window_unittest.cc
index 7f623b2..8f92cce7 100644
--- a/ui/ozone/platform/wayland/host/wayland_window_unittest.cc
+++ b/ui/ozone/platform/wayland/host/wayland_window_unittest.cc
@@ -1634,7 +1634,7 @@
   EXPECT_EQ(gfx::Rect(0, 0, 1600, 1200), window_->GetBounds());
 }
 
-TEST_P(WaylandWindowTest, AuxiliaryWindowUpdateBufferScale) {
+TEST_P(WaylandWindowTest, WaylandPopupBufferScale) {
   VerifyAndClearExpectations();
 
   // Creating an output with scale 1.
@@ -1645,50 +1645,58 @@
 
   // Creating an output with scale 2.
   wl::TestOutput* output2 = server_.CreateAndInitializeOutput();
-  output2->SetRect(gfx::Rect(0, 0, 1920, 1080));
+  output2->SetRect(gfx::Rect(1920, 0, 1920, 1080));
   output2->SetScale(2);
   Sync();
 
-  // Send the window to |output1|.
-  wl::MockSurface* surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
-  ASSERT_TRUE(surface);
-  wl_surface_send_enter(surface->resource(), output1->resource());
-  Sync();
+  std::vector<PlatformWindowType> window_types{PlatformWindowType::kMenu,
+                                               PlatformWindowType::kTooltip};
+  for (const auto& type : window_types) {
+    // Send the window to |output1|.
+    wl::MockSurface* surface = server_.GetObject<wl::MockSurface>(
+        window_->root_surface()->GetSurfaceId());
+    ASSERT_TRUE(surface);
+    wl_surface_send_enter(surface->resource(), output1->resource());
+    Sync();
 
-  // Creating a tooltip on |window_|.
-  window_->SetPointerFocus(true);
-  gfx::Rect subsurface_bounds(15, 15, 10, 10);
-  std::unique_ptr<WaylandWindow> auxiliary_window =
-      CreateWaylandWindowWithParams(PlatformWindowType::kTooltip,
-                                    gfx::kNullAcceleratedWidget,
-                                    subsurface_bounds, &delegate_);
-  EXPECT_TRUE(auxiliary_window);
+    // Creating a wayland_popup on |window_|.
+    window_->SetPointerFocus(true);
+    gfx::Rect wayland_popup_bounds(15, 15, 10, 10);
+    auto wayland_popup = CreateWaylandWindowWithParams(
+        type, window_->GetWidget(), wayland_popup_bounds, &delegate_);
+    EXPECT_TRUE(wayland_popup);
+    wayland_popup->Show(false);
 
-  auxiliary_window->Show(false);
+    // the wayland_popup window should inherit its buffer scale from the focused
+    // window.
+    EXPECT_EQ(1, window_->buffer_scale());
+    EXPECT_EQ(window_->buffer_scale(), wayland_popup->buffer_scale());
+    EXPECT_EQ(wayland_popup_bounds, wayland_popup->GetBounds());
+    wayland_popup->Hide();
 
-  // |auxiliary_window| should inherit its buffer scale from the focused window.
-  EXPECT_EQ(1, auxiliary_window->buffer_scale());
-  EXPECT_EQ(subsurface_bounds, auxiliary_window->GetBounds());
-  auxiliary_window->Hide();
+    // Send the window to |output2|.
+    wl_surface_send_enter(surface->resource(), output2->resource());
+    wl_surface_send_leave(surface->resource(), output1->resource());
+    Sync();
 
-  // Send the window to |output2|.
-  wl_surface_send_enter(surface->resource(), output2->resource());
-  wl_surface_send_leave(surface->resource(), output1->resource());
-  Sync();
+    EXPECT_EQ(2, window_->buffer_scale());
+    wayland_popup->Show(false);
 
-  EXPECT_EQ(2, window_->buffer_scale());
-  auxiliary_window->Show(false);
+    Sync();
 
-  // |auxiliary_window|'s scale and bounds must change whenever its parents
-  // scale is changed.
-  EXPECT_EQ(2, window_->buffer_scale());
-  EXPECT_EQ(2, auxiliary_window->buffer_scale());
-  EXPECT_EQ(gfx::ScaleToRoundedRect(subsurface_bounds, 2),
-            auxiliary_window->GetBounds());
+    // |wayland_popup|'s scale and bounds must change whenever its parents
+    // scale is changed.
+    EXPECT_EQ(window_->buffer_scale(), wayland_popup->buffer_scale());
+    EXPECT_EQ(gfx::ScaleToRoundedRect(wayland_popup_bounds,
+                                      wayland_popup->buffer_scale()),
+              wayland_popup->GetBounds());
 
-  auxiliary_window->Hide();
-  window_->SetPointerFocus(false);
+    wayland_popup->Hide();
+    window_->SetPointerFocus(false);
+
+    wl_surface_send_leave(surface->resource(), output2->resource());
+    Sync();
+  }
 }
 
 // Tests that WaylandPopup is able to translate provided bounds via
@@ -2186,39 +2194,32 @@
   Sync();
 }
 
-TEST_P(WaylandWindowTest, AuxiliaryWindowSimpleParent) {
+TEST_P(WaylandWindowTest, WaylandPopupSimpleParent) {
   VerifyAndClearExpectations();
 
-  // Auxiliary window must ignore the parent provided by aura and should always
+  // WaylandPopup must ignore the parent provided by aura and should always
   // use focused window instead.
-  gfx::Rect subsurface_bounds(gfx::Point(15, 15), gfx::Size(10, 10));
-  std::unique_ptr<WaylandWindow> auxiliary_window =
-      CreateWaylandWindowWithParams(PlatformWindowType::kTooltip,
-                                    gfx::kNullAcceleratedWidget,
-                                    subsurface_bounds, &delegate_);
-  EXPECT_TRUE(auxiliary_window);
+  gfx::Rect wayland_popup_bounds(gfx::Point(15, 15), gfx::Size(10, 10));
+  std::unique_ptr<WaylandWindow> wayland_popup = CreateWaylandWindowWithParams(
+      PlatformWindowType::kTooltip, gfx::kNullAcceleratedWidget,
+      wayland_popup_bounds, &delegate_);
+  EXPECT_TRUE(wayland_popup);
 
   window_->SetPointerFocus(true);
-  auxiliary_window->Show(false);
+  wayland_popup->Show(false);
 
   Sync();
 
-  auto* mock_surface_subsurface = server_.GetObject<wl::MockSurface>(
-      auxiliary_window->root_surface()->GetSurfaceId());
-  auto* test_subsurface = mock_surface_subsurface->sub_surface();
+  auto* mock_surface_popup = server_.GetObject<wl::MockSurface>(
+      wayland_popup->root_surface()->GetSurfaceId());
+  auto* mock_xdg_popup = mock_surface_popup->xdg_surface()->xdg_popup();
 
-  EXPECT_EQ(test_subsurface->position(), subsurface_bounds.origin());
-  EXPECT_FALSE(test_subsurface->sync());
-  EXPECT_EQ(mock_surface_subsurface->opaque_region(),
-            gfx::Rect(subsurface_bounds.size()));
+  EXPECT_EQ(mock_xdg_popup->anchor_rect().origin(),
+            wayland_popup_bounds.origin());
+  EXPECT_EQ(mock_surface_popup->opaque_region(),
+            gfx::Rect(wayland_popup_bounds.size()));
 
-  auto* parent_resource =
-      server_
-          .GetObject<wl::MockSurface>(window_->root_surface()->GetSurfaceId())
-          ->resource();
-  EXPECT_EQ(parent_resource, test_subsurface->parent_resource());
-
-  auxiliary_window->Hide();
+  wayland_popup->Hide();
   window_->SetPointerFocus(false);
 }
 
@@ -2371,11 +2372,11 @@
   nested_menu_window->SetPointerFocus(false);
 }
 
-TEST_P(WaylandWindowTest, AuxiliaryWindowNestedParent) {
+TEST_P(WaylandWindowTest, WaylandPopupNestedParent) {
   VerifyAndClearExpectations();
 
   gfx::Rect menu_window_bounds(gfx::Point(10, 10), gfx::Size(100, 100));
-  std::unique_ptr<WaylandWindow> menu_window = CreateWaylandWindowWithParams(
+  auto menu_window = CreateWaylandWindowWithParams(
       PlatformWindowType::kMenu, window_->GetWidget(), menu_window_bounds,
       &delegate_);
   EXPECT_TRUE(menu_window);
@@ -2383,30 +2384,36 @@
   VerifyAndClearExpectations();
   menu_window->SetPointerFocus(true);
 
-  gfx::Rect subsurface_bounds(gfx::Point(15, 15), gfx::Size(10, 10));
-  std::unique_ptr<WaylandWindow> auxiliary_window =
-      CreateWaylandWindowWithParams(PlatformWindowType::kTooltip,
-                                    menu_window->GetWidget(), subsurface_bounds,
-                                    &delegate_);
-  EXPECT_TRUE(auxiliary_window);
+  std::vector<PlatformWindowType> window_types{PlatformWindowType::kMenu,
+                                               PlatformWindowType::kTooltip};
+  for (const auto& type : window_types) {
+    gfx::Rect nested_wayland_popup_bounds(gfx::Point(15, 15),
+                                          gfx::Size(10, 10));
+    auto nested_wayland_popup =
+        CreateWaylandWindowWithParams(type, menu_window->GetWidget(),
+                                      nested_wayland_popup_bounds, &delegate_);
+    EXPECT_TRUE(nested_wayland_popup);
 
-  VerifyAndClearExpectations();
+    VerifyAndClearExpectations();
 
-  auxiliary_window->Show(false);
+    nested_wayland_popup->Show(false);
 
-  Sync();
+    Sync();
 
-  auto* mock_surface_subsurface = server_.GetObject<wl::MockSurface>(
-      auxiliary_window->root_surface()->GetSurfaceId());
-  auto* test_subsurface = mock_surface_subsurface->sub_surface();
+    auto* mock_surface_nested = server_.GetObject<wl::MockSurface>(
+        nested_wayland_popup->root_surface()->GetSurfaceId());
+    auto* mock_xdg_popup_nested =
+        mock_surface_nested->xdg_surface()->xdg_popup();
 
-  auto new_origin = subsurface_bounds.origin() -
-                    menu_window_bounds.origin().OffsetFromOrigin();
-  EXPECT_EQ(test_subsurface->position(), new_origin);
-  EXPECT_EQ(mock_surface_subsurface->opaque_region(),
-            gfx::Rect(subsurface_bounds.size()));
+    auto new_origin = nested_wayland_popup_bounds.origin() -
+                      menu_window_bounds.origin().OffsetFromOrigin();
+    EXPECT_EQ(mock_xdg_popup_nested->anchor_rect().origin(), new_origin);
+    EXPECT_EQ(mock_surface_nested->opaque_region(),
+              gfx::Rect(nested_wayland_popup_bounds.size()));
 
-  menu_window->SetPointerFocus(false);
+    menu_window->SetPointerFocus(false);
+    nested_wayland_popup->Hide();
+  }
 }
 
 TEST_P(WaylandWindowTest, OnSizeConstraintsChanged) {
diff --git a/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc b/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc
index 77e58e1..8db2b3a9 100644
--- a/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc
+++ b/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc
@@ -926,12 +926,7 @@
                                               : gfx::kNullAcceleratedWidget);
     auto widget = temp_window->GetWidget();
 
-    // Subsurface doesn't have an interface for sending configure events.
-    // Thus, WaylandAuxiliaryWindow notifies the manager that the window is
-    // activated upon creation of the subsurface. Skip calling Show() and call
-    // later then.
-    if (type != PlatformWindowType::kTooltip)
-      temp_window->Show(false);
+    temp_window->Show(false);
 
     Sync();
 
@@ -958,15 +953,8 @@
         widget, kDmabufBufferId, window_->GetBounds(), window_->GetBounds());
     Sync();
 
-    if (type != PlatformWindowType::kTooltip) {
-      DCHECK(mock_surface->xdg_surface());
-      ActivateSurface(mock_surface->xdg_surface());
-    } else {
-      // WaylandAuxiliaryWindow uses the focused window as a parent.
-      window_->SetPointerFocus(true);
-      // See the comment near Show() call above.
-      temp_window->Show(false);
-    }
+    DCHECK(mock_surface->xdg_surface());
+    ActivateSurface(mock_surface->xdg_surface());
 
     EXPECT_CALL(*mock_surface, Attach(_, _, _)).Times(1);
     EXPECT_CALL(*mock_surface, Frame(_)).Times(1);
diff --git a/ui/strings/translations/ui_strings_fa.xtb b/ui/strings/translations/ui_strings_fa.xtb
index 277c08f..65aef80 100644
--- a/ui/strings/translations/ui_strings_fa.xtb
+++ b/ui/strings/translations/ui_strings_fa.xtb
@@ -146,7 +146,7 @@
 <translation id="5463830097259460683">اموجی و نمادها</translation>
 <translation id="5476505524087279545">برداشتن علامت</translation>
 <translation id="547979256943495781">قفسه در سمت چپ است</translation>
-<translation id="5528053674512161860">‏صفحه بار نشد چون مدول رابط کاربری برنامه‌نویس (dev_ui) نصب نشده است</translation>
+<translation id="5528053674512161860">‏صفحه بار نشد چون مدول میانای کاربر برنامه‌نویس (dev_ui) نصب نشده است</translation>
 <translation id="5574202486608032840">سیستم <ph name="IDS_SHORT_PRODUCT_OS_NAME" /></translation>
 <translation id="5583640892426849032">Backspace</translation>
 <translation id="5613020302032141669">پیکان چپ</translation>
diff --git a/ui/views/test/test_views_delegate_aura.cc b/ui/views/test/test_views_delegate_aura.cc
index 2376488f6..e5c04e6 100644
--- a/ui/views/test/test_views_delegate_aura.cc
+++ b/ui/views/test/test_views_delegate_aura.cc
@@ -26,7 +26,7 @@
 void TestViewsDelegate::OnBeforeWidgetInit(
     Widget::InitParams* params,
     internal::NativeWidgetDelegate* delegate) {
-#if defined(OS_CHROMEOS)
+#if defined(OS_CHROMEOS) && !BUILDFLAG(IS_CHROMEOS_LACROS)
   if (!params->parent && !params->context)
     params->context = context_;
 #endif
diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc
index 3f46795d..8f7d56c3 100644
--- a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc
+++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc
@@ -92,6 +92,7 @@
   // This function creates a widget with the bounds passed in which eventually
   // becomes the parent of the child window passed in.
   static aura::Window* CreateParentWindow(aura::Window* child_window,
+                                          aura::Window* context,
                                           const gfx::Rect& bounds,
                                           bool full_screen,
                                           bool is_menu,
@@ -120,6 +121,10 @@
                                   ? Widget::InitParams::Activatable::kYes
                                   : Widget::InitParams::Activatable::kNo;
     init_params.z_order = root_z_order;
+    // Also provide the context, which Ozone (in particular - Wayland) will use
+    // to parent this newly created toplevel native widget to. Please refer to
+    // https://crrev.com/c/2831291 for more details.
+    init_params.context = context;
 
     // This widget instance will get deleted when the window is
     // destroyed.
@@ -215,7 +220,8 @@
         root_z_order = native_widget->GetZOrderLevel();
 
       return DesktopNativeWidgetTopLevelHandler::CreateParentWindow(
-          window, bounds, is_fullscreen, is_menu, root_z_order);
+          window, root_window_ /* context */, bounds, is_fullscreen, is_menu,
+          root_z_order);
     }
     return root_window_;
   }
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
index 001471fe..4f9172e 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
@@ -124,13 +124,17 @@
     properties.parent_widget = params.parent->GetHost()->GetAcceleratedWidget();
 
 #if defined(USE_OZONE)
-  if (properties.type == ui::PlatformWindowType::kTooltip &&
-      features::IsUsingOzonePlatform() &&
+  if (features::IsUsingOzonePlatform() &&
       ui::OzonePlatform::GetInstance()
           ->GetPlatformProperties()
           .set_parent_for_non_top_level_windows) {
-    properties.parent_widget =
-        params.context->GetHost()->GetAcceleratedWidget();
+    // If the parent has not been provided, but there is context, use the
+    // context's widget as the parent of a new platform window.
+    if (params.context && params.context->GetHost() &&
+        !properties.parent_widget) {
+      properties.parent_widget =
+          params.context->GetHost()->GetAcceleratedWidget();
+    }
   }
 #endif
 
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/metrics/UmaUtils.java b/weblayer/browser/java/org/chromium/weblayer_private/metrics/UmaUtils.java
index f093df92..2fc13ae 100644
--- a/weblayer/browser/java/org/chromium/weblayer_private/metrics/UmaUtils.java
+++ b/weblayer/browser/java/org/chromium/weblayer_private/metrics/UmaUtils.java
@@ -8,7 +8,6 @@
 
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
-import org.chromium.base.annotations.MainDex;
 
 /**
  * Utilities to support startup metrics
@@ -20,7 +19,6 @@
     /**
      * Record the time in the application lifecycle at which WebLayer code first runs.
      */
-    @MainDex
     public static void recordMainEntryPointTime() {
         // We can't simply pass this down through a JNI call, since the JNI for weblayer
         // isn't initialized until we start the native content browser component, and we